在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
简介Docker的命令分为使用命令和管理命令,而本文对Docker的使用命令和管理命令进行了汇总和样例提示,以便于他人学习和本人回顾使用。 Docker不仅提供了在各个环节下使用的命令,还提供了DockerAPI供我们使用Http来和Docker进行交互,从而开发我们自己的Docker。 由于命令太多,下面给出一个大致的清单供大家对所有命令有一个初步了解,然后就是哪里不会点哪里。 管理命令: container 管理容器 image 管理镜像 network 管理网络 node 管理Swarm节点 plugin 管理插件 secret 管理Docker secrets service 管理服务 stack 管理Docker stacks swarm 管理Swarm集群 system 查看系统信息 volume 管理卷 如:docker container ls 显示所有容器 普通命令: // 开发应该熟练掌握的: images 查看镜像列表 rmi 删除镜像 save 将指定镜像保存成 tar 归档文件 load 从存档或者STDIN加载镜像 build 从一个DockerFile构建镜像 commit 从容器创建一个镜像 create 创建一个容器 run 创建一个新的容器并运行一个命令 rename 重命名容器 start 启动容器 stop 停止容器 restart 重启容器 rm 删除容器 logs 获取一个容器的日志 exec 在正在运行的容器中运行命令 cp 从容器和主机文件系统之间拷贝文件 ps 查看容器列表 // 运维应该熟练掌握的: login 登陆docker镜像仓库 logout 退出docker镜像仓库 search 从Docker Hub搜索镜像 pull 从镜像仓库拉取镜像 push 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库 tag 标记本地镜像,将其归入某一仓库 export 将容器的文件系统导出为tar存档 import 从归档文件中创建镜像 info 显示系统范围的信息 version 显示Docker的版本信息 stats 显示(实时)容器资源使用情况的统计信息 inspect 显示Docker对象的低级信息(查看对象详情) diff 显示容器文件系统上的更改(查看容器变化) events 显示从服务器获取实时事件(可查看docker的改动) port 显示端口映射或容器的特定映射列表(端口查看) top 显示一个容器中运行的进程(查看进程) history 显示镜像的历史记录 attach 进入一个运行的容器 pause 暂停一个或多个容器中的所有进程 unpause 恢复容器中所有的进程 kill kill运行中的容器 wait 阻塞直到容器停止,然后打印退出代码 update 更新容器配置 镜像仓库logindockerlogin : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub docker logout : 登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub 语法: docker login/logout (-$) [SERVER]
实例: 登陆到Docker Hub docker login -u 用户名 -p 密码 登出Docker Hub docker logout pulldockerpull : 从镜像仓库中拉取或者更新指定镜像 语法: docker pull (-$) NAME[:TAG|@DIGEST]
实例: 从Docker Hub下载java最新版镜像。 docker pull java 从Docker Hub下载REPOSITORY为java的所有镜像。 docker pull -a java pushdocker push : 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库 语法: docker push (-$) NAME[:TAG]
实例: 上传本地镜像myapache:v1到镜像仓库中 docker push myapache:v1 推送镜像库到私有源 docker push 192.168.0.100:5000/ubuntu searchdocker search : 从Docker Hub查找镜像 语法: docker search (-$) TERM
实例: 从Docker Hub查找所有镜像名包含java,并且收藏数大于10的镜像 docker search -s 10 java runoob@runoob:~$ docker search -s 10 java NAME DESCRIPTION STARS OFFICIAL AUTOMATED java Java is a concurrent, class-based... 1037 [OK] anapsix/alpine-java Oracle Java 8 (and 7) with GLIBC ... 115 [OK] develar/java 46 [OK] isuper/java-oracle This repository contains all java... 38 [OK] lwieske/java-8 Oracle Java 8 Container - Full + ... 27 [OK] nimmis/java-centos This is docker images of CentOS 7... 13 [OK] 本地镜像管理imagesdocker images : 列出本地镜像。 语法: docker images (-$) [REPOSITORY[:TAG]]
实例: 查询出无用的镜象 docker images -f dangling=true 列出本地镜像中REPOSITORY为alpine的镜像列表。 docker images alpine [root@master ~]# docker images alpine REPOSITORY TAG IMAGE ID CREATED SIZE alpine 3.9 cdf98d1859c1 3 months ago 5.53MB alpine latest cdf98d1859c1 3 months ago 5.53MB rmidocker rmi : 删除本地一个或多少镜像。 语法: docker rmi (-$)
实例: 删除所有镜像 docker rmi $(docker images -q) 强制删除镜像名称中包含"doss-api"的镜像 docker rmi --force $(docker images | grep doss-api | awk '{print $3}') 批量删除无用镜象(三种方式都可以,想强制删除可在rmi后加-f) docker rmi $(docker images | grep "^" | awk "{print $3}") docker images | grep none | awk '{print $3}' | xargs docker rmi docker rmi $( docker images -f dangling=true) tagdocker tag : 标记本地镜像,将其归入某一仓库。 语法: docker tag (-$) IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG] 实例: 将镜像ubuntu:15.10标记为 runoob/ubuntu:v3 镜像。 docker tag ubuntu:15.10 runoob/ubuntu:v3 root@runoob:~# docker tag ubuntu:15.10 runoob/ubuntu:v3 root@runoob:~# docker images runoob/ubuntu:v3 REPOSITORY TAG IMAGE ID CREATED SIZE runoob/ubuntu v3 4e3b13c8a266 3 months ago 136.3 MB builddocker build 命令用于使用 Dockerfile 创建镜像。 语法: docker build (-$) PATH | URL | -
实例: 使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1。 docker build -t runoob/ubuntu:v1 . 使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像。 docker build github.com/creack/docker-firefox 也可以通过 -f Dockerfile 文件的位置: docker build -f /path/to/a/Dockerfile . 在 Docker 守护进程执行 Dockerfile 中的指令前,首先会对 Dockerfile 进行语法检查,有语法错误时会返回: docker build -t test/myapp . Sending build context to Docker daemon 2.048 kB Error response from daemon: Unknown instruction: RUNCMD historydocker history : 查看指定镜像的创建历史。 语法: docker history (-$) IMAGE
savedocker save : 将指定镜像保存成 tar 归档文件。 语法: docker save (-$) IMAGE [IMAGE...]
实例: 导出镜像 docker save -o /root/mytomcat7.tar.gz docker.io/tomcat:7.0.77-jre7 或 docker save docker.io/tomcat:7.0.77-jre7 >/root/mytomcat7.tar.gz loaddocker load : 导入使用 docker save 命令导出的镜像。 语法: docker load (-$)
实例 导入镜像 docker load -i ubuntu.tar docker load < ubuntu.tar docker load < /root/mytomcat7.tar.gz importdocker import : 从归档文件中创建镜像。 语法: docker import (-$) file|URL|- [REPOSITORY[:TAG]]
实例 从镜像归档文件my_ubuntu_v3.tar创建镜像,命名为runoob/ubuntu:v4 runoob@runoob:~$ docker import my_ubuntu_v3.tar runoob/ubuntu:v4 sha256:63ce4a6d6bc3fabb95dbd6c561404a309b7bdfc4e21c1d59fe9fe4299cbfea39 runoob@runoob:~$ docker images runoob/ubuntu:v4 REPOSITORY TAG IMAGE ID CREATED SIZE runoob/ubuntu v4 63ce4a6d6bc3 20 seconds ago 142.1 MB 容器操作psdockerps : 列出容器 语法: docker ps (-$)
示例: docker ps --format "{{.ID}}: {{.Names}}: {{.Command}}" 常用监控命令: 查询最近5个容器 docker ps -a -n=5 监控容器数量 docker ps -a -q | wc -l 正在运行的容器的数量 docker ps -q | wc -l 非运行状态的容器的数量 docker ps -a | grep -v 'Up ' | grep -v'CONTAINER' | wc -l inspectdocker inspect : 获取容器/镜像的元数据。 语法: docker inspect (-$) NAME|ID [NAME|ID...]
实例: 查看容器重启次数 docker inspect -f "{{ .RestartCount }}" name 查看容器最后一次的启动时间 docker inspect -f "{{ .State.StartedAt }}" name 列出所有端口绑定 docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' $INSTANCE_ID 获取正在运行的容器mymysql的 IP runoob@runoob:~$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mymysql 172.17.0.3 注:更多示例可点击上方官网链接查看 topdocker top :查看容器中运行的进程信息,支持 ps 命令参数。 语法: docker top CONTAINER [ps OPTIONS] 容器运行时不一定有/bin/bash终端来交互执行top命令,而且容器还不一定有top命令,可以使用docker top来实现查看container中正在运行的进程。 实例: 查看容器mymysql的进程信息。 runoob@runoob:~/mysql$ docker top mymysql UID PID PPID C STIME TTY TIME CMD 999 40347 40331 18 00:58 ? 00:00:02 mysqld 查看所有运行容器的进程信息。
attachdocker attach :连接到正在运行中的容器,并将本地标准输入、输出和错误流附加到正在运行的容器中(个人理解,既实现链接后使用命令控制容器) 语法: docker attach (-$) CONTAINER
要attach上去的容器必须正在运行,可以同时连接上同一个container来共享屏幕(与screen命令的attach类似)。 官方文档中说attach后可以通过CTRL-C来detach,但实际上经过我的测试,如果container当前在运行bash,CTRL-C自然是当前行的输入,没有退出;如果container当前正在前台运行进程,如输出nginx的access.log日志,CTRL-C不仅会导致退出容器,而且还stop了。这不是我们想要的,detach的意思按理应该是脱离容器终端,但容器依然运行。好在attach是可以带上--sig-proxy=false来确保CTRL-D或CTRL-C不会关闭容器。 实例: 容器mynginx将访问日志指到标准输出,连接到容器查看访问信息。 runoob@runoob:~$ docker attach --sig-proxy=false mynginx 192.168.239.1 - - [10/Jul/2016:16:54:26 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-" 注:(使用exit退出后容器也跟着停止运行), 更多示例和详细讲解可点击上方官网链接或是用--help命令查看 eventsdocker events : 从服务器获取实时事件 语法: docker events (-$)
实例: 显示docker 2016年7月1日后的所有事件。 docker events --since="1467302400" runoob@runoob:~/mysql$ docker events --since="1467302400" 2016-07-08T19:44:54.501277677+08:00 network connect 66f958fd13dc4314ad20034e576d5c5eba72e0849dcc38ad9e8436314a4149d4 (container=b8573233d675705df8c89796a2c2687cd8e36e03646457a15fb51022db440e64, name=bridge, type=bridge) 2016-07-08T19:44:54.723876221+08:00 container start b8573233d675705df8c89796a2c2687cd8e36e03646457a15fb51022db440e64 (image=nginx:latest, name=elegant_albattani) 显示docker 镜像为mysql:5.6 2016年7月1日后的相关事件。 docker events -f "image"="mysql:5.6" --since="1467302400" runoob@runoob:~/mysql$ docker events -f "image"="mysql:5.6" --since="1467302400" 2016-07-11T00:38:53.975174837+08:00 container start 96f7f14e99ab9d2f60943a50be23035eda1623782cc5f930411bbea407a2bb10 (image=mysql:5.6, name=mymysql) 2016-07-11T00:51:17.022572452+08:00 container kill 96f7f14e99ab9d2f60943a50be23035eda1623782cc5f930411bbea407a2bb10 (image=mysql:5.6, name=mymysql, signal=9) 注:更多示例和详细讲解可点击上方官网链接或是用--help命令查看 logsdocker logs : 获取容器的日志 docker logs (-$) name
实例: 查看容器mynginx从2016年7月1日后的最新10条日志 docker logs --since="2016-07-01" --tail=10 mynginx 实时查看docker容器日志 docker logs -f -t --tail 行数 容器名 实时查看docker容器名为s12的最后10行日志 docker logs -f -t --tail 10 s12 注:更多示例和详细讲解可点击上方官网链接或是用--help命令查看 waitdocker wait : 阻塞运行直到容器停止,然后打印出它的退出代码。 语法: docker wait (-$) CONTAINER [CONTAINER...] 实例 docker wait CONTAINER exportdocker export :将文件系统作为一个tar归档文件导出到STDOUT 语法: docker export [OPTIONS] CONTAINER
实例: 实例1:将容器名为red_panda的容器保存为tar文件 docker export red_panda > latest.tar 或者 docker export --output="latest.tar" red_panda 实例2:将id为a404c6c174a2的容器按日期保存为tar文件。 runoob@runoob:~$ docker export -o mysql-`date +%Y%m%d`.tar a404c6c174a2 runoob@runoob:~$ ls mysql-`date +%Y%m%d`.tar mysql-20160711.tar portdocker port :列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口。 语法: docker port CONTAINER [PRIVATE_PORT[/PROTO]] 实例: 查看容器ID为cbe08f2a4406的端口映射情况。 runoob@runoob:~$ docker port cbe08f2a4406 3306/tcp -> 0.0.0.0:13306 statsdocker stats : 显示容器资源使用情况统计信息的实时流 语法: docker stats (-$) [CONTAINER...]
实例: 运行docker stats在针对Linux后台程序运行的所有容器。 $ docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS b95a83497c91 awesome_brattain 0.28% 5.629MiB / 1.952GiB 0.28% 916B / 0B 147kB / 0B 9 67b2525d8ad1 foobar 0.00% 1.727MiB / 1.952GiB 0.09% 2.48kB / 0B 4.11MB / 0B 2 e5c383697914 test-1951.1.kay7x1lh1twk9c0oig50sd5tr 0.00% 196KiB / 1.952GiB 0.01% 71.2kB / 0B 770kB / 0B 1 4bda148efbc0 random.1.vnc8on831idyr42slu578u3cr 0.00% 1.672MiB / 1.952GiB 0.08% 如果未使用指定格式字符串--format,则会显示以下列。
注:更多示例可点击上方官网链接查看 容器生命周期管理rundocker run :创建一个新的容器并运行一个命令 注:由于该命令的选项高达99项,所以本节只选用了常用的一些选项,详情可参见官网 语法: docker run (-$) IMAGE [COMMAND] [ARG...]
扩展说明: 容器的退出状态码
实例: 使用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 绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。 docker run -p 127.0.0.1:80:8080/tcp ubuntu bash 使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。 runoob@runoob:~$ docker run -it nginx:latest /bin/bash root@b8573233d675:/# start/stop/restartdocker start :启动一个或多个已经被停止的容器 docker stop :停止一个运行中的容器 docker restart :重启容器 语法: docker start (-$) CONTAINER [CONTAINER...]
docker stop (-$) CONTAINER [CONTAINER...]
docker restart (-$) CONTAINER [CONTAINER...]
killdocker kill :杀掉一个运行中的容器。 语法: docker kill (-$) CONTAINER [CONTAINER...]
实例: 杀掉运行中的容器mynginx runoob@runoob:~$ docker kill -s KILL mynginx mynginx 杀死所有正在运行的容器 docker kill $( docker ps -p -a ) 注:此小节的-s牵扯到Linux的信号,如需了解详情,可点击此处查看 rmdocker rm :删除一个或多少容器 语法: docker rm (-$) CONTAINER [CONTAINER...]
实例: 移除容器nginx01对容器db01的连接,连接名db docker rm -l db 删除容器nginx01,并删除容器挂载的数据卷 docker rm -v nginx01 强制删除所有容器 docker rm -f 'docker ps -a -q' 删除非运行的容器 docker rm docker ps -a -f status=exited 删除异常退出的容器 docker rm docker ps -a | grep Exited | awk'{print $1}' 一条命令实现停用并删除容器 docker stop $(docker ps -q) & docker rm $( docker ps -aq ) 批量删除最近5个容器 docker rm $(docker ps -aq -n=5) 移除指定镜像创建的容器 docker rm $(docker ps -a | grep "watch-the-fun/jdk:8" | awk '{print $1}') 命令拆分解释:
注:更多示例和详细讲解可点击上方官网链接或是用--help命令查看 pause/unpausedocker pause :暂停容器中所有的进程。 docker unpause :恢复容器中所有的进程。 语法: docker pause CONTAINER [CONTAINER...] docker unpause CONTAINER [CONTAINER...] 实例: 暂停数据库容器db01提供服务 docker pause db01 恢复数据库容器db01提供服务 docker unpause db01 createdocker create :创建一个新的容器但不启动它 用法同 docker run 语法: docker create (-$ |
请发表评论