Docker的安裝及鏡像、容器的基本操做詳見博客https://blog.51cto.com/11134648/2160257
下面介紹Docker數據管理、網絡通訊以及資源控制的方法,詳細以下:web
容器的數據管理操做能夠方便查看容器內產生的數據或者將多個容器中的數據實現共享。管理Docker容器中數據主要有兩種方式:數據卷(Data Volumes)和數據卷容器(Data Volumes Containers)。docker
數據卷是一個供容器使用的特殊目錄,位於容器中,可將宿主機的目錄掛載到數據捲上,實現數據在宿主機與容器之間的遷移。centos
docker pull centos
#使用centos鏡像建立一個名爲web1的容器,而且建立兩個數據卷分別掛載到/data1與/data2目錄上 docker run -d -v /data1 -v /data2 --name web1 -it centos /bin/bash
- -i : 讓容器對的輸入保持打開
- -t : 讓Docker分配一個僞終端
- -d : 讓docker以守護形式在後臺運行
docker exec -it web1 /bin/bash ls -l
#使用centos鏡像建立一個名爲web2的容器,將宿主機的/var/www目錄掛載到容器的/data1目錄 docker run -d -v /var/www:/data1 --name web2 -it centos /bin/bash
注意:宿主機本地目錄的路徑必須使用絕對路徑,若是路徑不存在,Docker會自動建立相應的路徑。bash
cd /var/www touch file ls
docker exec -it web2 /bin/bash cd /data1 ls
實現了從宿主機到容器的數據遷移。服務器
數據卷容器就是一個普通容器,專門提供數據卷給其餘容器掛載使用。實如今容器之間共享一些數據。網絡
使用前面建立好的數據卷容器web1ide
docker run -it --volumes-from web1 --name db1 centos /bin/bash ls
cd /data2 touch file ls
docker exec -it web1 /bin/bash cd /data2 ls
這樣就能夠經過數據卷容器實現容器之間的數據共享。測試
Docker提供了映射端口到宿主機和容器互聯機制來爲容器提供網絡服務。code
Docker提供端口映射機制來將容器內的服務提供給外部網絡訪問,實質上就是提供將宿主機的端口映射到容器中,使得外部網絡訪問宿主機的端口即可訪問容器內的服務。blog
#方法一: 命令格式: docker run -d -P 鏡像名稱 其中-P(大寫)選項實現隨機映射 #方法二: 命令格式: docker run -d -p 宿主機的端口號:容器內的端口號 鏡像名稱 其中-p(小寫)選項指定要映射的端口
例如訪問容器內的httpd服務
docker run -d -P httpd:centos #隨機映射
使用docker ps -a命令查看端口的映射
docker run -d -p 49280:80 httpd:centos #指定端口映射
使用docker ps -a命令查看端口的映射
容器互聯是經過容器的名稱在容器鍵創建一條專門的網絡通訊隧道從而實現容器的互聯。簡單點說,就是在源容器和接收容器間創建一條隧道,接收容器能夠看到源容器指定的信息。
格式爲--link name:alias 其中name是要鏈接的容器名稱,alias是這個鏈接的別名
使用docker命令創建容器A,使用--name指定容器名稱爲test1.
docker run -itd -P --name test1 centos /bin/bash
使用docker run命令創建容器B,使用--name指定容器名稱爲test2,使用--link指定鏈接容器以實現容器互聯。
docker run -itd -P --name test2 --link test1:test1 centos /bin/bash
進入接收容器,使用ping命令查看是否能連通。
docker exec -it test2 /bin/bash ping test1
Docker是使用Cgroup機制進行管理的,Cgroup是Control group的簡寫,是Linux內核提供的一種限制所使用物理資源機制,這些資源主要包括CPU、內存、blkio.
--cpu-quota選項限制CPU的使用率,CPU的百分比是以1000爲單位的。
docker run --cpu-quota 20000 centos(容器名) #cpu的使用率限定爲20%
--cpu-shares設置CPU按比例共享CPU資源
docker run --cpu-shares 1024 容器A docker run --cpu-shares 1024 容器B docker run --cpu-shares 1024 容器C
--cpuset-cpus使某些程序獨享CPU內核,以便提升其處理速度
docker run --cpuset-cpus 0,1 容器名 #容器獨享 第1和第2個內核
docker run -m命令限制容器內存使用量。
docker run -m 512m 容器名 #限制容器內存512M
在一臺服務器上進行容器的混合部署,會出現同時有幾個程序寫磁盤數據的狀況,能夠經過--device-write-bps選項限制寫入的ipos,相應的還有--device-read-bps選項限制讀取的ipos。可是這個方法只能針對blkio限制的是設備,而不是分區。
例如限制容器的/dev/sda1的寫入ipos爲1MB
docker run --device-write-bps /dev/sda1:1mb 容器名