云网牛站
所在位置:首页 > Linux常用命令大全 > 更多实用命令 > docker命令

docker命令

docker命令参数详解

-D 默认false 允许调试模式(debugmode)  
-H 默认是unix:///var/run/docker.sock tcp://[host[:port]]来绑定或者unix://[/path/to/socket]来使用(二进制文件的时候),当主机ip host=[0.0.0.0],(端口)port=[4243] 或者 path=[/var/run/docker.sock]是缺省值,做为默认值来使用  
-api-enable-cors 默认flase 允许CORS header远程api  
-b 默认是空,附加在已存在的网桥上,如果是用'none'参数,就禁用了容器的网络  
-bip 默认是空,使用提供的CIDR(ClasslessInter-Domain Routing-无类型域间选路)标记地址动态创建网桥(dcoker0),和-b参数冲突  
-d 默认false 允许进程模式(daemonmode)  
-dns 默认是空,使docker使用指定的DNS服务器  
-g 默认是"/var/lib/docker":作为docker使用的根路径  
-icc 默认true,允许inter-container来通信  
-ip 默认"0.0.0.0":绑定容器端口的默认Ip地址  
-iptables 默认true 禁用docker添加iptables规则  
-mtu 默认1500 : 设置容器网络传输的最大单元(mtu)  
-p 默认是/var/run/docker.pid进程pid使用的文件路径  
-r 默认是true 重启之前运行的容器  
-s 默认是空 ,这个是docker运行是使用一个指定的存储驱动器  
-v 默认false 打印版本信息和退出

docker build [OPTIONS] PATH | URL | -

参数说明

–build-arg=[] :设置镜像创建时的变量;
–cpu-shares :设置 cpu 使用权重;
–cpu-period :限制 CPU CFS周期;
–cpu-quota :限制 CPU CFS配额;
–cpuset-cpus :指定使用的CPU id;
–cpuset-mems :指定使用的内存 id;
–disable-content-trust :忽略校验,默认开启;
-f :指定要使用的Dockerfile路径;
–force-rm :设置镜像过程中删除中间容器;
–isolation :使用容器隔离技术;
–label=[] :设置镜像使用的元数据;
-m :设置内存最大值;
–memory-swap :设置Swap的最大值为内存+swap,”-1″表示不限swap;
–no-cache :创建镜像的过程不使用缓存;
–pull :尝试去更新镜像的新版本;
-q :安静模式,成功后只输出镜像ID;
–rm :设置镜像成功后删除中间容器;
–shm-size :设置/dev/shm的大小,默认值是64M;
–ulimit :Ulimit配置。

docker commit :从容器创建一个新的镜像。

参数说明

-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

docker events : 从服务器获取实时事件

参数说明

-f :根据条件过滤事件;
--since :从指定的时间戳后显示所有事件;
--until :流水时间显示到指定的时间为止;

docker exec :在运行的容器中执行命令

参数说明

-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端

docker export :将文件系统作为一个tar归档文件导出到STDOUT。

参数说明

-o :将输入内容写到文件。

docker history : 查看指定镜像的创建历史。

参数说明

-H :以可读的格式打印镜像大小和日期,默认为true;
--no-trunc :显示完整的提交记录;
-q :仅列出提交记录ID。

docker images : 列出本地镜像。

参数说明

-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
--digests :显示镜像的摘要信息;
-f :显示满足条件的镜像;
--format :指定返回值的模板文件;
--no-trunc :显示完整的镜像信息;
-q :只显示镜像ID。

docker import : 从归档文件中创建镜像。

参数说明

-c :应用docker 指令创建镜像;
-m :提交时的说明文字;

docker inspect : 获取容器/镜像的元数据。

参数说明

-f :指定返回值的模板文件。
-s :显示总的文件大小。
--type :为指定类型返回JSON。

docker kill :杀掉一个运行中的容器。

参数说明

-s :向容器发送一个信号

docker login : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

参数说明

-u :登陆的用户名
-p :登陆的密码

docker logs : 获取容器的日志

参数说明

-f : 跟踪日志输出
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志

docker ps : 列出容器

参数说明

-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。

docker pull : 从镜像仓库中拉取或者更新指定镜像

参数说明

-a :拉取所有 tagged 镜像

docker rm :删除一个或多少容器

参数说明

-f :通过SIGKILL信号强制删除一个运行中的容器
-l :移除容器间的网络连接,而非容器本身
-v :-v 删除与容器关联的卷

docker rmi : 删除本地一个或多少镜像。

参数说明

-f :强制删除;
--no-prune :不移除该镜像的过程镜像,默认移除;
docker run :创建一个新的容器并运行一个命令
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]  

  -a, --attach=[]            登录容器(以docker run -d启动的容器)  
-c, --cpu-shares=0         设置容器CPU权重,在CPU共享场景使用  
--cap-add=[]               添加权限  
--cap-drop=[]              删除权限  
--cidfile=""               运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法  
--cpuset=""                设置容器可以使用哪些CPU,此参数可以用来容器独占CPU  
-d, --detach=false         指定容器运行于前台还是后台   
--device=[]                添加主机设备给容器,相当于设备直通  
--dns=[]                   指定容器的dns服务器  
--dns-search=[]            指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件  
-e, --env=[]               指定环境变量,容器中可以使用该环境变量  
--entrypoint=""            覆盖image的入口点  
--env-file=[]              指定环境变量文件,文件格式为每行一个环境变量  
--expose=[]                指定容器暴露的端口,即修改镜像的暴露端口  
-h, --hostname=""          指定容器的主机名  
-i, --interactive=false    打开STDIN,用于控制台交互  
--link=[]                  指定容器间的关联,使用其他容器的IP、env等信息  
--lxc-conf=[]              指定容器的配置文件,只有在指定--exec-driver=lxc时使用  
-m, --memory=""            指定容器的内存上限  
--name=""                  指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字  
--net="bridge"             容器网络设置,待详述  
-P, --publish-all=false    指定容器暴露的端口,待详述  
-p, --publish=[]           指定容器暴露的端口,待详述  
--privileged=false         指定容器是否为特权容器,特权容器拥有所有的capabilities  
--restart=""               指定容器停止后的重启策略,待详述  
--rm=false                 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)  
--sig-proxy=true           设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理  
-t, --tty=false            分配tty设备,该可以支持终端登录  
-u, --user=""              指定容器的用户  
-v, --volume=[]            给容器挂载存储卷,挂载到容器的某个目录  
--volumes-from=[]          给容器挂载其他容器上的卷,挂载到容器的某个目录  
-w, --workdir=""           指定容器的工作目录

 
docker search : 从Docker Hub查找镜像

参数说明

--automated :只列出 automated build类型的镜像;
--no-trunc :显示完整的镜像描述;
-s :列出收藏数不小于指定值的镜像。

实例

# 使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
# docker run --name mynginx -d nginx:latest

# 使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
# docker run -P -d nginx:latest

# 使用镜像nginx:latest以后台模式启动一个容器,将容器的80端口映射到主机的80端口,主机的目录/data映射到容器的/data。
# docker run -p 80:80 -v /data:/data -d nginx:latest

# 使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
# docker run -it nginx:latest /bin/bash

# 连接到容器查看访问信息。
# docker attach mynginx

#查看所有容器的状态
# docker ps -a
CONTAINER ID        IMAGE           COMMAND           CREATED             STATUS                  PORTS    NAMES
d4a75f165ce6        centos          "/bin/bash"       2 minutes ago       Exited (0) 23 seconds ago        cranky_mahavira
可见此时容器的状态是Exited,那么,如何再次运行这个容器呢?可以使用docker start命令

运行容器
# docker start cranky_mahavira

#使用当前目录的Dockerfile创建镜像。
# docker build -t test/ubuntu:v1  

# 生成新的镜像
# docker commit centos_v1 centos:v1
68ad49c999496cff25fdda58f0521530a143d3884e61bce7ada09bdc22337638

# 将新的镜像传到hub,其中v1是tag,可不写,默认是latest
# docker push victor/centos:v1

# 容器mysql中/usr/local/bin/存在docker-entrypoint.sh文件,可如下方式copy到宿主机
#  docker cp mysql:/usr/local/bin/docker-entrypoint.sh /root

#修改完毕后,将该文件重新copy回容器
# docker cp /root/docker-entrypoint.sh mysql:/usr/local/bin/  

# 使用docker镜像nginx:latest创建一个容器,并将容器命名为mynginx,同run
# docker create  --name mynginx nginx:latest  

# 查看容器内发生改变的文件,以我的mysql容器为例
# docker diff mysqldb
C /root
A /root/.bash_history
A /test1.txt
A /test.tar
A /test.txt
C /run
C /run/mysqld
A /run/mysqld/mysqld.pid
A /run/mysqld/mysqld.sock
不难看出,C对应的均是目录,A对应的均是文件

# 实时输出Docker服务器端的事件,包括容器的创建,启动,关闭等
# docker events -f "image"="mysql:5.6" --since="1467302400"  
2017-07-11T00:38:53.975174837+08:00 container start 96f7f14e99ab9d2f60943a50be23035eda1623782cc5f930411bbea407a2bb10 (image=mysql:5.6, name=mymysql)
2017-07-11T00:51:17.022572452+08:00 container kill 96f7f14e99ab9d2f60943a50be23035eda1623782cc5f930411bbea407a2bb10 (image=mysql:5.6, name=mymysql, signal=9)
......

# docker exec -d cc touch 123   # 后台型任务

# 后台型任务
[root@localhost ~]# docker exec -i -t cc /bin/bash
root@1e5bb46d801b:/# ls
123  bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

# 将容器的文件系统打包成tar文件

# docker export -o mysqldb1.tar mysqldb
# docker export mysqldb > mysqldb.tar

#显示镜像制作的过程,相当于dockfile
# docker history test/centos:lastest
IMAGE             CREATED           CREATED BY                                      SIZE      COMMENT
4e3b13c8a266      3 months ago      /bin/sh -c #(nop) CMD ["/bin/bash"]             0 B                 
         3 months ago      /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/   1.863 kB            
         3 months ago      /bin/sh -c set -xe   && echo '#!/bin/sh' > /u   701 B               
         3 months ago      /bin/sh -c #(nop) ADD file:43cb048516c6b80f22   136.3 MB

# 查看本地镜像列表。
# docker images

# 根据tar文件的内容新建一个镜像,与之前的export命令相对应
[root@localhost ~]# docker import mysqldb.tar mysql:v1

# 查看docker的系统信息
[root@localhost ~]# docker info
Containers: 3    --当前有3个容器
Images: 298      
Storage Driver: devicemapper
......

# 获取镜像mysql的信息。
# docker inspect mysql:5.6
[
    {
        "Id": "sha256:2c0964ec182ae9a045f866bbc2553087f6e42bfc16074a74fb820af235f070ec",
        "RepoTags": [
            "mysql:5.6"
        ],
        "RepoDigests": [],
        "Parent": "",
        "Comment": "",
......

# 登录到自己的Docker Hub的账号
[root@localhost ~]# docker login
Username: ivictor
Password:
Email: xxxx@foxmail.com
WARNING: login credentials saved in /root/.docker/config.json
Login Succeeded

# 输出容器端口与宿主机端口的映射情况
# docker port blog
80/tcp -> 0.0.0.0:80

# 列出所有在运行的容器信息。
# docker ps
CONTAINER ID   IMAGE          COMMAND                ...  PORTS                    NAMES
09b93464c2f7   nginx:latest   "nginx -g 'daemon off" ...  80/tcp, 443/tcp          mytest
96f7f14e99ab   mysql:5.6      "docker-entrypoint.sh" ...  0.0.0.0:3306->3306/tcp   mymysql

# 列出最近创建的5个容器信息。
# docker ps -n 2
CONTAINER ID        IMAGE               COMMAND                   CREATED           
09b93464c2f7        nginx:latest        "nginx -g 'daemon off"    2 days ago   ...     
b8573233d675        nginx:latest        "/bin/bash"               2 days ago   ...     

# 拉取nginx镜像
# docker pull nginx

# 强制删除容器db01、db02
# docker rm -f db01、db02
# 移除容器nginx01对容器db01的连接,连接名db
# docker rm -l db  
# 删除容器nginx01,并删除容器挂载的数据卷
# docker rm -v nginx01

# 强制删除本地镜像test/centos:v3。
# docker rmi -f test/centos:v3

# 将镜像打包,与上面的load命令相对应
# docker save -o nginx.tar nginx

# docker search nginx    #查找
# docker start nginx     #启动
# docker restart nginx   #重新启动
# docker stop nginx      #停止
# docker stats nginx     #状态

#镜像重命名

# docker tag centos test/centos:v3

相关命令