1. 程式人生 > >操作docker容器

操作docker容器

操作docker容器

創建容器

docker create

常用參數:

--name:為容器分配一個名字

-v | --volume :為容器綁定安裝一個卷,例如-v /data 會為容器創建一個/data分區出來

-a, --attach


例如:

# docker create -it ubuntu:latest
2434968ec612b085b4b34e93f9858fdc36fb94e2a4527966a14ef93e1a18a00f

# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
2434968ec612        ubuntu:latest       "/bin/bash"         3 seconds ago       Created                                      mystifying_proskuriakova


啟動容器

docker start

使用docker create創建的容器處於停止狀態,可以使用docker start命令啟動

# docker start  mystifying_proskuriakova

# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                   PORTS               NAMES
2434968ec612        ubuntu:latest       "/bin/bash"         About a minute ago   Up 3 seconds                                 mystifying_proskuriakova


停止容器

docker stop [-t|--time[=10]] [CONTAINER...]

首先向容器發送SIGTERM信號,等待超過一段時間後(默認為10秒)後,再發送SIGKILL信號來終止容器


重啟容器

docker restart


進入容器

attach

使用-d參數時,容器啟動後會進入後臺,用戶無法看到容器中的信息,這時候要進入容器可以使用attach或者exec或者第三方的nsenter工具等。

docker attach [--detach-keys[=[]]] [--no-stdin] [--sig-proxy[=true]]  CONTAINER

--detach-keys[=[]]:指定退出attach模式的快捷鍵序列,默認是CTRL-p CTRL-q

--no-stdin=true | false:是否關閉標準輸入,默認是保持打開。

--sig-proxy=true | false :是否代理收到的系統信息給應用進程,默認為true

如:

##創建並啟動一個容器 名為test
# docker run -itd --name test  ubuntu:latest       
3a4a6614acbfc820f5da3983527e3e585946f27393fab17b1ce09adb7c757206

##查看容器進程
[root@OPS01-LINTEST02 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
3a4a6614acbf        ubuntu:latest       "/bin/bash"         4 seconds ago       Up 3 seconds                            test

##連接到該容器
[root@OPS01-LINTEST02 ~]# docker attach test
root@3a4a6614acbf:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

註意:使用attach連接到容器時,如果多個窗口同時使用attach連接到同一個容器時,所有窗口都會同步顯示。當某個窗口因命令阻塞時,其他窗口也無法執行操作


exec命令

從docker1.3版本開始提供更加方便的exec命令,可以在容器內直接執行任意命令,用法為

docker exec [-d|-detach] [--detach-keys[=[]]] [-i|--interactive] [--privileged] [-t|--tty] [-u|--user[=USER]] CONTAINER COMMAND [ARG...]
  • -i, --interactive=true|false:打開標準輸入接受用戶輸入命令,默認為false;

  • --privileged=true|false: 是否給執行命令最高權限,默認為false

  • -t, --tty=true|false:分配偽終端

  • -u, --user="":執行命令的用戶名或ID

例如:

進入到前面創建的容器中

 docker exec -it test /bin/bash

在容器中執行ls命令

root@3a4a6614acbf:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr


刪除容器

docker rm [-f|--force] [-l|--link] [-v|--volumes] CONTAINER [CONTAINER...]

主要支持的選項:

  • -f, --force=false:是否強制終止並刪除一個運行中的容器

  • -l, --link=false:刪除容器的連接,但保留容器

  • -v, --volumes=false:刪除容器掛載的數據卷

默認情況下,docker rm只能刪除處於終止狀態的容器,如果要刪除運行狀態的容器,可以使用-f參數,docker會先發送SIGKILL信號給容器,終止其應用,然後刪除容器


導入導出容器

有時候需要將容器從一個系統遷移到另一個系統,可以使用導入導出功能

1、導出容器

導出一個已經創建的容器到文件,不管此時容器是否處於運行狀態,可以使用docker export 命令,用法:

docker export [-o|--output [=""]] CONTAINER

-o:指定導出的tar文件名

例如:

# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
3a4a6614acbf        ubuntu:latest       "/bin/bash"         41 minutes ago      Up 25 minutes                           test

# docker export -o test_for_run.tar test

# ls
test_for_run.tar

導出之後,就可以將文件上傳到其他機器上,使用導入命令導入到系統中,從而實現容器的遷移


2、導入容器

導出的test_for_run.tar文件可以使用import命令導入變成鏡像,該命令格式為:

docker import [-c --change[=[]]] [-m|--message[=MESSAGE]] file|URL|-REPOSITORY[:TAG]

用戶可以通過-c,--change=[] 選項在導入的同時執行對容器進行修改的Dockerfile指令

# docker import test_for_run.tar ubuntu:v1.0       
sha256:2c82ae3a0afe67122ce5fabe397025bc19bffef5c2a6b873098567846c00cfdc

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              v1.0                2c82ae3a0afe        1 second ago        69.8MB
ubuntu              v1                  c4af03e0f787        22 hours ago        87MB
ubuntu              14.04               578c3e61a98c        7 days ago          223MB
ubuntu              latest              113a43faa138        7 days ago          81.1MB
nginx               latest              cd5239a0906a        7 days ago          109MB
centos              7                   49f7960eb7e4        8 days ago          200MB
centos              latest              49f7960eb7e4        8 days ago          200MB
centos              6                   70b5d81549ec        2 months ago        195MB











操作docker容器