[root@docker ~]# docker Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers Options: --config string Location of client config files (default "/root/.docker") -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: config Manage Docker configs container Manage containers 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.
啓動/中止/重啓/殺掉容器php
實例操做以下:html
[root@docker ~]# docker start myweb [root@docker ~]# docker stop myweb [root@docker ~]# docker restart myweb [root@docker ~]# docker kill -s kill myweb 參數 -s #向容器發送信號
建立並啓動一個新的容器node
經常使用參數以下:linux
-d, --detach=false #後臺運行容器,並返回容器ID -i, --interactive=false #以交互式模式運行容器,常與-t參數同時使用 -t, --tty=false #給容器從新分配一個僞終端,常與-i參數同時使用 -w, --workdir="", 指定容器的工做目錄 --name #給容器指定一個名稱 -e, --env=[] 指定環境變量,容器中可使用該環境變量 -m --memory="" #指定容器使用內存的最大值 -c, --cpu-shares=0, 設置容器CPU權重,在CPU共享場景使用 -p, --publish=[], 指定容器暴露的端口 -v, --volume=[], 給容器掛載存儲卷,掛載到容器的某個目錄 --volumes-from=[], 給容器掛載其餘容器上的卷,掛載到容器的某個目錄 --net #指定容器使用的網絡類型 bridge 使用docker daemon指定的網橋 host //容器使用主機的網絡 container:NAME_or_ID >//使用其餘容器的網路,共享IP和PORT等網絡資源 none 容器使用本身的網絡(相似--net=bridge),可是不進行配置 --link #連接到另外一個容器 --restart="no", 指定容器中止後的重啓策略: no:容器退出時不重啓 on-failure:容器故障退出(返回值非零)時重啓 always:容器退出時老是重啓
實例操做以下:nginx
[root@docker ~]# docker run -d --name nginx busybox:latest 3a90679ec552a00a989a9db2734044fd9a0314b35eee9b490cdcd7e763782516 #後臺啓動並運行一個名爲nginx的容器,運行前它會自動去docker鏡像站點下載最新的鏡像文件 [root@docker ~]# docker run -d -p 8080:8080 busybox:latest 3c4d6a2f19099deebc5c3f874a2c86a281076f52921fb27614654237da1cba4e #後臺啓動並運名爲nginx的容器,而後將容器的80端口映射到物理機的80端口 [root@docker ~]# docker run -d -v /opt/data/:/docker/data -p 8080:8080 busybox:latest 89511e1621bb7222785deb641dfb5d7b69971e0787ecc293f47931881acd8fec #後臺啓動並運名爲nginx的容器,而後將容器的80端口映射到物理機的80端口,而且將物理機的/opt/data目錄映射到容器的/docker/data [root@docker ~]# docker run -dit -v /opt/data/:/docker/data -p 8080:8080 busybox:latest /bin/sh 59961b69f80b3dab22330da30e5d4363dbd98d8bb3597b8fcfa485216f33176d [root@docker ~]# docker exec -it 59961b69f80b /bin/sh / # ls /docker/data/ / # #以交互式模式運行容器,而後在容器內執行/bin/bash命令
刪除容器git
經常使用參數以下:github
-f #強制刪除一個運行中的容器
-l #刪除指定的連接
-v #刪除與容器關聯和卷web
實例操做以下:docker
[root@docker ~]# docker rm -f mydocker #強制刪除容器mydocker [root@docker ~]# docker rm -f dockerA dockerB #強制刪除容器dockerA,dockerB [root@docker ~]# docker rm -v mydocker #刪除容器,並刪除容器掛載的數據卷
建立一個新的容器但不啓動它 [root@docker ~]# docker create --name myserver busybox:latest 09b93464c2f75b7b69f83d56a9cfc23ceb50a48a9db7652ee4c27e3e2cb1961f #建立一個名爲myserver的容器
在運行的容器中執行命令json
經常使用參數以下:
-d #在後臺運行 -i #保持STDIN打開 -t #分配一個僞終端
實例操做以下
[root@docker ~]# docker exec -it busybox /bin/sh /server/scripts/docker.sh hello world!!!!!!!!!! #以交互模式執行容器中的/server/scripts/docker.sh腳本 [root@docker ~]# docker exec -it busybox /bin/sh root@b1a0703e41e7:/# #以交互模式給容器分配一個僞終端鏈接
列出容器(正在運行)
經常使用參數以下:
-a #列出全部容器包括中止的 -f #根據條件過濾顯示內容 -l #列出最近建立的容器 -n #列出最近建立的N個容器,N爲數字 -q #只顯示容器ID -s #顯示總文件大小
實例操做以下: [root@docker ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e3734caa2f63 busybox:latest "/bin/sh" 2 hours ago Up 2 hours 0.0.0.0:8080->8080/tcp busybox #列出正在運行的容器 [root@docker ~]# docker ps -n 2 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e3734caa2f63 busybox:latest "/bin/sh" 2 hours ago Up 2 hours 0.0.0.0:8080->8080/tcp busybox 81d825fbfc3b busybox:latest "/bin/bash" 3 hours ago Created 0.0.0.0:8080->8080/tcp vigorous_torvalds #列出最近建立的2個容器 [root@docker ~]# docker ps -a -q e3734caa2f63 81d825fbfc3b 89511e1621bb 3c4d6a2f1909 #顯示全部容器的ID
獲取容器的元數據
經常使用參數以下:
-f #指定返回值格式或模板文件 -s #顯示總文件大小 --type #爲指定類型返回JSON
實例操做以下: [root@docker ~]# docker inspect f2b851facacc [ { "Id": "f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7", "Created": "2019-12-15T10:01:46.932500174Z", "Path": "/bin/sh", "Args": [], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 7586, "ExitCode": 0, "Error": "", "StartedAt": "2019-12-15T10:01:47.870143961Z", "FinishedAt": "0001-01-01T00:00:00Z" }, "Image": "sha256:db8ee88ad75f6bdc74663f4992a185e2722fa29573abcc1a19186cc5ec09dceb", "ResolvConfPath": "/var/lib/docker/containers/f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7/resolv.conf", "HostnamePath": "/var/lib/docker/containers/f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7/hostname", "HostsPath": "/var/lib/docker/containers/f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7/hosts", "LogPath": "/var/lib/docker/containers/f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7/f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7-json.log", "Name": "/peaceful_ride", "RestartCount": 0, "Driver": "overlay2", "Platform": "linux", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile": "", "ExecIDs": null, "HostConfig": { "Binds": [ "/opt/data/:/docker/data/" ], ------------------------------省略部份內容 #獲取容器ID爲f2b851facacc的元數據信息 [root@docker ~]# docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' f2b851facacc 172.17.0.2 #獲取容器爲f2b851facacc的IP地址
獲取容器的日誌
經常使用參數以下:
-f #跟蹤日誌輸出 -t #顯示時間戳 --tail #只顯示最新n條容器日誌 --since #顯示某個開始時間的全部日誌
實例操做以下:
[root@docker ~]# docker logs -f busybox #跟蹤查看容器busybox的日誌
顯示指定容器的端口映射
實例操做以下:
[root@docker ~]# docker port busybox 8080/tcp -> 0.0.0.0:8080 #顯示busybox容器的端口映射信息
用已存在的容器從新建立一個新的鏡像
經常使用參數以下:
-a #提交的鏡像做者 -c #使用Dockerfile指令來建立鏡像 -m #提交時附上說明文字 -p #在commit時,將容器暫停
實例操做以下:
[root@docker ~]# docker commit -a "test" -m "mynginx" busybox busybox:v1.0 sha256:f4d667e471bc72c315bd889869fc1914936dfae2dedd2ce186ee06cad33bb4bd [root@docker ~]# docker images |grep busybox busybox v1.0 f4d667e471bc 24 seconds ago 1.22MB #將容器busybox從新生成一個新的版本busybox:v1.0
用於容器與物理主機之間拷貝文件
實例操做以下:
[root@docker ~]# docker cp /opt/data/index.html busybox:/docker [root@docker ~]# docker exec -it busybox /bin/ls /docker data index.html #將物理主機中的/opt/data/index.html拷貝到容器busybox的/docker目錄下 [root@docker ~]# docker cp /opt/data/index.html busybox:/docker/index.php [root@docker ~]# docker exec -it busybox /bin/ls /docker data index.html index.php #將物理主機中的/opt/data/index.html拷貝到容器busybox的/docker目錄下並更名爲index.php [root@docker ~]# docker cp busybox:/docker /opt/ [root@docker ~]# ls /opt/ data docker #拷貝容器busybox:/docker目錄到物理主機中的/opt/目錄下
用於登陸與登出容器鏡像倉庫
docker login #登錄到一個Docker鏡像倉庫,若是未指定鏡像倉庫地址,默認爲官方倉庫 Docker Hub
docker logout #登出一個Docker鏡像倉庫,若是未指定鏡像倉庫地址,默認爲官方倉庫 Docker Hub
經常使用參數以下:
-u #登錄的用戶名
-p #登錄的密碼
實例操做以下:
[root@docker ~]# docker login -u username -p password Login Succeeded [root@docker ~]# docker logout Removing login credentials for https://index.docker.io/v1/ #登陸與登出默認的容器鏡像倉庫
docker pull #從鏡像倉庫中拉取或者更新指定鏡像
docker push #將本地的鏡像上傳到鏡像倉庫,要先登錄到鏡像倉庫
實例操做以下:
[root@docker ~]# docker pull nginx Using default tag: latest Trying to pull repository docker.io/library/nginx ... latest: Pulling from docker.io/library/nginx f2aa67a397c4: Already exists 3c091c23e29d: Pulling fs layer 4a99993b8636: Pulling fs layer #從鏡像倉庫中拉取或者更新指定鏡像,輸出信息如上 [root@docker ~]# docker push busybox:v1.0.0 #上傳鏡像到鏡像倉庫上
顯示系統本地容器鏡像文件
經常使用參數以下:
-a #列出全部的鏡像(含中間映像層,默認,過濾掉中間映像層); --digests #顯示鏡像的摘要信息; -f #顯示知足條件的鏡像; --format #指定返回值的模板文件; --no-trunc #顯示完整的鏡像信息; -q #只顯示鏡像ID。
實例操做以下:
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE busybox v1.0 f4d667e471bc 8 minutes ago 1.22MB bitnami/jenkins #列出本地全部的鏡像
[root@docker ~]# docker images -q 20ee805752cb 4700307f41f2 #只顯示容器ID
[root@docker ~]# docker images --digests REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE busybox v1.0 <none> f4d667e471bc 9 minutes ago 1.22MB bitnami/jenkins 2.176.3-debian-9-r5 sha256:3ed6e367edbfececb8d5eb81e1a95eacf188f2f39e629301170aa6b44d61fb92 efdd74a3f655 3 months ago 872MB [root@docker ~]# docker images --no-trunc REPOSITORY TAG IMAGE ID CREATED SIZE busybox v1.0 sha256:f4d667e471bc72c315bd889869fc1914936dfae2dedd2ce186ee06cad33bb4bd 10 minutes ago 1.22MB bitnami/jenkins 2.176.3-debian-9-r5 sha256:efdd74a3f655022fedbb3ce09b4652f3b7fdf785f75ffeb1e0adb351d40b68e9 3 months ago 872MB #能夠對比下兩個參數顯示的不一樣信息
刪除鏡像
經常使用參數以下:
-f #強制刪除
實例操做以下:
[root@docker ~]# docker images |grep busybox REPOSITORY TAG IMAGE ID CREATED SIZE busybox v1.0 f4d667e471bc 12 minutes ago 1.22MB busybox latest db8ee88ad75f 4 months ago 1.22MB [root@docker ~]# docker rmi f4d667e471bc Untagged: busybox:v1.0 Deleted: sha256:f4d667e471bc72c315bd889869fc1914936dfae2dedd2ce186ee06cad33bb4bd Deleted: sha256:d7fda98509933c5c8f3ee5f3e774c817edcc15ee38960c27a4d19eef44253708 [root@docker ~]# docker images |grep busybox REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest db8ee88ad75f 4 months ago 1.22MB #刪除一個鏡像
標記本地鏡像
實例操做以下:
[root@docker ~]# docker images |grep busybox REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest db8ee88ad75f 4 months ago 1.22MB [root@docker ~]# docker tag busybox:latest busybox:v2 [root@docker ~]# docker images |grep busybox REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest db8ee88ad75f 4 months ago 1.22MB busybox v2 db8ee88ad75f 4 months ago 1.22MB #從結果能夠看出兩個容器的ID是同樣的,只是TAG改變了,相似於linux中文件與文件的硬連接同樣,其二者的inode號相同。
使用Dockerfile建立鏡像
經常使用參數以下:
-f #指定要使用的Dockerfile路徑 --label=[] #設置鏡像使用的元數據; -m #設置內存最大值 --memory-swap #設置Swap的最大值爲內存+swap,"-1"表示不限swap --no-cache #建立鏡像的過程不使用緩存 --pull #嘗試去更新鏡像的新版本 -q #安靜模式,成功後只輸出鏡像ID --rm #設置鏡像成功後刪除中間容器 --ulimit #Ulimit配置 實例操做以下: [root@docker ~]# docker build https://github.com/nginxinc/docker-nginx/
查看指定鏡像的建立歷史
經常使用參數以下:
-H #以可讀的格式打印鏡像大小和日期,默認爲true;
--no-trunc #顯示完整的提交記錄;
-q #僅列出提交記錄ID。
實例操做以下:
[root@docker ~]# docker history busybox:latest IMAGE CREATED CREATED BY SIZE COMMENT db8ee88ad75f 4 months ago /bin/sh -c #(nop) CMD ["sh"] 0B <missing> 4 months ago /bin/sh -c #(nop) ADD file:9ceca008111a4ddff… 1.22MB
顯示 Docker 系統信息,包括鏡像和容器數
顯示 Docker 版本信息
實例操做以下:
[root@master ~]# 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