docker容器 - 新建容器、啟動容器、暫停容器和停止容器


實驗環境

CentOS 7.5

容器

容器是鏡像的運行實例。不同的是,鏡像是靜態的只讀文件,而容器帶有運行時需要的可寫文件層;同時,容器中的應用進程處於運行狀態。

新建容器

[root@kvm ~]# docker create -it docker.io/centos:7.3.1611
1cfd243950c3590d642d84c1c71ad3737adb65a74f10b6617bc174e867c02159
[root@kvm ~]# docker ps -a
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS                         PORTS               NAMES
1cfd243950c3        docker.io/centos:7.3.1611   "/bin/bash"         11 seconds ago      Created                                            determined_booth
c086bbf46c29        www.wholj.com:7.2           "/bin/bash"         25 minutes ago      Up 23 minutes                                      epic_hugle
b9783f331187        www.wholj.com:7.3           "/bin/bash"         About an hour ago   Exited (0) About an hour ago                       nostalgic_rosalind
e3fabe002814        www.wholj.com:7.3           "/bin/bask"         About an hour ago   Created                                            romantic_montalcini
0573b7db7f4c        www.wholj.com:7.3           "/bin/bash"         2 days ago          Exited (0) 2 days ago                              determined_heyrovsky
90d3b762f848        docker.io/centos:7.3.1611   "/bin/bash"         2 days ago          Exited (0) 2 days ago                              amazing_pike
8b06ff1ad2f5        docker.io/centos:7.3.1611   "/bin/bask"         2 days ago          Created                                            compassionate_ritchie
cf7b76228bb9        docker.io/centos:7.3.1611   "/bin/bash"         3 days ago          Exited (0) 2 days ago                              elegant_wiles
e71feffdd925        docker.io/centos:latest     "/bin/bash"         4 days ago          Exited (127) 4 days ago                            sharp_curran
9217638356cb        docker.io/centos:latest     "/bin/bash"         4 days ago          Exited (0) 4 days ago                              wonderful_franklin

container ID為1cfd243950c3的即為剛新建的容器;使用docker create新建的容器處於停止狀態,可以使用docker start命令來啟動它。

啟動容器

[root@kvm ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
c086bbf46c29        www.wholj.com:7.2   "/bin/bash"         36 minutes ago      Up 34 minutes                           epic_hugle
[root@kvm ~]# docker start 1cfd243950c3
1cfd243950c3
[root@kvm ~]# docker ps
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS               NAMES
1cfd243950c3        docker.io/centos:7.3.1611   "/bin/bash"         19 minutes ago      Up 2 seconds                            determined_booth
c086bbf46c29        www.wholj.com:7.2           "/bin/bash"         44 minutes ago      Up 42 minutes                           epic_hugle

注:命令docker ps可查看當前處於運行狀態的容器,docker ps -a查看當前所有容器,包括未運行的容器。

新建並啟動容器

要想新建並同時啟動容器,可用docker run,此命令等價於先執行docker create,再執行docker start
eg:下面的命令行使用鏡像docker.io/centos:latest新建一個ring器並將輸出一個“docker test.”,之后容器自動終止:

[root@kvm ~]# docker run docker.io/centos:latest /bin/echo "docker test."
docker test.

通過docker ps可看到剛使用docker run新建的容器不在運行容器列表中(列表中不包含IMAGE為docker.io/centos:latest的容器):

[root@kvm ~]# docker ps
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS               NAMES
1cfd243950c3        docker.io/centos:7.3.1611   "/bin/bash"         31 minutes ago      Up 11 minutes                           determined_booth
c086bbf46c29        www.wholj.com:7.2           "/bin/bash"         56 minutes ago      Up 54 minutes                           epic_hugle

讓容器在后台以守護態運行

要想讓容器在后台以守護態形式運行,可通過-d參數來實現;下邊的命令行會讓容器在后台運行:

[root@kvm ~]# docker run -d www.wholj.com:7.2 /bin/sh -c "while true;do echo hello world;sleep 1;done"
96c3de6f5678ed40c351f8a6a5871053ea42fd9ff4b8da64ac7afd0b8409533d
[root@kvm ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
96c3de6f5678        www.wholj.com:7.2   "/bin/sh -c 'while..."   4 seconds ago       Up 3 seconds                            agitated_elion

通過docker ps可查看到此容器處於運行狀態。
注:docker ps命令等價於docker container ls命令。

查看容器日志

要想獲取容器的輸出信息,可通過docker logs CONTAINER_ID來實現。
命令語法:

[root@kvm ~]# docker logs --help
Usage:  docker logs [OPTIONS] CONTAINER
Fetch the logs of a container
Options:
      --details        打印詳細信息
  -f, --follow         持續輸出
      --help           打印幫助信息
      --since string   輸出從某個時間開始的日志
      --tail string    輸出最近的若干日志
  -t, --timestamps     顯示時間戳信息

暫停和停止容器

主要介紹Docker容器的pause/unpause、stop和prune子命令。

  • 暫停容器
    暫停一個正在運行的容器使用docker pause CONTAINER,命令語法:
[root@kvm ~]# docker pause --help
Usage:  docker pause CONTAINER [CONTAINER...]
Pause all processes within one or more containers
Options:
      --help   打印幫助信息

查看當前處於運行狀態的容器並暫停

[root@kvm ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
96c3de6f5678        www.wholj.com:7.2   "/bin/sh -c 'while..."   24 minutes ago      Up 24 minutes                           agitated_elion
[root@kvm ~]# docker pause 96c3de6f5678
96c3de6f5678
[root@kvm ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS               NAMES
96c3de6f5678        www.wholj.com:7.2   "/bin/sh -c 'while..."   24 minutes ago      Up 24 minutes   (Paused)                       agitated_elion

docker ps命令執行返回結果前后的STATUS對比,后者多了一個(Paused),即該容器處於暫停狀態。處於paused狀態的容器,可以使用docker unpause CONTAINER_ID命令來將之恢復到運行狀態:

[root@kvm ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS               NAMES
96c3de6f5678        www.wholj.com:7.2   "/bin/sh -c 'while..."   31 minutes ago      Up 31 minutes (Paused)                       agitated_elion
[root@kvm ~]# docker unpause 96c3de6f5678
96c3de6f5678
[root@kvm ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
96c3de6f5678        www.wholj.com:7.2   "/bin/sh -c 'while..."   31 minutes ago      Up 31 minutes                           agitated_elion
  • 停止容器
    • 等待一段時間再停止
      停止一個正在運行的容器使用docker stop CONTAINER,命令語法:
[root@kvm ~]# docker stop --help
Usage:  docker stop [OPTIONS] CONTAINER [CONTAINER...]
Stop one or more running containers
Options:
      --help       打印幫助信息
  -t, --time int   Seconds to wait for stop before killing it (default 10)

該命令首先向容器發送SIGTERM信號,等待一段時間后(-t 參數指定,默認為10s),再發送SIGKILL信號來終止容器。
當執行了stop命令后,再執行docker container prune命令,會自動清除掉所有處於停止狀態的容器。
* 直接停止容器
可通過docker kill CONTAINER_ID直接發送SIGKILL信號來強行終止容器。

[root@kvm ~]# docker kill --help
Usage:  docker kill [OPTIONS] CONTAINER [CONTAINER...]
Kill one or more running containers
Options:
      --help            Print usage
  -s, --signal string   Signal to send to the container (default "KILL")
  • 當docker容器中的應用終結后,容器也會自動終止。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM