容器的常用操作

docker run -i -t  /bin/bash

使用image建立container並進入互動模式, login shell是/bin/bash

例項:

  1. $ docker run -it ubuntu /bin/bash    

  2. root@946be96acd5f:/#      

  3. root@946be96acd5f:/# exit    

  4. exit  

exit後容器將不在執行

docker start -i

啟動一個container並進入互動模式

例項:

  1. # docker ps -a    

  2. CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES    

  3. 648944eeef8a        ubuntu              "/bin/bash"         8 seconds ago       Exited (0) 6 seconds ago                       suspicious_feynman        

  4. root@ubun:~# docker start -i 648944eeef8a    

  5. root@648944eeef8a:/#

docker exec

  1. 通過宿主機在正在執行的容器上執行命令。
    通過宿主機在容器上建立檔案

  1. $ docker exec 87cb69be18bb touch /root/abc.txt    

  1. 可通過exec命令從正在執行的容器上申請一個終端,執行shell

  1. $ docker exec -it 87cb69be18bb /bin/bash    

docker ps

預設顯示正在執行中的container

docker ps –a

顯示所有的container,包括未執行的 例項:

  1. $ docker ps    

  2. CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES    

  3. $ docker ps -a    

  4. CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                          PORTS               NAMES    

  5. 946be96acd5f        ubuntu              "/bin/bash"         About a minute ago   Exited (0) About a minute ago                       thirsty_mclean  

docker ps –l

顯示最後一次建立的container,包括未執行的

docker start/stop/restart

開啟/停止/重啟container

docker容器和映象遷移

docker的備份方式有export和save兩種。

  • docker export當前狀態的容器,通過docker import進行恢復;

  • docker save針對的是映象,通過docker load進行恢復。

save

1.找出要儲存的映象名稱.

  1. $ docker images    

  2. REPOSITORY        TAG               IMAGE ID          CREATED           VIRTUAL SIZE    

  3. memcached         v0.1              291272444a64      7 weeks ago         212 MB

2.備份映象

  1. $ docker save memcached:v0.1 >memcached_bak.tar

3.恢復映象
將映象scp到目標伺服器,恢復映象

  1. $ docker load < memcached_bak.tar

4.檢視映象

  1. $ docker images    

  2. REPOSITORY        TAG               IMAGE ID          CREATED           VIRTUAL SIZE    

  3. memcached         v0.1              291272444a64      7 weeks ago         212 MB

export

1.找出要儲存的容器ID或名稱

  1. $ docker ps|grep memcached

2.備份容器

  1. $ docker export memcached > memcached_bak.tar

3.恢復成映象

  1. $ docker import memcached_bak.tar memcached

4.檢視映象

  1. $ docker images    

  2. REPOSITORY      TAG             IMAGE ID            CREATED              VIRTUAL SIZE    

  3. memcached      latest           51af4462e58b        About a minute ago      250.5 MB

兩者區別

匯出後再匯入(export-import)的映象會丟失所有的歷史和層資訊,而儲存後再載入(save-load)的映象沒有丟失歷史和層 (layer)。這意味著使用匯出後再匯入的方式,你將無法回滾到之前的層(layer),同時,使用儲存後再載入的方式持久化整個映象,就可以做到層回滾.

未完待續.....