Dockers 快速學習(四)Docker 容器的使用

Docker 容器的使用


一、容器間的連接:

運行一個容器,給它一個名稱,例如:docker

docker run -d -p 0.0.0.0:4455:22 -p 0.0.0.0:8080:80 --name one centos6-ssh

再運行另外一個容器shell

docker run -d -p 0.0.0.0:4456:22 -p 0.0.0.0:8088:80 --link /one:two centos6-ssh2 env

說明:centos

/one:two 網絡

one是第一個容器的名稱,two是第二個容器的名稱,ssh

env是打印出來 第二個容器的環境變量tcp

這樣兩容器就創建起一個網絡通道,one和two容器所開放的端口也就是Dockerfile文件中定義開放的端口就能夠連通了,spa

在宿主機上使用iptables命令來查看,例如:設計

iptables -L -n
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  172.17.1.28          172.17.1.29         tcp spt:3306 
ACCEPT     tcp  --  172.17.1.29          172.17.1.28         tcp dpt:3306 
ACCEPT     tcp  --  172.17.1.28          172.17.1.29         tcp spt:22 
ACCEPT     tcp  --  172.17.1.29          172.17.1.28         tcp dpt:22

從這裏看到兩個容器間端口能夠互相的訪問了,code

說明:ip

這裏的端口是以one這個容器所開放的端口,如one開放22,3306,而two容器只開放了22,在two上也會放3306給one,反之就不行了。--link是以鏈接容器開放的端口爲準的。

二、Docker 容器下數據卷的理解

一個數據卷就是通過特殊設計的,在一個或多個容器中經過UFS文件系統提供的一些特性 

實現數據持久化或共享.

數據卷能夠在容器之間共享和重複利用

能夠對數據卷裏的內容直接進行修改

對鏡像的更新不會改變數據卷的內容

卷會一直持續到沒有容器使用他們

2.一、添加一個數據卷

可使用帶有 -v 參數的 docker run 命令給容器添加一個數據卷.

docker run -d -p 0.0.0.0:4445:22 --name data -v /data centos6-ssh

這個在容器裏就會有一個/data的卷

在Dockefile中使用VOLUME指令來建立添加一個或多個數據卷

2.二、掛載宿主文件夾到數據卷

使用-v參數也能夠掛載宿主的文件夾到容器裏

docker run -d -p 0.0.0.0:44455:22 --name data1 -v /src/data:/opt/data centos6-ssh

這樣會把本地的/src/data文件夾掛在容器/opt/data目錄

宿主機上的文件夾必須是絕對路徑,並且當文件夾不存在時會自動建立

此功能在Dockerfile文件中沒法使用

默認狀況下Docker以讀寫權限掛載數據卷,可是咱們也能夠以只讀方式進行掛載

docker run -d -p 0.0.0.0:44455:22 --name data1 -v /src/data:/opt/data:ro centos6-ssh

仍是上面的那個命令,只是咱們添加了一個ro選項來制定掛載時文件權限應該是隻讀的

2.三、建立和掛在一個數據卷容器

若是一些數據須要在容器間共享最好的方式來建立一個數據卷容器,而後從數據卷容器中掛載數據

1\建立一個帶有命名容器來共享數據
 docker run -d -v /dbdata --name dbdata centos6-ssh
2\在另外一個容器中使用--volumes-from標記掛在/dbdata卷
docker run -d --volumes-from dbdata --name db1 centos6-ssh2
3\在另外一個容器中同時也掛載/dbdata卷
docker run -d --volumes-from dbdata --name db2 centos6-ssh3


可使用多個 -–volumes-from 參數來把多個容器中的多個數據卷放到一塊兒

能夠掛載經過掛載dbdata容器實現的容器db1和db2來擴展關係鏈,例如:

docker run -d --name db2 --volumes-from db1 centos6-ssh4

2.四、備份,恢復,遷移數據

使用它們來進行備份,恢復或遷移數據.以下所示,咱們使用 

–volumes-from 標記來建立一個掛載了要備份數據卷的容器.

docker run --volumes-from dbdata -v $(pwd):/backup centos6-ssh tar cvf /backup/backup.tar /dbdata

這裏咱們建立並登陸了一個新容器,掛載了dbdata容器中的數據卷,並把本地的一個目錄掛載了/backup下,最後再傳一條tar命令來備份dbdata捲到/backup下,當命令執行完成後容器就會中止運行,並保留dbdata的備份,在本地目錄下會一個備份的文件

注:新建立的容器中要有tar命令,

獲得備份數據就能夠恢復或遷移數據了

相關文章
相關標籤/搜索