基于已有的镜像建立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