docker 容器互联,Docker Compose

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker 容器互联,Docker Compose相关的知识,希望对你有一定的参考价值。

 一、容器互联

通过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文件。
用户可以链接多个父容器到子容器。


先创建一个新的容器

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

技术分享图片

查看/etc/hosts文件

技术分享图片



二、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   移动到可执行路径

[[email protected] bin]# pwd
/bin

[[email protected] bin]# mv docker-compose-Linux-x86_64-1.16.1 docker-compose

[[email protected] bin]# chmod +x docker-compose     给权限
技术分享图片

建目录

[[email protected] docker]# mkdir compose

技术分享图片


查看是http镜像

技术分享图片


在compose目录下编辑文件

[[email protected] 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容器

[[email protected] docker]# docker run -d --name cara haproxy

技术分享图片

创建haproxy目录

[[email protected] compose]# mkdir haproxy
[[email protected] compose]# cd haproxy/
[[email protected] 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文件 以便访问


[[email protected] compose]# mkdir web1
[[email protected] compose]# mkdir web2

技术分享图片


创建并启动容器

[[email protected] compose]# docker-compose up

技术分享图片


查看端口8080开启

技术分享图片


测试:

技术分享图片

技术分享图片技术分享图片


以上是关于docker 容器互联,Docker Compose的主要内容,如果未能解决你的问题,请参考以下文章

前端无法在单独的 docker 容器中到达后端端口

docker启动方法,自己备注

docker-compos

云原生之docker实战使用docker部署gitlab平台

Docker容器始终显示ssl连接错误

docker--docker-Compose安装与使用