Docker簡介、經常使用命令與實踐(二)

【上一篇:Docker簡介、經常使用命令與實踐(一)】

6、Docker鏡像操做

6.1 獲取鏡像(下載鏡像到本地)

Docker Hub 上有大量的高質量的鏡像能夠用,這裏咱們就說一下怎麼獲取這些鏡像。
從 Docker 鏡像倉庫獲取鏡像的命令是 docker pull。其命令格式爲:html

docker pull [選項] [Docker Registry 地址[:端口號]/]倉庫名[:標籤]

docker中拉取指定版本的鏡像好比:linux

docker pull mongo:3.2.4

dockre pull redis:3.2

具體的選項能夠經過 docker pull --helpnginx

6.2 列出本地鏡像

要想列出已經下載下來的鏡像,可使用docker image lsdocker images命令。web

6.3 刪除本地鏡像

若是要刪除本地的鏡像,可使用 docker image rm 命令,其格式爲:redis

$ docker image rm [選項] <鏡像1> [<鏡像2> ...]

7、Docker容器操做

7.1 說在前面

/bin/bashlinux的命令行工具,相似於windowcmd進入dos系統。docker

7.2 查看容器

docker ps   #查看啓動的容器

docker ps -a   #查看全部容器,包含沒有啓動的容器

7.3 啓動容器

    啓動容器有兩種方式,一種是基於鏡像新建一個容器並啓動,另一個是將在終止狀態(stopped)的容器從新啓動。
    由於 Docker 的容器實在過輕量級了,不少時候用戶都是隨時刪除和新建立容器。 編程

語法:ubuntu

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

COMMAND: 容器啓動後進入容器中要執行的命令.segmentfault

OPTIONS:(經常使用選項)centos

-d: 讓 Docker 在後臺運行而不是直接把執行命令的結果輸出在當前宿主機下
-t: 選項讓Docker分配一個僞終端(pseudo-tty)並綁定到容器的標準輸入上, 
-i: 則讓容器的標準輸入保持打開。
-name:爲容器命名
-v:  建立數據卷
-p:  綁定端口

7.3.1 基於鏡像新建一個容器並啓動

docker run

docker run命令有兩個參數,一個是鏡像名,一個是要在鏡像中運行的命令

例如:

docker run -p 5000:5000 –name web training/webapp

7.3.2 後臺運行

    更多的時候,須要讓 Docker 在後臺運行而不是直接把執行命令的結果輸出在當前宿主機下。此時,能夠經過添加 -d 參數來實現。

$ docker run -d  CONTAINER [CONTAINER...]

例如:

docker run –d –p 5000:5000 training/webapp

7.3.3 交互運行

啓動一個 bash 終端,容許用戶進行交互。

$ docker run -it  CONTAINER [CONTAINER...]  /bin/bash

-t:選項讓Docker分配一個僞終端(pseudo-tty)並綁定到容器的標準輸入上, 
-i: 則讓容器的標準輸入保持打開。

在交互模式下,用戶能夠經過所建立的終端來輸入linux命令

例如:建立centos容器而且進入centos容器中

docker run -it centos /bin/bash

7.4 終止容器

$ docker stop  CONTAINER [CONTAINER...]

例如:

docker run –d –p 5000:5000 training/webapp

7.5 啓動一箇中止的容器

$ docker start CONTAINER [CONTAINER...]

例如:

docker stop web

7.6 重啓容器

$ docker restart CONTAINER [CONTAINER...]

例如:

docker restart web

7.7 刪除容器

$ docker rm  CONTAINER [CONTAINER...]

例如:

docker rm web

7.8 獲取容器的輸出信息

$ docker logs CONTAINER [CONTAINER...]

例如:

docker logs web

7.9 進入容器

docker exec :在運行的容器中執行命令

語法

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS說明:

-d :分離模式: 在後臺運行

-i :即便沒有附加也保持STDIN 打開

-t :分配一個僞終端

$ docker exec –it  CONTAINER /bin/bash

例如:

docker exec –it   web

7.10 主機和容器間拷貝

7.10.1.容器拷貝到主機

docker cp ed0f8bb24f3e:/opt/webapp/app.py   d:/www

ed0f8bb24f3e: 容器id
/opt/webapp/app.py: 容器中的文件
d:/www: 主機文件夾

7.10.2.主機拷貝到容器

docker cp d:/www/文件  ed0f8bb24f3e:/opt/webapp/

7.11 給鏡像打上標籤(tag)

tag的做用主要有兩點:一是爲鏡像起一個容易理解的名字,二是能夠經過docker tag來從新指定鏡像的倉庫,這樣在push時自動提交到倉庫。

將同一IMAGE_ID的全部tag,合併爲一個新的

# docker tag 195eb90b5349 seanlook/ubuntu:rm_test

新建一個tag,保留舊的那條記錄

# docker tag Registry/Repos:Tag New_Registry/New_Repos:New_Tag

8、數據卷

8.1 什麼是數據卷

數據卷 是一個可供一個或多個容器使用的特殊目錄,能夠繞過聯合文件系統(UFS),爲一個或多個容器提供訪問。數據卷設計的目的在於對數據的持久化,它徹底獨立於容器的生命週期,所以Docker不會在刪除容器時刪除其掛載的數據卷,也不會存在相似垃圾收集的機制。
數據卷提供不少有用的特性:

  1. 數據卷 能夠在容器之間共享和重用
  2. 對數據卷的修改會立馬生效
  3. 對數據卷的更新,不會影響鏡像
  4. 數據卷默認會一直存在,即便容器被刪除

注意:數據卷的使用,相似於Linux下對目錄或文件進行mount,鏡像中的被指定爲掛載點的目錄中的文件會隱藏掉,能顯示看的是掛載的數據卷。

8.2 爲何要使用數據卷

將本地主機中的代碼運行在docker容器中。

8.3 掛載數據卷的前提

受權本地磁盤

clipboard.png

8.4 掛載一個主機目錄做爲數據卷

8.4.1 第一種掛起一個數據卷

運行一個nginx容器 ,-v 掛起一個卷,nginx用來訪問網頁的地址 , -d 以守護進程來運行,--name 給一個名字

docker run -d --name nginx -v /usr/share/nginx/html/ nginx

  

檢查容器的運行狀態

docker inspect nginx

clipboard.png

對index.html文件作一些改動

echo "hello docker" > index.html

clipboard.png

8.4.2 第二種經過本地目錄掛載到容器裏面的數據卷中去

docker run -p 8090:80 -d -v $PWD/html:/usr/share/nginx/html nginx

docker run -d -v d:/www/webapp:/opt/webapp  training/webapp

clipboard.png

8.4.3 第三種建立一個僅僅提供數據的容器,把這個容器當作volume掛載到其它容器裏面去

# -v 表示的是volume(數據卷)  --name 名字 nginx 是這個容器的基礎鏡像
docker create -v $PWD/data:/usr/share/nginx/html --name data_container nginx

運行一個新的容器,把上面提供數據的容器當作數據卷掛載到當前的容器中運行,-it表示交互的方式運行,會直接進入到這個容器中

docker run -it --volumes-from data_container nginx /bin/bash  
root@772cbe131d01:/usr/share/nginx/html# echo "Hello Nginx&Docker" > index.html

退出容器查看data目錄:

clipboard.png

9、常見疑問

  • Docker的容器是以鏡像來建立的,鏡像是否是一個相似操做系統的環境?
是的,你能夠將Docker理解爲一個輕量化的虛擬機,至於咱們常常說的什麼Tomcat鏡像、MySQL鏡像之類的,只是這個輕量化的虛擬機中安裝了相應的軟件。鏡像的名字也就說明了鏡像的功能。
  • 是否是到正式環境上還要安裝Docker,而後把應用部署在其中?
是的,構建Docker鏡像、運行Docker容器,都須要安裝Docker,但這是一勞永逸的,由於咱們使用的是安裝了各類各樣功能軟件的Docker鏡像和Docker容器。

參考教程:Docker之編程環境應用

相關文章
相關標籤/搜索