Docker如今基本成爲了運維人員必須掌握的專業技能之一,而docker默認沒有圖形界面管理,所以掌握docker-client命令行操做就顯得十分重要。html
# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo或者使用阿里源# curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo# yum makecache fast# yum install -y docker-ce-18.03.0.ce #以安裝docker-ce-18.03.0版本爲例# systemctl start docker && systemctl enable docker
docker search 用來搜索可用的相關鏡像。linux
# docker search nginxNAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx Official build of Nginx. 11083 [OK]
docker pull 下載指定鏡像。nginx
# docker pull docker.io/nginxUsing default tag: latest latest: Pulling from library/nginx f7e2b70d04ae: Pull complete 08dd01e3f3ac: Pull complete d9ef3a1eb792: Pull complete Digest: sha256:98efe605f61725fd817ea69521b0eeb32bef007af0e3d0aeb6258c6e6fe7fc1a Status: Downloaded newer image for nginx:latest
docker pull 時能夠指定鏡像標籤,不指定默認爲latest。docker
docker images 查看已下載的本地docker鏡像。shell
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 881bd08c0b08 13 days ago 109MB
能夠看到剛剛下載到本地的 nginx:latest 鏡像。centos
docker run 啓動docker鏡像爲容器。bash
# docker run -itd -p 80:80 --name nginx nginx:latest a38795771660b7e52ba7719dd936fbda36666ceff95fe66e79b6b845f278e9e9
上面命令後加上/bin/bash
就能夠進入到容器中。服務器
docker run 有一些參數選項:app
-i:interactive交互 -t:tty終端 -d:daemon後臺啓動 -p:端口映射,前面的端口爲宿主機監聽端口,後面的端口爲容器監聽端口 --name:指定啓動後容器的名字 --rm:退出容器後刪除容器
使用 docker run 啓動鏡像爲容器以前,若是本地沒有鏡像,會自動pull鏡像。運維
docker ps 查看當前正在運行中的容器。
# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a38795771660 nginx:latest "nginx -g 'daemon of…" 9 minutes ago Up 9 minutes 0.0.0.0:80->80/tcp nginx
docker ps 還有一個經常使用的參數選項:
-a:查看當前系統中全部的容器,包括運行中、暫停中和已中止的容器
docker inspect 查看容器的詳細信息。
# docker inspect nginx |grep -i ipaddr "SecondaryIPAddresses": null, "IPAddress": "172.17.0.2", "IPAddress": "172.17.0.2",
查看容器的詳細信息,並從信息中過濾IP地址。
docker exec 在docker容器中執行命令。
df -h
命令:# docker exec nginx df -hFilesystem Size Used Avail Use% Mounted on overlay 36G 3.7G 32G 11% / tmpfs 64M 0 64M 0% /dev tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/mapper/centos_master1-root 36G 3.7G 32G 11% /etc/hosts shm 64M 0 64M 0% /dev/shm tmpfs 1.9G 0 1.9G 0% /proc/acpi tmpfs 1.9G 0 1.9G 0% /proc/scsi tmpfs 1.9G 0 1.9G 0% /sys/firmware
已經啓動的nginx容器能夠這樣進入:
# docker exec -it nginx bash
此處的 -it 參數選項與 docker run 中參數做用一致。
# docker exec nginx touch /tmp/1.txt# docker exec -it nginx bashroot@a38795771660:/# ls /tmp/1.txt
docker start/stop 啓動、中止指定的容器。
# docker stop nginxnginx# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a38795771660 nginx:latest "nginx -g 'daemon of…" 28 minutes ago Exited (0) 9 seconds ago nginx# docker start nginxnginx# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a38795771660 nginx:latest "nginx -g 'daemon of…" 29 minutes ago Up 30 seconds 0.0.0.0:80->80/tcp nginx
另外,還能夠使用 docker restart 來重啓指定的容器。
docker kill 用來kill掉運行中的容器。
# docker kill nginxnginx# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a38795771660 nginx:latest "nginx -g 'daemon of…" 37 minutes ago Exited (137) 15 seconds ago nginx
docker kill 與 docker stop 做用相似,但後者要「溫柔」一些。遇到 docker stop 也沒法關閉的容器,能夠使用 docker kill 強行關閉。
docker rm 刪除指定的容器。
# docker rm nginxError response from daemon: You cannot remove a running container a38795771660b7e52ba7719dd936fbda36666ceff95fe66e79b6b845f278e9e9. Stop the container before attempting removal or force remove# docker rm -f nginxnginx# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker rm 的經常使用參數選項:
-f:強制刪除正在運行中的容器
docker rm 沒法直接刪除正在運行中的容器,建議先中止容器,再刪除容器。
docker rm 刪除指定的鏡像。
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 881bd08c0b08 13 days ago 109MB# docker run -itd -p 80:80 --name nginx nginx:latest b34323364cf285d17f25f7f338f298f73edb49ddf2b72d0aa31484676092cfa6# docker rmi nginx:latest Error response from daemon: conflict: unable to remove repository reference "nginx:latest" (must force) - container b34323364cf2 is using its referenced image 881bd08c0b08# docker rmi -f nginx:latest Untagged: nginx:latest Untagged: nginx@sha256:98efe605f61725fd817ea69521b0eeb32bef007af0e3d0aeb6258c6e6fe7fc1a
docker rmi 的經常使用參數選項:
-f:強制刪除正在運行中的容器的鏡像
docker rmi 沒法直接刪除當前存在(無論時正在運行中仍是已經中止)的容器的鏡像,建議先中止、刪除容器,再刪除對應鏡像。
除了上面的命令之外,還有不少命令也是常常使用的。
Docker | 命令 | 做用 |
---|---|---|
docker | push | 推送指定鏡像或者庫鏡像到docker源服務器 |
docker | history | 展現一個鏡像造成歷史 |
docker | attach | 當前shell下attach鏈接指定運行鏡像 |
docker | build | 經過Dockerfile定製鏡像 |
docker | commit | 提交當前容器爲新的鏡像 |
docker | cp | 宿主機和容器之間互相拷貝文件或目錄 |
docker | create | 建立一個新的容器,同run,但不啓動容器 |
docker | diff | 查看容器變化 |
docker | events | 從docker服務獲取容器實時事件 |
docker | export | 導出容器的內容流做爲一個tar歸檔文件[對應import] |
docker | import | 從tar包中的內容建立一個新的文件系統鏡像[對應export] |
docker | info | 顯示系統相關信息 |
docker | load | 從一個tar包中加載一個鏡像[對應save] |
docker | login | 註冊或登陸一個docker源服務器 |
docker | logout | 從docker源服務器中登出 |
docker | logs | 輸出當前容器的日誌信息 |
docker | port | 查看映射端口對應的容器內部源端口 |
docker | pause | 暫停容器 |
docker | restart | 重啓運行中的容器 |
docker | save | 保存一個鏡像爲一個tar包[對應load] |
docker | tag | 給當前鏡像打標籤 |
docker | top | 查看容器中運行的進程信息 |
docker | unpause | 恢復暫停的容器 |
docker | version | 查看docker版本號 |
docker | wait | 截取容器中止時的退出狀態值 |