docker 常用的操作命令:
1. docker version # 显示 Docker 版本信息。
[hejianping@localhost ~]$ sudo docker version Client: Version: 18.06.1-ce API version: 1.38 Go version: go1.10.3 Git commit: e68fc7a Built: Tue Aug 21 17:23:03 2018 OS/Arch: linux/amd64 Experimental: false Server: Engine: Version: 18.06.1-ce API version: 1.38 (minimum version 1.12) Go version: go1.10.3 Git commit: e68fc7a Built: Tue Aug 21 17:25:29 2018 OS/Arch: linux/amd64 Experimental: false
2. docker info # 显示 Docker 系统信息,包括镜像和容器数。
[hejianping@localhost ~]$ sudo docker info Containers: 4 Running: 2 Paused: 0 Stopped: 2 Images: 5 Server Version: 18.06.1-ce Storage Driver: overlay2 Backing Filesystem: xfs Supports d_type: true Native Overlay Diff: false Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e runc version: 69663f0bd4b60df09991c08812a60108003fa340 init version: fec3683 Security Options: seccomp Profile: default Kernel Version: 3.10.0-514.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64 CPUs: 2 Total Memory: 3.686GiB Name: localhost.localdomain ID: JTLV:R3NL:BIH5:7GM2:6JVF:3X27:BXSA:5TPW:VDMO:5JNC:PIQG:EYPG Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Registry Mirrors: https://registry.docker-cn.com/ Live Restore Enabled: false WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled
3. docker search 镜像名字 # 从 Docker Hub 中搜索符合条件的镜像。
[hejianping@localhost ~]$ sudo docker search centos7 NAME DESCRIPTION STARS OFFICIAL AUTOMATED ansible/centos7-ansible Ansible on Centos7 122 [OK] flyceek/centos7-jdk centos7-jdk 5 [OK] ryanj/centos7-s2i-nodejs STOP RUNNING YOUR APP BUILDS AS ROOT!! Use t… 5 paigeeworld/centos7 Centos7 with apache, iperf3, nmap, ssh 4 bucharestgold/centos7-s2i-nodejs OpenShift S2I builder images for Node.js app… 4 lhcbdev/centos7-build 3 ovirtguestagent/centos7-atomic The oVirt Guest Agent for Centos 7 Atomic Ho… 2 nodesource/centos7 The Official NodeSource Docker Images 2 prairielearn/centos7-python 1 myheritage/centos7-git-java CentOs based docker image for Jenkins slave 1 [OK] toolsmiths/centos7-dev 0 rmtm/centos7 CentOS7 Baseline for RMTM 0 chekanov/centos7hepsim Software for HepSim repository based on Cent… 0 mimacom/centos7-java Docker image based on centos7 with java 0 [OK] sglim2/centos7 centos7 with gcc/g++/make/git 0 [OK] pivotaldata/centos7-dev CentosOS 7 image for GPDB development 0 toolsmiths/centos7-build 0 caio2k/centos7 centos7 with supervisord and vagrant user 0 [OK] fortinj66/centos7-s2i-nodejs based off of ryanj/centos7-s2i-nodejs. Bigg… 0 puzzle/centos7-ruby-25-openssl official redhat ruby 2.5 image PLUS openssl 0 [OK] nodeshift/centos7-s2i-nodejs OpenShift S2I builder images for Node.js app… 0 0702/centos7 A centos7 with usual utils 0 [OK] toolsmiths/centos7-test 0 martinrw/centos7-icinga Basic centos7 image with icinga2, used for t… 0 couchbase/centos7-systemd centos7-systemd images with additional debug… 0 [OK]
4. docker pull 镜像名字 # 从 Docker Hub 中拉取或者更新指定镜像。
[hejianping@localhost ~]$ sudo docker pull alpine Using default tag: latest latest: Pulling from library/alpine 921b31ab772b: Pull complete Digest: sha256:ca1c944a4f8486a153024d9965aafbe24f5723c1d5c02f4964c045a16d19dc54 Status: Downloaded newer image for alpine:latest
5. docker images # 列出本地所有镜像。
[hejianping@localhost ~]$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE gitlab v1 ce156d91be08 3 days ago 3.22GB jenkins v1 7df8d85dcb88 3 days ago 868MB alpine latest 4d90542f0623 3 weeks ago 5.58MB ubuntu latest 4c108a37151f 3 weeks ago 64.2MB centos latest 9f38484d220f 3 months ago 202MB
6. docker ps -a # 列出所有容器(含沉睡镜像)。
[hejianping@localhost ~]$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b5fc20548342 gitlab:v1 "/usr/sbin/init" 3 days ago Up 3 days 80/tcp, 0.0.0.0:9080->8080/tcp Gitlab_v1 191fded84c67 jenkins:v1 "/usr/sbin/init" 3 days ago Up 3 days 0.0.0.0:9090->8080/tcp Jenkins_v1 c650b8fbede5 centos "/bin/sh" 8 days ago Exited (137) 3 days ago Gitlab 04af6bc6f5fc centos "/bin/sh" 8 days ago Exited (137) 3 days ago Jenkins
7. docker rmi 镜像名字 # 加-f是强制删除。
[hejianping@localhost ~]$ sudo docker rmi alpine
Untagged: alpine:latest
Untagged: alpine@sha256:ca1c944a4f8486a153024d9965aafbe24f5723c1d5c02f4964c045a16d19dc54
Deleted: sha256:4d90542f0623c71f1f9c11be3da23167174ac9d93731cf91912922e916bab02c
Deleted: sha256:256a7af3acb11f89914205b6eef07e05e4196e898329575d97185758b450eb52
8. docker rm 容器名字 # 加-f是强制删除。
[hejianping@localhost ~]$ sudo docker rm 6f123e25da48
6f123e25da48
9. docker history 镜像名 # 查看指定镜像的创建历史。
[hejianping@localhost ~]$ sudo docker history gitlab:v1 IMAGE CREATED CREATED BY SIZE COMMENT ce156d91be08 3 days ago /bin/sh 3.02GB my Gitlab 9f38484d220f 3 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B <missing> 3 months ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B <missing> 3 months ago /bin/sh -c #(nop) ADD file:074f2c974463ab38c… 202MB
10. docker start|stop|restart # 启动、停止和重启一个或多个指定容器。
[hejianping@localhost ~]$ sudo docker restart Gitlab_v1 Gitlab_v1 [hejianping@localhost ~]$ sudo docker stop Gitlab_v1 Gitlab_v1 [hejianping@localhost ~]$ sudo docker start Gitlab_v1 Gitlab_v1
11. docker save # 将指定镜像保存成 tar 归档文件, docker load的逆操作。
[hejianping@localhost ~]$ sudo docker save alpine >/tmp/alpine.tar.gz
12. docker load # 从 tar 镜像归档中载入镜像, docker save 的逆操作。
[hejianping@localhost ~]$ sudo docker load </tmp/alpine.tar.gz 256a7af3acb1: Loading layer [==================================================>] 5.844MB/5.844MB Loaded image: alpine:latest [hejianping@localhost ~]$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE gitlab v1 ce156d91be08 3 days ago 3.22GB jenkins v1 7df8d85dcb88 3 days ago 868MB alpine latest 4d90542f0623 3 weeks ago 5.58MB ubuntu latest 4c108a37151f 3 weeks ago 64.2MB centos latest 9f38484d220f 3 months ago 202MB
13. docker inspect # 检查镜像或者容器的参数,默认返回 JSON 格式。
[hejianping@localhost ~]$ sudo docker inspect alpine [ { "Id": "sha256:4d90542f0623c71f1f9c11be3da23167174ac9d93731cf91912922e916bab02c", "RepoTags": [ "alpine:latest" ], "RepoDigests": [], "Parent": "", "Comment": "", "Created": "2019-06-19T21:19:43.678347436Z", "Container": "e9121d926d4021e999c59e8ca03a9bbcc6d35a03f6a3a7ca13ec298d4b6b035a", "ContainerConfig": { "Hostname": "e9121d926d40", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ], "Cmd": [ "/bin/sh", "-c", "#(nop) ", "CMD ["/bin/sh"]" ], "ArgsEscaped": true, "Image": "sha256:6cf938bd24b52e7670589075d75b16c2154a76d4265f5e58b3bba11247a61804", "Volumes": null, "WorkingDir": "", "Entrypoint": null, "OnBuild": null, "Labels": {} }, "DockerVersion": "18.06.1-ce", "Author": "", "Config": { "Hostname": "", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ], "Cmd": [ "/bin/sh" ], "ArgsEscaped": true, "Image": "sha256:6cf938bd24b52e7670589075d75b16c2154a76d4265f5e58b3bba11247a61804", "Volumes": null, "WorkingDir": "", "Entrypoint": null, "OnBuild": null, "Labels": null }, "Architecture": "amd64", "Os": "linux", "Size": 5581746, "VirtualSize": 5581746, "GraphDriver": { "Data": { "MergedDir": "/var/lib/docker/overlay2/32d2e942edb728043766cf3149c4b9f15b7b037e0e8d1e92afb84532bf60ad4f/merged", "UpperDir": "/var/lib/docker/overlay2/32d2e942edb728043766cf3149c4b9f15b7b037e0e8d1e92afb84532bf60ad4f/diff", "WorkDir": "/var/lib/docker/overlay2/32d2e942edb728043766cf3149c4b9f15b7b037e0e8d1e92afb84532bf60ad4f/work" }, "Name": "overlay2" }, "RootFS": { "Type": "layers", "Layers": [ "sha256:256a7af3acb11f89914205b6eef07e05e4196e898329575d97185758b450eb52" ] }, "Metadata": { "LastTagTime": "0001-01-01T00:00:00Z" } } ]
14. docker commit # 从容器创建一个新的镜像。
# docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] -a :提交的镜像作者; -c :使用Dockerfile指令来创建镜像; -m :提交时的说明文字; -p :在commit时,将容器暂停。
[hejianping@localhost ~]$ sudo docker commit -a "hejianping" -m "this is test" 191fded84c67 jenkins:v2 sha256:35961f4ca901ab2d4f991ddb7e3bd0cfc77869241259682e2bc7cf992d0e05d8 [hejianping@localhost ~]$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE jenkins v2 35961f4ca901 About a minute ago 882MB gitlab v1 ce156d91be08 3 days ago 3.22GB jenkins v1 7df8d85dcb88 3 days ago 868MB hejianping/apline_test latest 4d90542f0623 3 weeks ago 5.58MB alpine latest 4d90542f0623 3 weeks ago 5.58MB ubuntu latest 4c108a37151f 3 weeks ago 64.2MB centos latest 9f38484d220f 3 months ago 202MB
15. docker tag # 标记本地镜像,将其归入某一仓库。
[hejianping@localhost ~]$ sudo docker tag 35961f4ca901 apple01/hejianping/jenkins [hejianping@localhost ~]$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE apple01/hejianping/jenkins latest 35961f4ca901 5 minutes ago 882MB jenkins v2 35961f4ca901 5 minutes ago 882MB gitlab v1 ce156d91be08 3 days ago 3.22GB jenkins v1 7df8d85dcb88 3 days ago 868MB alpine latest 4d90542f0623 3 weeks ago 5.58MB ubuntu latest 4c108a37151f 3 weeks ago 64.2MB centos latest 9f38484d220f 3 months ago 202MB
16. docker push # 将镜像推送至远程仓库,默认为 Docker Hub 。
[hejianping@localhost ~]$ sudo docker push apple01/hejianping/jenkins The push refers to repository [docker.io/apple01/hejianping/jenkins] 385a7d7bb34a: Preparing d4ed538939b7: Preparing d69483a6face: Preparing denied: requested access to the resource is denied
17. docker logs # 获取容器运行时的输出日志。-f 跟踪容器日志的最近更新;-t 显示容器日志的时间戳;
[hejianping@localhost ~]$ sudo docker logs -f Jenkins_v1 [FAILED] Failed to start LSB: Bring up/down networking. See 'systemctl status network.service' for details. [ OK ] Reached target Network. [ OK ] Reached target Network is Online. Starting LSB: Jenkins Automation Server... [ OK ] Stopped Getty on tty1. [ OK ] Started Getty on tty1. [ OK ] Created slice User Slice of root. [ OK ] Started Session 97 of user root. [ OK ] Started LSB: Jenkins Automation Server. [ OK ] Reached target Multi-User System. Starting Update UTMP about System Runlevel Changes... [ OK ] Started Update UTMP about System Runlevel Changes.
18. docker run # 后面会单独写一章节详解。