Docker數據管理、網絡通信以及資源控制
下面介紹Docker數據管理、網絡通信以及資源控制的方法,詳細如下:
Doker數據管理
容器的數據管理操作可以方便查看容器內產生的數據或者將多個容器中的數據實現共享。管理Docker容器中數據主要有兩種方式:數據卷(Data Volumes)和數據卷容器(Data Volumes Containers)。
一、數據卷
數據卷是一個供容器使用的特殊目錄,位於容器中,可將宿主機的目錄掛載到數據卷上,實現數據在宿主機與容器之間的遷移。
1.下載鏡像centos
docker pull centos
2.創建數據卷
#使用centos鏡像創建一個名為web1的容器,並且創建兩個數據卷分別掛載到/data1與/data2目錄上
docker run -d -v /data1 -v /data2 --name web1 -it centos /bin/bash
- -i : 讓容器對的輸入保持打開
- -t : 讓Docker分配一個偽終端
- -d : 讓docker以守護形式在後臺運行
3.進入容器查看/data1與/data2目錄
docker exec -it web1 /bin/bash
ls -l
4.掛載主機目錄作為數據卷
#使用centos鏡像創建一個名為web2的容器,將宿主機的/var/www目錄掛載到容器的/data1目錄 docker run -d -v /var/www:/data1 --name web2 -it centos /bin/bash
註意:宿主機本地目錄的路徑必須使用絕對路徑,如果路徑不存在,Docker會自動創建相應的路徑。
5.在宿主機的/var/www目錄下創建一個文件file
cd /var/www
touch file
ls
6.進入運行著的容器中,到相應掛載目錄/data1目錄下查看
docker exec -it web2 /bin/bash
cd /data1
ls
實現了從宿主機到容器的數據遷移。
二、數據卷容器
數據卷容器就是一個普通容器,專門提供數據卷給其他容器掛載使用。實現在容器之間共享一些數據。
1.創建一個容器作為數據卷容器
使用前面創建好的數據卷容器web1
2.使用--volumes-from來掛載web1容器中的數據卷到新的容器,新的容器名為db1
docker run -it --volumes-from web1 --name db1 centos /bin/bash
ls
3.在db1容器的數據卷/data2目錄下創建一個文件file
cd /data2
touch file
ls
4.在web1容器中的/data2目錄中查看創建的file文件
docker exec -it web1 /bin/bash
cd /data2
ls
這樣就可以通過數據卷容器實現容器之間的數據共享。
Docker網絡通信
Docker提供了映射端口到宿主機和容器互聯機制來為容器提供網絡服務。
一、端口映射
Docker提供端口映射機制來將容器內的服務提供給外部網絡訪問,實質上就是提供將宿主機的端口映射到容器中,使得外部網絡訪問宿主機的端口便可訪問容器內的服務。
#方法一:
命令格式: docker run -d -P 鏡像名稱
其中-P(大寫)選項實現隨機映射
#方法二:
命令格式: docker run -d -p 宿主機的端口號:容器內的端口號 鏡像名稱
其中-p(小寫)選項指定要映射的端口
例如訪問容器內的httpd服務
1.端口隨機映射
docker run -d -P httpd:centos #隨機映射
使用docker ps -a命令查看端口的映射
2.指定端口映射
docker run -d -p 49280:80 httpd:centos #指定端口映射
使用docker ps -a命令查看端口的映射
二、容器互聯
容器互聯是通過容器的名稱在容器鍵建立一條專門的網絡通信隧道從而實現容器的互聯。簡單點說,就是在源容器和接收容器間建立一條隧道,接收容器可以看到源容器指定的信息。
格式為--link name:alias
其中name是要連接的容器名稱,alias是這個連接的別名
1.創建源容器
使用docker命令建立容器A,使用--name指定容器名稱為test1.
docker run -itd -P --name test1 centos /bin/bash
2.創建接收容器
使用docker run命令建立容器B,使用--name指定容器名稱為test2,使用--link指定連接容器以實現容器互聯。
docker run -itd -P --name test2 --link test1:test1 centos /bin/bash
3.測試容器互聯
進入接收容器,使用ping命令查看是否能連通。
docker exec -it test2 /bin/bash
ping test1
Docker資源控制
Docker是使用Cgroup機制進行管理的,Cgroup是Control group的簡寫,是Linux內核提供的一種限制所使用物理資源機制,這些資源主要包括CPU、內存、blkio.
一、對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個內核
二、對內存使用的限制
docker run -m命令限制容器內存使用量。
docker run -m 512m 容器名 #限制容器內存512M
三、對blkio的限制
在一臺服務器上進行容器的混合部署,會出現同時有幾個程序寫磁盤數據的情況,可以通過--device-write-bps選項限制寫入的ipos,相應的還有--device-read-bps選項限制讀取的ipos。但是這個方法只能針對blkio限制的是設備,而不是分區。
例如限制容器的/dev/sda1的寫入ipos為1MB
docker run --device-write-bps /dev/sda1:1mb 容器名
Docker數據管理、網絡通信以及資源控制