• Docker之四:容器之间通信


    一、单向通信

     每个容器都有虚拟ip,容器变了ip会变,指向容器名称

    1.创建两个docker容器,-t 后台运行

    #tomcat容器 -d后台运行
    docker run -d --name web tomcat
    #centos  -it交互模式 /bin/bash 才能docker ps 中展示
    docker run -d --name database -it centos /bin/bash
    #使用容器id查看容器虚拟ip      NetworkSettings  --IPAddress
    docker inspect 容器id

    进入web目录下,ping ip可以   ping database 不通

    2.重新创建容器(link单向通信):docker run -d --name web --link database tomcat    

     二、Bridge网桥双向通信

     设置网桥以后,容器之间天然互通

    1.上面最原始的web(无link)和database

    #查看现有网桥
    docker network ls
    #新增我的网桥
    docker network create -d bridge helq-bridge

     网桥分别绑定两个容器  connect 

    [root@bogon image]# docker network connect helq-bridge web
    [root@bogon image]# docker network connect helq-bridge database

    两个容器通过虚拟网卡实现互通

    三、Volume容器间共享数据

     volume 数据卷

     通过设置-v挂载宿主机目录

    #格式 -v挂载宿主机目录
    docker run --name 容器名 -v 宿主机路径:容器内挂在路径 镜像名
    #实例
    docker run --name t1 -v /usr/webapps:/usr/local/tomcat/webapps tomcat

     通过--volumes-from共享容器内挂载点

    #创建共享容器
    docker create --name webpage -v /webapps:/tomcat/webapps tomcat
    #共享容器挂载点
    docker run --volumes-from webpage --name t1 -d tomcat

     实例:/usr下创建webapps

    创建共享容器:

    # -d 后台运行 -v 挂载点
    docker run --name t1 -p 8000:8080 -d -v /usr/webapps:/usr/local/tomcat/webapps tomcat
    docker run --name t2 -p 8001:8080 -d -v /usr/webapps:/usr/local/tomcat/webapps tomcat
    #创建共享容器
    docker create --name webpage -v /usr/webapps:/usr/local/tomcat/webapps tomcat /bin/true
    #使用共享容器来创建容器
    docker run --name t3 -p 8002:8080 -d --volumes-from webpage tomcat
    #查看当前容器中jdk版本
    docker exec t2 java -version

    修改webapps/volume-test/index.html内容,浏览器访问直接就变了

    四、容器编排工具 Docker Compose

    单机多容器部署工具、通过yml文件定义多容器如何部署、WIN/MAC默认提供Docker Compose,Linux需安装

    1.安装和授权:Install Docker Compose 

    #安装
    sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    #授权
    sudo chmod +x /usr/local/bin/docker-compose
    #查看版本
    docker-compose -version

    实例:创建wordpress  

    创建wordpress文件夹,创建docker-compose.yml文件,拷贝网页中内容,注意拷贝的时候version可能拷贝不全

    自动解析运行yml文件:wordpress-compose up -d     然后查看正在运行的容器

     访问8000路径

     五、Docker compose实战

    1.导文件,创建镜像

     java版本选择hub.docker.com   java

    bsbdj-app下Dockerfile

    FROM openjdk:11.0.9.1-jre
    WORKDIR /usr/local/bsbdj
    ADD bsbdj.jar .
    ADD application.yml .
    ADD application-dev.yml .
    EXPOSE 80
    CMD ["java","-jar","bsbdj.jar"]

    创建镜像在本文件夹下:docker build -t helq3.com/bsbdj-app .   查看镜像

    执行:docker run helq3.com/bsbdj-app

    bsbdj-db下Dockerfile

    FROM mysql:5.7
    WORKDIR /docker-entrypoint-initdb.d
    ADD init-db.sql .

    创建镜像: docker build -t helq3.com/bsbdj-db .

    执行:docker run -d -e MYSQL_ROOT_PASSWORD=root helq3.com/bsbdj-db

    查看容器,进入容器,可进入mysql

    #登录mysql
    mysql -uroot -proot
    #使用数据库
    use bsbdj
    show tables

    /usr/image/bsbdj 目录下 vim docker-compose.yml

    version: '3.3'
    services:
      db:
        build: ./bsbdj-db/
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: root
      app:
        build: ./bsbdj-app/
        depends_on:
          - db   #依赖上面的db
        ports:
          - "80:80"  #端口映射
        restart: always  #如果挂了,自动重启

    执行:docker-compose up -d  后台运行

    日志:docker-compose logs db(服务名)

    停止:docker-compose down

    界面查看

  • 相关阅读:
    WordCount结对项目
    第一周作业:一些感想
    第一次作业
    Spring Cloud 微服务实战笔记
    解决jest处理es模块
    领域驱动设计(DDD:Domain-Driven Design)
    测试
    whistle
    日记(2018-11-07)
    ubuntu中使用机密数据Secrets
  • 原文地址:https://www.cnblogs.com/helq/p/14208699.html
Copyright © 2020-2023  润新知