基於已有的鏡像建立html
基於已有鏡像建立只要使用dockers commit 命令。實質就是把一個容器裏面運行的鏡像程序以及該程序的運行環境打包起來生成新的鏡像docker
-m 說明信息 -a 做者信息 -p 生產過程當中中止容器的運行 docker ps -a 列出全部的容器 docker ps -l 列出最新建立的容器
建立基於已有的鏡像建立apache
docker create -it jasonlix/docker-cobbler /bin/bash #建立一個新的鏡像 docker ps -a #列出全部容器 CONTAINER ID docker守護進行在開啓的時候會給容器分配的惟一ID
經過導入操做系統模板文件能夠生成鏡像,模板從OPENVZ 開源項目下載json
wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz cat debian-7.0-x86-minimal.tar.gz | docker import - daoke:new 名字能夠自定義 docker images | grep new
除了手動生成Docker鏡像以外還可使用Dockerfile 自動生成鏡像,Dockerfile是由組指令組成文件,其中每條指令對應Linux中的一條命令,docker程序將讀取Dockerfile中的指令生成指定鏡像Dockerfil結構大體分爲四個部分,基礎鏡像信息,維護者信息,鏡像操做指令和容器啓動指令Dockerfile每條指令能夠攜帶多個參數,支持使用#開頭的註釋vim
mkdir apache cd apache vim Dockerfile vim run.sh #!/bin/bash rm -rf /run/httpd/* #清楚緩存 exec /usr/sbin/apachectl -D FOREGROUND #開啓服務exec命令用於調用並執行指令的命令。 echo "this is ssoo" > index.html # 生成主頁 //生成鏡像 docker build -t httpd:centos . //新鏡像運行容器 端口自定映射爲80端端口 docker run -d -p 1122:80 httpd:centos //測試 http://192.168.10.11:1122
隨着建立的鏡像愈來愈多,目前有公有,私有。最方便就是公有倉庫上傳和下載都須要註冊的私有也要註冊centos
docker pull registry # 私有倉庫創建 vim /etc/docker/daemon.json # 在etc/docker/目錄下建立一個json文件不然在往自定義的私用雲中上傳鏡像時回報錯 { "insecure-registries":["192.168.10.11:5000"]} # 在本地啓動一個私有倉庫監聽端口號爲5000 systemctl restart docker.service 重啓服務 docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry #下載rsgistry 搭建本地私有云 docker tag jasonlix/docker-cobbler 192.168.10.11:5000/cobbler #生成別名 docker push 192.168.10.11:5000/cobbler #上傳 The push refers to a repository [192.168.10.11:5000/cobbler] curl -XGET http://192.168.10.11:5000/v2/_catalog #查看上傳的鏡像 {"repositories":["cobbler"]} 顯示出就說明成功了
Docker的數據管理
在Docker中爲了方便查看容器內產生的數據或者將過個容器中的數據實現共享管理Docker容器中數據主要分爲兩種方式:數據卷(Data Volumes) 和數據將容器(Data Volumes Containers).緩存
數據卷bash
數據卷是一個提供容器使用的特殊目錄,位於容器中。 可將宿主機的目錄掛在到數據捲上,對數據卷修改的操做當即可見,而且更想數據不會影響。 從而實現數據在宿主機與容器之間遷移,數據卷的使用相似於Linux中的mount
數據卷容器網絡
數據卷容器就是一我的普通的容器,專門提供數據卷給其餘容器掛在使用
簡單說,就是會在源容器和接收容器之間創建一條隧道,接收容器能夠看到源容器指定的信息curl
一、建立源容器
docker run -d -P --name w1 -it httpd:centos /bin/bash 使用docker run 建立容器
二、建立接收容器,使用--link指定鏈接容器以實現容器互聯
docker run -d -P --name w2 --link w1:w1 -it httpd:centos /bin/bash
三、測試容器互聯
進入容器使用ping命令查看容器是否能互相連通
docker 守護進程經過docker0實現網絡鏈接的各類服務
docker0 Linux虛擬網橋
OSI七層模型中數據鏈路層的一種設備網橋經過make地址也就是經過物理層來劃分 在不一樣網絡中傳輸數據
Linux虛擬網橋的特色
能夠設置IP地址 相等擁有一個隱藏的虛擬網卡
一般開始IP地址是三層模型中網絡層不該該是如今二層模型上可是Linux虛擬網橋是通用網絡設備抽象的一種只要是網絡設備就能設置IP
當虛擬網橋擁有IP地址後Linux就能夠經過路由表活在IP表的規則在網絡層定義網橋就至關於擁有了隱藏的虛擬網卡
隱藏的虛擬網卡的名字就是這個虛擬網橋的名字docker0 地址劃分 IP 172.17.42.1 子網 255.255.0.0 MAC:02:42:ac:11:00:00 到02:42:ac:ff:ff 總共提供了65534 個地址 docker 根據IP範圍爲沒一個容器提供make地址 避免了衝突 docker在守護經程開啓式會建立兩端的容器中網絡設備另eth0一段也就是宿主機開啓一個veth