docker 學習筆記——第三集(container)

docker 容器

容器是經過 image 建立的進程。程序員

鏡像(Image)和容器(Container)的關係,就像是面向對象程序設計中的 類 和 實例 同樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器能夠被建立、啓動、中止、刪除、暫停等。

新建並啓動容器

下面的命令的含義:經過 Ubuntu:18.04 這個 image 建立一個容器並運行 /bin/echo 'Hello world',完成後中止該容器。docker

$ docker run ubuntu:18.04 /bin/echo 'Hello world'
Hello world

使用 docker run 命令,後臺實際上執行的內容爲:ubuntu

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

上面的示例執行完之後會終止,可是通常咱們在使用一個提供服務的容器的時候,不想讓它中止,那麼可使用 -d 參數,使容器保持在後臺運行。可是須要注意——容器是否會長久運行,是和 docker run 指定的命令有關,和 -d 參數無關bash

以下命令執行完後,容器依然會中止spa

$ docker run -d ubuntu

已中止

而以下命令執行完後,容器則在後臺保持運行設計

$ docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

運行中

進入容器

attach 命令

$ docker run -dit ubuntu
ffff9516c6151ef3b436df1bccc70ba9da2d0f57bbec5afe19353fe481e12702

$ docker container ls
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                                      NAMES
ffff9516c615        ubuntu                  "/bin/bash"              7 seconds ago       Up 6 seconds                                                   elegant_hypatia

$ docker attach ffff9516c615
root@ffff9516c615:/#

注意: 若是從這個 stdin 中 exit,會致使容器的中止。rest

exec 命令(推薦使用,通常配合 -it 參數)

$ docker run -dit ubuntu
15fc4d97c1b4ea25d76e568fb4e695d5b48d7f13ebbb6d718a80b86a4764a005

// 只用 -i 參數時,因爲沒有分配僞終端,界面沒有咱們熟悉的 Linux 命令提示符,但命令執行結果仍然能夠返回。
$ docker exec -i 15fc4d97c1b4ea25 bash
ls
bin
boot
dev
etc
...

//當 -i -t 參數一塊兒使用時,則能夠看到咱們熟悉的 Linux 命令提示符。
$ docker exec -it 15fc4d97c1b4ea25 bash
root@15fc4d97c1b4:/#

注意:若是從這個 stdin 中 exit,不會致使容器的中止。code

容器經常使用命令

  1. docker container ls --all 查看當前系統中的全部(運行中、已中止的)容器
  2. docker container start XXX 把已經中止的 XXX 容器啓動
  3. docker container stop XXX 把運行總的 XXX 容器中止
  4. docker container restart XXX 從新啓動運行中的 XXX 容器
  5. docker container prune 刪除全部處於中止狀態的容器

程序員的藝術人生

相關文章
相關標籤/搜索