//创建一个

 

[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

要求docker01docker02的主目录,是一样的。

 

 

第三台安装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

 

这里先不考虑将代码写入镜像,先以这种方式,分别在docker01docker02部署httpd服务

 

Docker01docker02上各运行一个容器

[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-composedocker swarmdocker编排工具,所以我们在docker01docker02上先手动创建镜像。

[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

posted on 2020-04-09 19:43  痴人_说梦  阅读(23)  评论(0)    收藏  举报