一、命令行 可以通過運行 docker ,或者 docker help 命令得到命令行的幫助信息(我們以 CentOS 為操作環境為例): [root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker help Usage: docker [OPTIONS] COMMA... ...
一、命令行
可以通過運行 docker ,或者 docker help 命令得到命令行的幫助信息(我們以 CentOS 為操作環境為例):
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker help Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers Options: --config string Location of client config files (default "/root/.docker") -c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use") -D, --debug Enable debug mode -H, --host list Daemon socket(s) to connect to -l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info") --tls Use TLS; implied by --tlsverify --tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem") --tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem") --tlskey string Path to TLS key file (default "/root/.docker/key.pem") --tlsverify Use TLS and verify the remote -v, --version Print version information and quit Management Commands: builder Manage builds config Manage Docker configs container Manage containers context Manage contexts engine Manage the docker engine image Manage images network Manage networks node Manage Swarm nodes plugin Manage plugins secret Manage Docker secrets service Manage services stack Manage Docker stacks swarm Manage Swarm system Manage Docker trust Manage trust on Docker images volume Manage volumes Commands: attach Attach local standard input, output, and error streams to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders between a container and the local filesystem create Create a new container diff Inspect changes to files or directories on a container's filesystem events Get real time events from the server exec Run a command in a running container export Export a container's filesystem as a tar archive history Show the history of an image images List images import Import the contents from a tarball to create a filesystem image info Display system-wide information inspect Return low-level information on Docker objects kill Kill one or more running containers load Load an image from a tar archive or STDIN login Log in to a Docker registry logout Log out from a Docker registry logs Fetch the logs of a container pause Pause all processes within one or more containers port List port mappings or a specific mapping for the container ps List containers pull Pull an image or a repository from a registry push Push an image or a repository to a registry rename Rename a container restart Restart one or more containers rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save one or more images to a tar archive (streamed to STDOUT by default) search Search the Docker Hub for images start Start one or more stopped containers stats Display a live stream of container(s) resource usage statistics stop Stop one or more running containers tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE top Display the running processes of a container unpause Unpause all processes within one or more containers update Update configuration of one or more containers version Show the Docker version information wait Block until one or more containers stop, then print their exit codes Run 'docker COMMAND --help' for more information on a command.
其中:
info、version是系統環境信息相關的命令
events、history、logs 是日誌信息相關的命令
login\pull\push\search是DockerHub服務相關的命令
其餘都是日常維護相關的命令
二、命令語法
基本用法:命令 + 參數
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker info Client: Debug Mode: false Server: Containers: 4 Running: 0 Paused: 0 Stopped: 4 Images: 2 Server Version: 19.03.1 ...............(省略) Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Security Options: Kernel Version: 3.10.0-693.2.2.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker version Client: Docker Engine - Community Version: 19.03.1 API version: 1.40 Go version: go1.12.5 Git commit: 74b1e89e8a Built: Thu Jul 25 21:17:37 2019 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.1 API version: 1.40 (minimum version 1.12) Go version: go1.12.5 Git commit: 74b1e89e8a Built: Thu Jul 25 21:27:55 2019 OS/Arch: linux/amd64 Experimental: false containerd: Version: v1.2.6 GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb runc: Version: 1.0.0-rc8 GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f docker-init: Version: 0.18.0 GitCommit: fec3683
查看已下載的鏡像
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 3556258649b2 2 weeks ago 64.2MB hello-world latest fce289e99eb9 7 months ago 1.84kB learn/tutorial latest a7876479f1aa 6 years ago 128MB
單個字元的參數可以放在一起:
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker run -t -i ubuntu bash # 使用鏡像 ubuntu:latest 以交互模式啟動一個容器,在容器內執行 bash 命令,標紅部分表示使用分開的參數 Unable to find image 'ubuntu:latest' locally latest: Pulling from library/ubuntu 7413c47ba209: Pull complete 0fe7e7cbb2e8: Pull complete 1d425c982345: Pull complete 344da5c95cec: Pull complete Digest: sha256:c303f19cfe9ee92badbbbd7567bc1ca47789f79303ddcef56f77687d4744cd7a Status: Downloaded newer image for ubuntu:latest root@a0629a1e86e4:/# cat /etc/issue Ubuntu 18.04.2 LTS \n \l root@a0629a1e86e4:/# exit exit [root@iz2ze2bn5x2wqxdeq65wlpz ~]#
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker run -ti ubuntu bash # 標紅部分,表示把單個字元參數,合在一起使用 root@5b84ee078161:/# exit exit
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker rm imgid-1 imgid-2 # 標紅部分,表示把多個參數放在一行使用 Error: No such container: imgid-1 Error: No such container: imgid-2
二、Docker 後臺進程參數
參數 | 介紹 |
---|---|
--api-enable-cors=false | 遠程API調用。 |
-b, --bridge="" | 橋接一個系統上的網橋設備到 Docker 容器里,當使用 none 可以停用容器里的網路 |
--bip="" | 使用 CIDR 地址來設定網路橋的 IP。此參數和 -b 不能一起使用。 |
-D, --debug=false | 開啟Debug模式。例如:docker -d -D |
-d, --daemon=false | 開啟Daemon模式。 |
--dns=[] | 設置容器使用DNS伺服器。例如: docker -d --dns 8.8.8.8 |
-dns-search=[] | 設置容器使用指定的DNS搜索功能變數名稱。如: docker -d --dns-search example.com |
--exec-driver="native" | 設置容器使用指定的運行時驅動。如:docker -d -e lxc |
-G, --group="docker" | 在後臺運行模式下,賦予指定的Group到相應的unix socket上。註意,當此參數 --group 賦予空字元串時,將去除組信息 |
-g, --graph="/var/lib/docker" | 設置Docker運行時根目錄 |
-H, --host=[] | 設置後臺模式下指定socket綁定,可以綁定一個或多個 tcp://host:port, unix:///path/to/socket, fd://* 或 fd://socketfd。如:$ docker -H tcp://0.0.0.0:2375 ps 或者$ export DOCKER_HOST="tcp://0.0.0.0:2375"$ docker ps |
-icc=true | 設置啟用內聯容器的通信。 |
--ip="0.0.0.0" | 設置容器綁定IP時使用的預設IP地址 |
--ip-forward=true | 設置啟動容器的 net.ipv4.ip_forward |
--iptables=true | 設置啟動Docker容器自定義的iptable規則 |
--mtu=0 | 設置容器網路的MTU值,如果沒有這個參數,選用預設 route MTU,如果沒有預設route,就設置成常量值 1500。 |
-p, --pidfile="/var/run/docker.pid" | 設置後臺進程PID文件路徑。 |
-r, --restart=true | 設置重啟之前運行中的容器 |
-s, --storage-driver="" | 設置容器運行時使用指定的存儲驅動,如,指定使用devicemapper,可以這樣:docker -d -s devicemapper |
--selinux-enabled=false | 設置啟用selinux支持 |
--storage-opt=[] | 設置存儲驅動的參數 |
三、Docker 命令大全
容器生命周期管理
容器操作
容器rootfs命令
鏡像倉庫
本地鏡像管理
Docker信息|版本
1、docker run :創建一個新的容器並運行一個命令
語法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS說明:
-a stdin: 指定標準輸入輸出內容類型,可選 STDIN/STDOUT/STDERR 三項; -d: 後臺運行容器,並返回容器ID; -i: 以交互模式運行容器,通常與 -t 同時使用; -P: 隨機埠映射,容器內部埠隨機映射到主機的高埠 -p: 指定埠映射,格式為:主機(宿主)埠:容器埠 -t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用; --name="nginx-lb": 為容器指定一個名稱; --dns 8.8.8.8: 指定容器使用的DNS伺服器,預設和宿主一致; --dns-search example.com: 指定容器DNS搜索功能變數名稱,預設和宿主一致; -h "mars": 指定容器的hostname; -e username="ritchie": 設置環境變數; --env-file=[]: 從指定文件讀入環境變數; --cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運行; -m :設置容器使用記憶體最大值; --net="bridge": 指定容器的網路連接類型,支持 bridge/host/none/container: 四種類型; --link=[]: 添加鏈接到另一個容器; --expose=[]: 開放一個埠或一組埠; --volume , -v: 綁定一個捲
實例:
使用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命令。
docker run -it nginx:latest /bin/bash
2、docker start :啟動一個或多個已經被停止的容器
docker stop :停止一個運行中的容器
docker restart :重啟容器
語法:docker start / stop / restart [OPTIONS] CONTAINER [CONTAINER...]
實例:
啟動已被停止的容器mydocker
docker start mydocker
停止運行中的容器mydocker
docker stop mydocker
重啟容器mydocker
docker restart mydocker
3、docker kill :殺掉一個運行中的容器。
語法:docker kill [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS說明:
-s :向容器發送一個信號
實例:
殺掉運行中的容器mynginx
docker kill -s KILL mynginx
4、docker rm :刪除一個或多個容器
語法:docker rm [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS說明:
-f :通過SIGKILL信號強制刪除一個運行中的容器 -l :移除容器間的網路連接,而非容器本身 -v :刪除與容器關聯的捲
實例:
強制刪除容器db01、db02
docker rm -f db01 db02
移除容器nginx01對容器db01的連接,連接名db
docker rm -l db
刪除容器nginx01,並刪除容器掛載的數據捲
docker rm -v nginx01
5、docker pause :暫停容器中所有的進程。
docker unpause :恢復容器中所有的進程。
語法:docker pause / unpause [OPTIONS] CONTAINER [CONTAINER...]
實例:
暫停資料庫容器db01提供服務。
docker pause db01
恢複數據庫容器db01提供服務。
docker unpause db01
6、docker create :創建一個新的容器但不啟動它。
用法同 docker run。
語法:
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
語法同 docker run。
實例:
使用docker鏡像nginx:latest創建一個容器,並將容器命名為mydocker
docker create --name mydocker nginx:latest
7、docker exec :在運行的容器中執行命令
語法:
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS說明:
-d :分離模式: 在後臺運行 -i :即使沒有附加也保持STDIN 打開 -t :分配一個偽終端
實例:
在容器 mynginx 中以交互模式執行容器內 /root/myscripts.sh 腳本:
docker exec -it mynginx /bin/sh /root/myscripts.sh
在容器 mynginx 中開啟一個交互模式的終端:
docker exec -i -t mynginx /bin/bash
也可以通過 docker ps -a 命令查看已經在運行的容器,然後使用容器 ID 進入容器。
查看已經在運行的容器 ID:
# docker ps -a ... 9df70f9a0714 openjdk "/usercode/script.sh…" ...
第一列的 9df70f9a0714 就是容器 ID。
通過 exec 命令對指定的容器執行 bash:
docker exec -it 9df70f9a0714 /bin/bash
8、docker ps : 列出容器
語法:docker ps [OPTIONS]
OPTIONS說明:
-a :顯示所有的容器,包括未運行的。 -f :根據條件過濾顯示的內容。 --format :指定返回值的模板文件。 -l :顯示最近創建的容器。 -n :列出最近創建的n個容器。 --no-trunc :不截斷輸出。 -q :靜默模式,只顯示容器編號。 -s :顯示總的文件大小。
實例:
列出所有在運行的容器信息:
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker ps CONTAINER ID IMAGE COMMAND ... PORTS NAMES 09b93464c2f7 nginx:latest "nginx -g 'daemon off" ... 80/tcp, 443/tcp myimages 96f7f14e99ab mysql:5.6 "docker-entrypoint.sh" ... 0.0.0.0:3306->3306/tcp mymysql
列出最近創建的5個容器信息:
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker ps -n 5 CONTAINER ID IMAGE COMMAND CREATED 09b93464c2f7 nginx:latest "nginx -g 'daemon off" 2 days ago ... b8573233d675 nginx:latest "/bin/bash" 2 days ago ... b1a0703e41e7 nginx:latest "nginx -g 'daemon off" 2 days ago ... f46fb1dec520 5c6e1090e771 "/bin/sh -c 'set -x \t" 2 days ago ... a63b4a5597de 860c279d2fec "bash" 2 days ago ...
列出所有創建的容器ID:
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker ps -a -q 09b93464c2f7 b8573233d675 b1a0703e41e7 f46fb1dec520 a63b4a5597de 6a4aa42e947b de7bb36e7968 43a432b73776 664a8ab1a585 ba52eb632bbd
根據條件過濾顯示的內容。
根據標簽過濾:
$ docker run -d --name=test-nginx --label color=blue nginx $ docker ps --filter "label=color" $ docker ps --filter "label=color=blue"
根據名稱過濾:
$ docker ps --filter"name=test-nginx"
根據狀態過濾:
$ docker ps -a --filter 'exited=0' $ docker ps --filter status=running $ docker ps --filter status=paused
根據鏡像過濾:
#鏡像名稱 $ docker ps --filter ancestor=nginx #鏡像ID $ docker ps --filter ancestor=d0e008c6cf02
根據啟動順序過濾:
$ docker ps -f before=9c3527ed70ce $ docker ps -f since=6e63f6ff38b0
9、docker inspect : 獲取容器/鏡像的元數據。
語法:docker inspect [OPTIONS] NAME|ID [NAME|ID...]
OPTIONS說明:
-f :指定返回值的模板文件。 -s :顯示總的文件大小。 --type :為指定類型返回JSON。
實例:
獲取鏡像mysql:5.6的元信息。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker inspect mysql:5.6 [ { "Id": "sha256:2c0964ec182ae9a045f866bbc2553087f6e42bfc16074a74fb820af235f070ec", "RepoTags": [ "mysql:5.6" ], "RepoDigests": [], "Parent": "", "Comment": "", "Created": "2016-05-24T04:01:41.168371815Z", "Container": "e0924bc460ff97787f34610115e9363e6363b30b8efa406e28eb495ab199ca54", "ContainerConfig": { "Hostname": "b0cf605c7757", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "ExposedPorts": { "3306/tcp": {} }, ...
獲取正在運行的容器mymysql的 IP。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mymysql 172.17.0.3
10、docker top :查看容器中運行的進程信息,支持 ps 命令參數。
語法:docker top [OPTIONS] CONTAINER [ps OPTIONS]
容器運行時不一定有/bin/bash終端來交互執行top命令,而且容器還不一定有top命令,可以使用docker top來實現查看container中正在運行的進程。
實例:
查看容器mymysql的進程信息。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker top mymysql UID PID PPID C STIME TTY TIME CMD 999 40347 40331 18 00:58 ? 00:00:02 mysqld
查看所有運行容器的進程信息。
for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done
11、docker attach :連接到正在運行中的容器。
語法:docker attach [OPTIONS] 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將訪問日誌指到標準輸出,連接到容器查看訪問信息。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# 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" "-"
12、docker events:從伺服器獲取實時事件
語法:docker events [OPTIONS]
OPTIONS說明:
-f :根據條件過濾事件; --since :從指定的時間戳後顯示所有事件; --until :流水時間顯示到指定的時間為止;
實例:
顯示docker 2016年7月1日後的所有事件。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# 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) 2016-07-08T19:44:54.726110498+08:00 container resize b8573233d675705df8c89796a2c2687cd8e36e03646457a15fb51022db440e64 (height=39, image=nginx:latest, name=elegant_albattani, width=167) 2016-07-08T19:46:22.137250899+08:00 container die b8573233d675705df8c89796a2c2687cd8e36e03646457a15fb51022db440e64 (exitCode=0, image=nginx:latest, name=elegant_albattani) ...
顯示docker 鏡像為mysql:5.6 2016年7月1日後的相關事件。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# 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) 2016-07-11T00:51:17.132532080+08:00 container die 96f7f14e99ab9d2f60943a50be23035eda1623782cc5f930411bbea407a2bb10 (exitCode=137, image=mysql:5.6, name=mymysql) 2016-07-11T00:51:17.514661357+08:00 container destroy 96f7f14e99ab9d2f60943a50be23035eda1623782cc5f930411bbea407a2bb10 (image=mysql:5.6, name=mymysql) 2016-07-11T00:57:18.551984549+08:00 container create c8f0a32f12f5ec061d286af0b1285601a3e33a90a08ff1706de619ac823c345c (image=mysql:5.6, name=mymysql) 2016-07-11T00:57:18.557405864+08:00 container attach c8f0a32f12f5ec061d286af0b1285601a3e33a90a08ff1706de619ac823c345c (image=mysql:5.6, name=mymysql) 2016-07-11T00:57:18.844134112+08:00 container start c8f0a32f12f5ec061d286af0b1285601a3e33a90a08ff1706de619ac823c345c (image=mysql:5.6, name=mymysql) 2016-07-11T00:57:19.140141428+08:00 container die c8f0a32f12f5ec061d286af0b1285601a3e33a90a08ff1706de619ac823c345c (exitCode=1, image=mysql:5.6, name=mymysql) 2016-07-11T00:58:05.941019136+08:00 container destroy c8f0a32f12f5ec061d286af0b1285601a3e33a90a08ff1706de619ac823c345c (image=mysql:5.6, name=mymysql) 2016-07-11T00:58:07.965128417+08:00 container create a404c6c174a21c52f199cfce476e041074ab020453c7df2a13a7869b48f2f37e (image=mysql:5.6, name=mymysql) 2016-07-11T00:58:08.188734598+08:00 container start a404c6c174a21c52f199cfce476e041074ab020453c7df2a13a7869b48f2f37e (image=mysql:5.6, name=mymysql) 2016-07-11T00:58:20.010876777+08:00 container top a404c6c174a21c52f199cfce476e041074ab020453c7df2a13a7869b48f2f37e (image=mysql:5.6, name=mymysql) 2016-07-11T01:06:01.395365098+08:00 container top a404c6c174a21c52f199cfce476e041074ab020453c7df2a13a7869b48f2f37e (image=mysql:5.6, name=mymysql) ...
如果指定的時間是到秒級的,需要將時間轉成時間戳。如果時間為日期的話,可以直接使用,如--since="2016-07-01"。
13、docker logs : 獲取容器的日誌
語法:docker logs [OPTIONS] CONTAINER
OPTIONS說明:
-f : 跟蹤日誌輸出 --since :顯示某個開始時間的所有日誌 -t : 顯示時間戳 --tail :僅列出最新N條容器日誌
實例:
跟蹤查看容器mynginx的日誌輸出。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker logs -f mynginx 192.168.239.1 - - [10/Jul/2016:16:53:33 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-" 2016/07/10 16:53:33 [error] 5#5: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.239.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.239.130", referrer: "http://192.168.239.130/" 192.168.239.1 - - [10/Jul/2016:16:53:33 +0000] "GET /favicon.ico HTTP/1.1" 404 571 "http://192.168.239.130/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-" 192.168.239.1 - - [10/Jul/2016:16:53:59 +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" "-" ...
查看容器mynginx從2016年7月1日後的最新10條日誌。
docker logs --since="2016-07-01" --tail=10 mynginx
14、docker wait:阻塞運行直到容器停止,然後列印出它的退出代碼。
語法:docker wait [OPTIONS] CONTAINER [CONTAINER...]
實例:
docker wait CONTAINER
15、docker export:將文件系統作為一個tar歸檔文件導出到STDOUT。
語法:docker export [OPTIONS] CONTAINER
OPTIONS說明:
-o :將輸入內容寫到文件。
實例:
將id為a404c6c174a2的容器按日期保存為tar文件。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker export -o mysql-`date +%Y%m%d`.tar a404c6c174a2 [root@iz2ze2bn5x2wqxdeq65wlpz ~]# ls mysql-`date +%Y%m%d`.tar mysql-20160711.tar
16、docker port:列出指定的容器的埠映射,或者查找將PRIVATE_PORT NAT到面向公眾的埠。
語法:docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]
實例:
查看容器mynginx的埠映射情況。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker port mymysql 3306/tcp -> 0.0.0.0:3306
17、docker commit:從容器創建一個新的鏡像。
語法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS說明:
-a :提交的鏡像作者; -c :使用Dockerfile指令來創建鏡像; -m :提交時的說明文字; -p :在commit時,將容器暫停。
實例:
將容器a404c6c174a2 保存為新的鏡像,並添加提交人信息和說明信息。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker commit -a "myimages.com" -m "my apache" a404c6c174a2 mymysql:v1 sha256:37af1236adef1544e8886be23010b66577647a40bc02c0885a6600b33ee28057 [root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker images mymysql:v1 REPOSITORY TAG IMAGE ID CREATED SIZE mymysql v1 37af1236adef 15 seconds ago 329 MB
18、docker cp:用於容器與主機之間的數據拷貝。
語法:
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
OPTIONS說明:
-L :保持源目標中的鏈接
實例:
將主機/www/myimages目錄拷貝到容器96f7f14e99ab的/www目錄下。
docker cp /www/myimages 96f7f14e99ab:/www/
將主機/www/myimages目錄拷貝到容器96f7f14e99ab中,目錄重命名為www。
docker cp /www/myimages 96f7f14e99ab:/www
將容器96f7f14e99ab的/www目錄拷貝到主機的/tmp目錄中。
docker cp 96f7f14e99ab:/www /tmp/
19、docker diff:檢查容器里文件結構的更改。
語法:docker diff [OPTIONS] CONTAINER
實例:
查看容器mymysql的文件結構更改。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker diff mymysql A /logs A /mysql_data C /run C /run/mysqld A /run/mysqld/mysqld.pid A /run/mysqld/mysqld.sock C /tmp
20、docker login:登陸到一個Docker鏡像倉庫,如果未指定鏡像倉庫地址,預設為官方倉庫 Docker Hub
docker logout:登出一個Docker鏡像倉庫,如果未指定鏡像倉庫地址,預設為官方倉庫 Docker Hub
語法:
docker login [OPTIONS] [SERVER]
docker logout [OPTIONS] [SERVER]
OPTIONS說明:
-u :登陸的用戶名 -p :登陸的密碼
實例:
登陸到Docker Hub
docker login -u 用戶名 -p 密碼
登出Docker Hub
docker logout
21、docker pull:從鏡像倉庫中拉取或者更新指定鏡像
語法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
OPTIONS說明:
-a :拉取所有 tagged 鏡像 --disable-content-trust :忽略鏡像的校驗,預設開啟
實例:
從Docker Hub下載java最新版鏡像。
docker pull java
從Docker Hub下載REPOSITORY為java的所有鏡像。
docker pull -a java
22、docker push:將本地的鏡像上傳到鏡像倉庫,要先登陸到鏡像倉庫。
語法:docker push [OPTIONS] NAME[:TAG]
OPTIONS說明:
--disable-content-trust :忽略鏡像的校驗,預設開啟
實例:
上傳本地鏡像myapache:v1到鏡像倉庫中。
docker push myapache:v1
23、docker search:從Docker Hub查找鏡像
語法:docker search [OPTIONS] TERM
OPTIONS說明:
--automated :只列出 automated build類型的鏡像; --no-trunc :顯示完整的鏡像描述; -s :列出收藏數不小於指定值的鏡像。
實例:
從Docker Hub查找所有鏡像名包含java,並且收藏數大於10的鏡像
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# 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]
24、docker images:列出本地鏡像。
語法:docker images [OPTIONS] [REPOSITORY[:TAG]]
OPTIONS說明:
-a :列出本地所有的鏡像(含中間映像層,預設情況下,過濾掉中間映像層); --digests :顯示鏡像的摘要信息; -f :顯示滿足條件的鏡像; --format :指定返回值的模板文件; --no-trunc :顯示完整的鏡像信息; -q :只顯示鏡像ID。
實例:
查看本地鏡像列表。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mymysql v1 37af1236adef 5 minutes ago 329 MB myimages/ubuntu v4 1c06aa18edee 2 days ago 142.1 MB <none> <none> 5c6e1090e771 2 days ago 165.9 MB httpd latest ed38aaffef30 11 days ago 195.1 MB alpine latest 4e38e38c8ce0 2 weeks ago 4.799 MB mongo 3.2 282fd552add6 3 weeks ago 336.1 MB redis latest 4465e4bcad80 3 weeks ago 185.7 MB php 5.6-fpm 025041cd3aa5 3 weeks ago 456.3 MB python 3.5 045767ddf24a 3 weeks ago 684.1 MB ...
列出本地鏡像中REPOSITORY為ubuntu的鏡像列表。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker images ubuntu REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04 90d5884b1ee0 9 weeks ago 188 MB ubuntu 15.10 4e3b13c8a266 3 months ago 136.3 MB
25、docker rmi:刪除本地一個或多少鏡像。
語法:docker rmi [OPTIONS] IMAGE [IMAGE...]
OPTIONS說明:
-f :強制刪除; --no-prune :不移除該鏡像的過程鏡像,預設移除;
實例:
強制刪除本地鏡像 myimages/ubuntu:v4。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker rmi -f myimages/ubuntu:v4 Untagged: myimages/ubuntu:v4 Deleted: sha256:1c06aa18edee44230f93a90a7d88139235de12cd4c089d41eed8419b503072be Deleted: sha256:85feb446e89a28d58ee7d80ea5ce367eebb7cec70f0ec18aa4faa874cbd97c73
26、docker tag:標記本地鏡像,將其歸入某一倉庫。
語法:docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
實例:
將鏡像ubuntu:15.10標記為 myimages/ubuntu:v3 鏡像。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker tag ubuntu:15.10 myimages/ubuntu:v3 [root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker images myimages/ubuntu:v3 REPOSITORY TAG IMAGE ID CREATED SIZE myimages/ubuntu v3 4e3b13c8a266 3 months ago 136.3 MB
27、docker build:用於使用 Dockerfile 創建鏡像。
語法:docker build [OPTIONS] PATH | URL | -
OPTIONS說明:
--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 :嘗試去更新鏡像的新版本; --quiet, -q :安靜模式,成功後只輸出鏡像 ID; --rm :設置鏡像成功後刪除中間容器; --shm-size :設置/dev/shm的大小,預設值是64M; --ulimit :Ulimit配置。 --tag, -t: 鏡像的名字及標簽,通常 name:tag 或者 name 格式;可以在一次構建中為一個鏡像設置多個標簽。 --network: 預設 default。在構建期間設置RUN指令的網路模式
實例:
使用當前目錄的 Dockerfile 創建鏡像,標簽為 mydockers/ubuntu:v1。
docker build -t mydockers/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 進行語法檢查,有語法錯誤時會返回:
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker build -t test/myapp . Sending build context to Docker daemon 2.048 kB Error response from daemon: Unknown instruction: RUNCMD
28、docker history:查看指定鏡像的創建歷史。
語法:docker history [OPTIONS] IMAGE
OPTIONS說明:
-H :以可讀的格式列印鏡像大小和日期,預設為true; --no-trunc :顯示完整的提交記錄; -q :僅列出提交記錄ID。
實例:
查看本地鏡像mydockers/ubuntu:v3的創建歷史。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker history mydockers/ubuntu:v3 IMAGE CREATED CREATED BY SIZE COMMENT 4e3b13c8a266 3 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B <missing> 3 months ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/ 1.863 kB <missing> 3 months ago /bin/sh -c set -xe && echo '#!/bin/sh' > /u 701 B <missing> 3 months ago /bin/sh -c #(nop) ADD file:43cb048516c6b80f22 136.3 MB
29、docker save:將指定鏡像保存成 tar 歸檔文件。
語法:docker save [OPTIONS] IMAGE [IMAGE...]
OPTIONS 說明:
-o :輸出到的文件。
實例:
將鏡像 mydockers/ubuntu:v3 生成 my_ubuntu_v3.tar 文檔
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker save -o my_ubuntu_v3.tar mydockers/ubuntu:v3 [root@iz2ze2bn5x2wqxdeq65wlpz ~]# ll my_ubuntu_v3.tar -rw------- 1 mydockers mydockers 142102016 Jul 11 01:37 my_ubuntu_v3.ta
30、docker load:導入使用 docker save 命令導出的鏡像。
語法:docker load [OPTIONS]
OPTIONS 說明:
-i :指定導出的文件。 -q :精簡輸出信息。
實例:
導入鏡像。
docker load -i ubuntu.tar docker load < ubuntu.tar
31、docker import:從歸檔文件中創建鏡像。
語法:docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
OPTIONS說明:
-c :應用docker 指令創建鏡像; -m :提交時的說明文字;
實例:
從鏡像歸檔文件my_ubuntu_v3.tar創建鏡像,命名為steven/ubuntu:v4
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker import my_ubuntu_v3.tar steven/ubuntu:v4 sha256:63ce4a6d6bc3fabb95dbd6c561404a309b7bdfc4e21c1d59fe9fe4299cbfea39 [root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker images steven/ubuntu:v4 REPOSITORY TAG IMAGE ID CREATED SIZE steven/ubuntu v4 63ce4a6d6bc3 20 seconds ago 142.1 MB
32、docker info:顯示 Docker 系統信息,包括鏡像和容器數。
語法:docker info [OPTIONS]
實例:
查看docker系統信息。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker info Containers: 12 Images: 41 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 66 Dirperm1 Supported: false Execution Driver: native-0.2 Logging Driver: json-file Kernel Version: 3.13.0-32-generic Operating System: Ubuntu 14.04.1 LTS CPUs: 1 Total Memory: 1.954 GiB Name: iZ23mtq8bs1Z ID: M5N4:K6WN:PUNC:73ZN:AONJ:AUHL:KSYH:2JPI:CH3K:O4MK:6OCX:5OYW
33、docker version:顯示 Docker 版本信息。
語法:docker version [OPTIONS]
OPTIONS說明:
-f :指定返回值的模板文件。
實例:
顯示 Docker 版本信息。
[root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker version Client: Version: 1.8.2 API version: 1.20 Go version: go1.4.2 Git commit: 0a8c2e3 Built: Thu Sep 10 19:19:00 UTC 2015 OS/Arch: linux/amd64 Server: Version: 1.8.2 API version: 1.20 Go version: go1.4.2 Git commit: 0a8c2e3 Built: Thu Sep 10 19:19:00 UTC 2015 OS/Arch: linux/amd64
34、docker prune:用來刪除不再使用的 docker 對象
鏈接:命令 docker rm | docker rmi | docker prune 的差異