Docker經常使用命令

Docker如今基本成爲了運維人員必須掌握的專業技能之一,而docker默認沒有圖形界面管理,所以掌握docker-client命令行操做就顯得十分重要。html

  • 安裝docker指定版本:
# 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


search

docker search 用來搜索可用的相關鏡像。linux

  • 從docker倉庫中搜索nginx鏡像:
# docker search nginxNAME                                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                                                  Official build of Nginx.                        11083               [OK]

pull

docker pull 下載指定鏡像。nginx

  • 從docker倉庫中下載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

images

docker images 查看已下載的本地docker鏡像。shell

  • 查看已下載的本地docker鏡像:
# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              881bd08c0b08        13 days ago         109MB

能夠看到剛剛下載到本地的 nginx:latest 鏡像。centos

run

docker run 啓動docker鏡像爲容器。bash

  • 啓動nginx鏡像爲容器:
# 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鏡像。運維

ps

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:查看當前系統中全部的容器,包括運行中、暫停中和已中止的容器

inspect

docker inspect 查看容器的詳細信息。

  • 查看nginx容器的詳細信息:
# docker inspect nginx |grep -i ipaddr
            "SecondaryIPAddresses": null,            "IPAddress": "172.17.0.2",                    "IPAddress": "172.17.0.2",

查看容器的詳細信息,並從信息中過濾IP地址。

exec

docker exec 在docker容器中執行命令。

  • 在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

start/stop

docker start/stop 啓動、中止指定的容器。

  • 中止nginx容器,再啓動nginx容器:
# 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 來重啓指定的容器。

kill

docker kill 用來kill掉運行中的容器。

  • kill掉運行中的nginx容器:
# 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 強行關閉。

rm

docker rm 刪除指定的容器。

  • 刪除nginx容器:
# 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 沒法直接刪除正在運行中的容器,建議先中止容器,再刪除容器。

rmi

docker rm 刪除指定的鏡像。

  • 刪除nginx鏡像:
# 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 截取容器中止時的退出狀態值
相關文章
相關標籤/搜索