一.docker中对volume(卷)的操作
1.不指定宿主机挂载目录,在镜像中直接就有目录/data1
docker run -it --name vm1 -v /data1 ubuntu
2.在镜像中利用df命令,可以查看到在镜像中/data1在宿主机中挂载
3.在真机中利用df命令可以看到
shm 65536 0 65536 0% /var/lib/docker/containers/8d6ac6efac9fa95b65747dcf8a8a8f30eccb108d737f774d3ef7d80cfe8bae02/shm
说明容器中的和数据挂载在真机中的该目录下;
4. 查看容器vm1在真宿主机挂载的绝对路径
docker inspect vm1 | grep volume
cd /var/lib/docker/volumes/8c947da23e3c3073dc4dc6f873f0b30d495289edd39db3183682c4d0d2254669/_data
cp /etc/passwd .
docker container attach vm1
cd data1/
ls passwd # 可以查看到在真机中的复制过来的passwd(更加清楚的说明宿主机与容器间数据的关系)
5.不用指定挂载的源文件所在位置,也可以直接在真机中看到nginx中的数据
docker run -d --name vm2 -v /usr/share/nginx/html nginx
docker inspect vm2 | grep volume
cd /var/lib/docker/volumes/b7f1f53c614f91799abcf9945383057f6c695fba9083a11ee39f526925109f78/_data
ls
6.删除卷组
docker rm -v vm2 # 直接删除容器和卷组
二.创建卷组镜像
在打开别的镜像的时候,可以直接挂载这个卷
1.建立创建镜像的目录
cd /tmp/docker/
mkdir test
mkdir nginx/html/
vim index.html
hello jay
tar cf html.tar nginx/
2.编辑Dockerfile文件
vim Dockerfile
FROM rhel7 # 初始镜像是rhel7
ADD html.tar /usr/share # 对html.tar解压后index.html所在路径是/usr/share/nginx/html/index.html
VOLUME ["/usr/share/nginx/html"] # 卷组所在位置是/usr/share/nginx/html
6.封装虚拟机
docker build -t rhel7:v5 .
7.利用封装的虚拟机创建一个卷组
docker create --name volume rhel7:v5 bash
利用创建的卷组创建一个容器,直接带有卷组中的文件
docker run -d --name vm7 --volumes-from volume nginx
三.docker容器间的互联
Dockerfile 可以让用户管理一个单独的应用容器;而 Compose 则允许用户在一个模板(YAML格式)中定义一组相关联的应用容器(被称为一个 project,即项目)
我们可以利用docker-compose工具建立容器之间的互联,创建一个高可用集群:
1.创建存放/tmp/docker/compose的目录
cd /tmp/docker/compose
mkdir compose
2.编辑docker-compose.yml文件
cd compose/
vim docker-compose.yml
apache:
image: rhel7:v1 # 提供httpd服务的apache镜像
expose:
- 80 # 端口80
volumes:
- ./web:/var/www/html # 默认发布目录,当前物理主机的web目录下
nginx:
image: nginx # 提供httpd服务的nginx镜像
expose:
- 80 # 端口80
haproxy:
image: haproxy # 高可用haproxy镜像
volumes:
- ./haproxy:/usr/local/etc/haproxy # haproxy镜像中配置文件所在的目录
links:
- apache
- nginx # 容器间的互联
ports:
- "8080:80" # 物理机对外端口8080,容器端口是80
expose:
- 80
haproxy镜像中配置文件所在的目录:
cd web/
vim index.html # 编辑apache的默认发布目录
hello jay
3.编辑proxy高可用的配置文件
mkdir haproxy
cd haproxy/
vim haproxy.cfg # 编辑haproxy的配置文件
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
stats uri /status
frontend balancer
bind 0.0.0.0:80
default_backend web_backends
backend web_backends
balance roundrobin
server web1 apache:80 check # 后端真实服务器
server web2 nginx:80 check
4.下载docker-compose工具:
docker-compose-Linux-x86_64-1.22.0
对docker-compose工具执行权限
chmod +x docker-compose-Linux-x86_64-1.22.0
创建软连接,方便版本更新
ln -s docker-compose-Linux-x86_64-1.22.0 docker-compose
5.利用docker-compose打开服务,在浏览器中验证高可用
docker-compose -v
ctrl+c停止服务
docker-compose
两个后端服务器均在线:
停止一台后端服务器: