Docker系列之Docker容器(讀書筆記)

一、介紹

  容器是獨立運行的一個或一組應用,以及它們的運行態環境。對應的,虛擬機可以理解爲模擬運行的一整套操作系統和排在上面的應用。

二、容器

  2.1 啓動容器

  啓動容器有兩種方式,一種是基於鏡像新建一個容器並啓動,另一個是將終止狀態的容器重新啓動。

  新建並啓動:所需命令主要爲 docker run。例如下面啓動後輸出一個“Hello World”,之後終止容器。

root@VM-0-15-ubuntu:~# docker run myimage /bin/echo 'Hello World!'
Hello World!

這跟本地直接執行/bin/echo 'hello world' 幾乎感覺不到任何區別。

  下面的命令則啓動一個bash終端,允許用戶進行交互。其中 -t 選項讓Docker分配一個僞終端並綁定到容器的標準輸入上,-i  則讓容器的標準輸入保持打開。使用exit退出終端。

  當利用 docker run來創建容器時,Docker在後臺允許的標準操作包括:

  1. 檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載
  2. 醫用鏡像創建並啓動一個容器
  3. 分配一個文件系統,並在只讀的鏡像層外面掛在一層可讀寫層
  4. 從宿主主機配置的網絡接口中橋接一個虛擬接口到容器中去
  5. 從地址池配置一個ip地址給容器
  6. 執行用戶指定的應用程序
  7. 執行完畢後容器被終止

   啓動已終止容器:docker start 命令,直接將一個已終止的容器啓動運行。

   2.2 查看容器

docker ps // 查看所有正在運行容器
docker stop containerId // containerId 是容器的ID
docker ps -a // 查看所有容器
docker ps -a -q // 查看所有容器ID

  2.3 終止容器

docker stop 加容器ID //終止容器
docker stop $(docker ps -a -q) // stop停止所有容器

  2.4 守護態運行

  更多時候,需要讓Docker容器在後臺以守護態形式運行。此時,可以通過添加 -d 參數來實現。如

root@VM-0-15-ubuntu:~# docker run -d myimage
755c54ec56e25c19295b08a86aef8b2a1a65753d62b80b50dce65ca96b719403

容器啓動會返回一個唯一的id。

   2.5 進入容器

  在使用 -d 參數時,容器啓動後會進入後臺。某些時候需要進入容器進行操作,有很多種方法,包括使用 docker attach命令或 nsenter工具等。如:

root@VM-0-15-ubuntu:~# docker run -idt myimage //根據鏡像創建容器 
65763bc0fb47a05fe98529b5187588080f659f579e4c6c3e8044aca5c215a06a
root@VM-0-15-ubuntu:~# docker ps -a 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
65763bc0fb47        myimage             "/bin/bash"         42 seconds ago      Up 42 seconds                                   nostalgic_mccarthy
755c54ec56e2        myimage             "/bin/bash"         6 minutes ago       Exited (0) 6 minutes ago                        kickass_engelbart
5c05efb733f5        myimage             "/bin/bash"         20 minutes ago      Exited (0) 19 minutes ago                       sharp_varahamihira
root@VM-0-15-ubuntu:~# docker attach nostalgic_mccarthy

  2.6 刪除容器

  使用 docker rm 來刪除一個處於終止狀態的容器,如果刪除運行中的容器,可以添加 -f 參數。

  docker rm $(docker ps -a -q) // remove刪除所有容器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章