Docker數據管理、網絡通訊以及資源控制

Docker的安裝及鏡像、容器的基本操做詳見博客https://blog.51cto.com/11134648/2160257
下面介紹Docker數據管理、網絡通訊以及資源控制的方法,詳細以下:web

Doker數據管理

容器的數據管理操做能夠方便查看容器內產生的數據或者將多個容器中的數據實現共享。管理Docker容器中數據主要有兩種方式:數據卷(Data Volumes)和數據卷容器(Data Volumes Containers)。docker

1、數據卷

數據卷是一個供容器使用的特殊目錄,位於容器中,可將宿主機的目錄掛載到數據捲上,實現數據在宿主機與容器之間的遷移。centos

1.下載鏡像centos

docker pull centos

2.建立數據卷

#使用centos鏡像建立一個名爲web1的容器,而且建立兩個數據卷分別掛載到/data1與/data2目錄上
docker run -d -v /data1 -v /data2 --name web1 -it centos /bin/bash

Docker數據管理、網絡通訊以及資源控制

  • -i : 讓容器對的輸入保持打開
  • -t : 讓Docker分配一個僞終端
  • -d : 讓docker以守護形式在後臺運行

3.進入容器查看/data1與/data2目錄

docker exec -it web1 /bin/bash

ls -l

Docker數據管理、網絡通訊以及資源控制

4.掛載主機目錄做爲數據卷

#使用centos鏡像建立一個名爲web2的容器,將宿主機的/var/www目錄掛載到容器的/data1目錄
docker run -d -v /var/www:/data1 --name web2 -it centos /bin/bash

Docker數據管理、網絡通訊以及資源控制
注意:宿主機本地目錄的路徑必須使用絕對路徑,若是路徑不存在,Docker會自動建立相應的路徑。bash

5.在宿主機的/var/www目錄下建立一個文件file

cd /var/www

touch file

ls

Docker數據管理、網絡通訊以及資源控制

6.進入運行着的容器中,到相應掛載目錄/data1目錄下查看

docker exec -it web2 /bin/bash

cd /data1

ls

Docker數據管理、網絡通訊以及資源控制
實現了從宿主機到容器的數據遷移。服務器

2、數據卷容器

數據卷容器就是一個普通容器,專門提供數據卷給其餘容器掛載使用。實如今容器之間共享一些數據。網絡

1.建立一個容器做爲數據卷容器

使用前面建立好的數據卷容器web1ide

2.使用--volumes-from來掛載web1容器中的數據捲到新的容器,新的容器名爲db1

docker run -it --volumes-from web1 --name db1 centos /bin/bash

ls

Docker數據管理、網絡通訊以及資源控制

3.在db1容器的數據卷/data2目錄下建立一個文件file

cd /data2

touch file

ls

Docker數據管理、網絡通訊以及資源控制

4.在web1容器中的/data2目錄中查看建立的file文件

docker exec -it web1 /bin/bash

cd /data2

ls

Docker數據管理、網絡通訊以及資源控制
這樣就能夠經過數據卷容器實現容器之間的數據共享。測試

Docker網絡通訊

Docker提供了映射端口到宿主機和容器互聯機制來爲容器提供網絡服務。code

1、端口映射

Docker提供端口映射機制來將容器內的服務提供給外部網絡訪問,實質上就是提供將宿主機的端口映射到容器中,使得外部網絡訪問宿主機的端口即可訪問容器內的服務。blog

#方法一:
命令格式: docker run -d -P 鏡像名稱
其中-P(大寫)選項實現隨機映射

#方法二:
命令格式: docker run -d -p 宿主機的端口號:容器內的端口號 鏡像名稱
其中-p(小寫)選項指定要映射的端口

例如訪問容器內的httpd服務

1.端口隨機映射

docker run -d -P httpd:centos   #隨機映射

使用docker ps -a命令查看端口的映射
Docker數據管理、網絡通訊以及資源控制

2.指定端口映射

docker run -d -p 49280:80 httpd:centos #指定端口映射

使用docker ps -a命令查看端口的映射
Docker數據管理、網絡通訊以及資源控制

2、容器互聯

容器互聯是經過容器的名稱在容器鍵創建一條專門的網絡通訊隧道從而實現容器的互聯。簡單點說,就是在源容器和接收容器間創建一條隧道,接收容器能夠看到源容器指定的信息。

格式爲--link name:alias
其中name是要鏈接的容器名稱,alias是這個鏈接的別名

1.建立源容器

使用docker命令創建容器A,使用--name指定容器名稱爲test1.

docker run -itd -P --name test1  centos  /bin/bash

Docker數據管理、網絡通訊以及資源控制

2.建立接收容器

使用docker run命令創建容器B,使用--name指定容器名稱爲test2,使用--link指定鏈接容器以實現容器互聯。

docker run -itd  -P --name test2 --link test1:test1 centos  /bin/bash

Docker數據管理、網絡通訊以及資源控制

3.測試容器互聯

進入接收容器,使用ping命令查看是否能連通。

docker exec -it test2 /bin/bash 
ping test1

Docker數據管理、網絡通訊以及資源控制

Docker資源控制

Docker是使用Cgroup機制進行管理的,Cgroup是Control group的簡寫,是Linux內核提供的一種限制所使用物理資源機制,這些資源主要包括CPU、內存、blkio.

1、對CPU的控制

1.限制CPU的使用速率

--cpu-quota選項限制CPU的使用率,CPU的百分比是以1000爲單位的。

docker run --cpu-quota 20000 centos(容器名)    #cpu的使用率限定爲20%

2.多任務按比例分享CPU

--cpu-shares設置CPU按比例共享CPU資源

docker run --cpu-shares 1024 容器A
docker run --cpu-shares 1024 容器B
docker run --cpu-shares 1024 容器C

3.限制CPU內核使用

--cpuset-cpus使某些程序獨享CPU內核,以便提升其處理速度

docker run --cpuset-cpus 0,1 容器名       #容器獨享 第1和第2個內核

2、對內存使用的限制

docker run -m命令限制容器內存使用量。

docker run -m 512m 容器名      #限制容器內存512M

3、對blkio的限制

在一臺服務器上進行容器的混合部署,會出現同時有幾個程序寫磁盤數據的狀況,能夠經過--device-write-bps選項限制寫入的ipos,相應的還有--device-read-bps選項限制讀取的ipos。可是這個方法只能針對blkio限制的是設備,而不是分區。

例如限制容器的/dev/sda1的寫入ipos爲1MB

docker run --device-write-bps /dev/sda1:1mb 容器名
相關文章
相關標籤/搜索