一、容器互联

通过docker run命令的--link参数可以让容器之间通过连接(linking)系统进行交互。
参数格式:
--link name:alias ,name是要链接的容器名称, alias是此连接的别名

容器的连接系统会依据容器的名称,创建容器之间一个安全隧道,在启动容器的时候不使用-p-P参数(不用映射端口到宿主主机),从而避免了暴露端口到外部网络。

link方式

通过link方式创建容器,然后我们可以使用被link容器的别名进行访问。
从而解除应用对IP的依赖
不幸的是,link方式只能解决单机容器间的互联。多机情况下,容器的互联需要其他的方式。


通过docker run命令的--name参数来自定义容器名称(容器的名称是唯一的)。
通过
docker ps命令结果的NAMES部分,查看容器名称。

Docker通过环境变量为容器公开连接信息,还添加host信息到父容器的/etc/hosts文件。
用户可以链接多个父容器到子容器。


先创建一个新的容器

[root@foundation12 docker]# docker run -it --name vm1 ubuntu
在创建一个容器,使与vm1互联
[root@foundation12 docker]# docker run -it --name vm2 --link vm1:cara1 ubuntu     :前为要连接容器名,后面为给起的别名

查看/etc/hosts文件

Screenshot from 2018-06-20 20-22-36.png



二、Docker Compose管理多个容器


Docker Compose是一个用来定义和运行复杂应用的Docker工具。使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作。

一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose,不再需要使用shell脚本来启动容器。在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器。

完整的命令列表如下:

build 构建或重建服务
 
help  命令帮助
 
kill 杀掉容器
 
logs 显示容器的输出内容
 
port 打印绑定的开放端口
 
ps 显示容器
 
pull 拉取服务镜像
 
restart 重启服务
 
rm 删除停止的容器
 
run 运行一个一次性命令
 
scale 设置服务的容器数目
 
start 开启服务
 
stop 停止服务
 
up 创建并启动容器





下载docker-compose-Linux-x86_64-1.16.1   移动到可执行路径

[root@foundation12 bin]# pwd
/bin

[root@foundation12 bin]# mv docker-compose-Linux-x86_64-1.16.1 docker-compose

[root@foundation12 bin]# chmod +x docker-compose     给权限
Screenshot from 2018-06-20 21-53-31.png

建目录

[root@foundation12 docker]# mkdir compose

Screenshot from 2018-06-20 21-59-41.png


查看是http镜像

Screenshot from 2018-06-20 21-59-49.png


在compose目录下编辑文件

[root@foundation12 compose]# vim docker-compose.yml

web1:
    image: rhel7:v2
    volumes:
        - ./web1/index.html:/var/www/html/index.html
    expose:
        - 80
web2:
    image: rhel7:v2
    volumes:
        - ./web2/index.html:/var/www/html/index.html

    expose:
        - 80
haproxy:
    image: haproxy
    volumes:
        - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
    links:
        - web1
        - web2

    ports:
        - "8080:80"


启动haproxy容器

[root@foundation12 docker]# docker run -d --name cara haproxy

Screenshot from 2018-06-20 22-26-56.png

创建haproxy目录

[root@foundation12 compose]# mkdir haproxy
[root@foundation12 compose]# cd haproxy/
[root@foundation12 haproxy]# vim haproxy.cfg

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
        mode http
        default_backend web_backends
backend web_backends
        balance roundrobin
        server apache web1:80 check
        server nginx web2:80 check

建立web1 web2目录 在里面写index.html文件 以便访问


[root@foundation12 compose]# mkdir web1
[root@foundation12 compose]# mkdir web2

Screenshot from 2018-06-20 22-29-43.png


创建并启动容器

[root@foundation12 compose]# docker-compose up

Screenshot from 2018-06-20 22-30-56.png


查看端口8080开启

Screenshot from 2018-06-20 22-31-33.png


测试:

Screenshot from 2018-06-20 22-32-13.png

Screenshot from 2018-06-20 22-33-29.pngScreenshot from 2018-06-20 22-33-34.png