//创建一个
[root@localhost ~]# docker create --name vc_data -v ~/htdocs:/usr/share/apache2/htdocs busybox
[root@localhost ~]# docker inspect vc_data
"Mounts": [
{
"Type": "bind",
"Source": "/root/htdocs",
"Destination": "/usr/share/apache2/htdocs",
[root@localhost ~]# docker run -itd --name web6 -P --volumes-from vc_data httpd:latest
[root@localhost htdocs]# echo 123456 > index.html
[root@localhost htdocs]# ls
index.html
[root@localhost htdocs]# vim Dockerfile
FROM busybox
ADD index.html /usr/local/apache2/htdocs/index.html
VOLUME /usr/local/apache2/htdocs
[root@localhost htdocs]# docker build -t dateback .
[root@localhost htdocs]# docker create --name vn-new dateback:latest
[root@localhost htdocs]# docker run -itd --name new-web1 -P --volumes-from vn-new httpd:latest
容器的跨主机数据共享
Docker01 docker02 docker03
Httpd httpd nfs
要求docker01和docker02的主目录,是一样的。
第三台安装nfs服务
[root@docker03 ~]# yum -y install nfs-utils
[root@docker03 datashare]# vim /etc/exports
/datashare *(rw,sync,no_root_squash)
[root@docker03 ~]# systemctl start rpcbind
[root@docker03 ~]# systemctl enable rpcbind
[root@docker03 ~]# systemctl start nfs-server.service
[root@docker03 ~]# systemctl enable nfs-server.service
[root@docker03 ~]# cd /datashare/
[root@docker03 datashare]# vim index.html
<div id="datetime">
<script>
setInterval("document.getElementById('datetime').innerHTML=new Date().toLocaleString();", 1000);
</script>
</div>
bdqn-webshare
第一台上查看
[root@localhost ~]# showmount -e 192.168.1.30
Export list for 192.168.1.30:
/datashare *
第二台查看
[root@docker02 ~]# showmount -e 192.168.1.30
Export list for 192.168.1.30:
/datashare *
Docker01上操作
[root@docker01 ~]# mkdir /htdocs
[root@docker01 ~]# mount -t nfs 192.168.1.30:/datashare /htdocs
[root@docker01 ~]# cat /htdocs/index.html
Docker02上同样操作
[root@docker02 ~]# mkdir /htdocs
[root@docker02 ~]# mount -t nfs 192.168.1.30:/datashare /htdocs
[root@docker02 ~]# cat /htdocs/index.html
这里先不考虑将代码写入镜像,先以这种方式,分别在docker01和docker02部署httpd服务
在Docker01和docker02上各运行一个容器
[root@docker01 htdocs]# docker run -itd --name bdqn-web1 -P -v /htdocs/:/usr/local/apache2/htdocs httpd:latest
[root@docker02 ~]# docker run -itd --name bdqn-web2 -P -v /htdocs/:/usr/local/apache2/htdocs httpd:latest
此时,用浏览器访问,两个web服务的主页面是一样的,但如果,nfs服务器上的源文件丢失,则两个web服务都会异常
想办法将源数据写入镜像内,在基于镜像做一个vc_data容器,这里因为没接触到docker-compose和docker swarm等docker编排工具,所以我们在docker01和docker02上先手动创建镜像。
[root@docker03 ~]# cd /datashare/
[root@docker03 datashare]# vim index.html
[root@docker03 datashare]# vim index.html
[root@docker03 datashare]# echo test > index.html
[root@docker03 datashare]# ls
index.html
[root@docker03 datashare]# vim Dockerfile
[root@docker03 datashare]# cat Dockerfile
FROM busybox
ADD index.html /usr/local/apache2/htdocs/index.html
VOLUME /usr/local/apache2/htdocs
在docker01上操作
[root@docker01 htdocs]# ls
Dockerfile index.html
[root@docker01 htdocs]# cat Dockerfile
FROM busybox
ADD index.html /usr/local/apache2/htdocs/index.html
VOLUME /usr/local/apache2/htdocs
[root@docker01 htdocs]# docker build -t back_data .
[root@docker01 htdocs]# docker create --name back_container1 back_data:latest
[root@docker01 htdocs]# docker run -itd --name bdqn-web3 -P --volumes-from back_container1 httpd:latest
企业级私有仓库镜像仓库harbor
下载一个docker-compse工具
[root@docker01 htdocs]# ls
back_data.rar docker-compose.tar.gz Dockerfile
[root@docker01 htdocs]# tar zxf docker-compose.tar.gz -C /usr/local/bin/
[root@docker01 htdocs]# chmod +x /usr/local/bin/docker-compose
下载依赖包
[root@docker01 htdocs]# yum -y install yum-utils device-mapper-persistent-data lvm2
[root@docker01 htdocs]# docker-compose -v
docker-compose version 1.24.0, build 0aa59064
//导入harbor离线安装包,并解压到指定目录
[root@docker01 htdocs]# ls
back_data.rar docker-compose.tar.gz Dockerfile harbor-offline-installer-v1.7.4.tgz
[root@docker01 htdocs]# tar -zxf harbor-offline-installer-v1.7.4.tgz -C /usr/local/
[root@docker01 htdocs]# cd /usr/local/harbor/
[root@docker01 harbor]# vim harbor.cfg

[root@docker01 harbor]# ./install.sh
[root@docker01 harbor]# vim /usr/lib/systemd/system/docker.service

[root@docker01 harbor]# systemctl daemon-reload
[root@docker01 harbor]# systemctl restart docker.service
[root@docker01 harbor]# docker-compose start
[root@docker01 harbor]# docker login -u admin -p Harbor12345 192.168.1.10
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
[root@docker01 harbor]# docker tag centos:7 192.168.1.10/bdqn/centos:7
[root@docker01 harbor]# docker push 192.168.1.10/bdqn/centos:7

Login Succeeded

浙公网安备 33010602011771号