本文通过发布3个APP(App1,App2,App3),来演示Docker在服务发布、网络、共享分区以及信息隔离与连通方面的工作: 

1. 新建docker-compose.yml,放在任意目录下

version: '2'
services:
  App1:
    build: /local/docker/dockerApp1
    image:studyapp1:0.0.1
    restart: always
    ports:
     - "8030:8080"
    volumes:
     - /local/docker/log:/docker/logs
    container_name: zcy1
    networks:
          - "netName1"
  App2:
      build: /local/docker/dockerApp1
      image: studyapp1:0.0.1
      restart: always
      ports:
       - "8031:8080"
      volumes:
       - /local/docker/log:/docker/logs
      container_name: zcy2
      networks:
            - "netName1"
  App3:
      build: /local/docker/dockerApp1
      image: studyapp1:0.0.1
      restart: always
      ports:
       - "8032:8080"
      volumes:
       - /local/docker/log:/docker/logs
      container_name: zcy3
      networks:
            - "netName2"
networks:
  netName1:
    driver: bridge
  netName2:
      driver: bridge

2. 后台启动,在compose文件的目录下面执行:

docker-compose up -d

3. 查看容器运行状态

docker-compose ps

4. 其他命令:

[root@docker compose]# docker-compose restart #重启所有容器
[root@docker compose]# docker-compose restart App1  #重启App1
[root@docker compose]# docker-compose stop #停止所有容器
[root@docker compose]# docker-compose stop App1  #停止App1
5.验证网络隔离: 

a.到App1 ping App2   是通的,但是App1 ping App3 不通

执行: docker-compose exec App1 bash 进入服务App1中,ping 的方式可以连接

此方式可以微服务之间调用,就用服务名称作为ip

curl App2:8080/xxx 是可以访问到App2 服务的

6.

volumes:
       - /local/docker/log:/docker/logs
挂载后,3个服务里面的日志都打印到宿主机 /local/docker/log 里面

7. 将微服务不打入镜像的方法

将打包好的微服务,放在宿主机的目录下,通过挂载的方式到容器中:

app4:
      image: public-docker-virtual.artnj.zte.com.cn/daas/jdk8:0.0.1
      restart: always
      ports:
             - "8033:8080"
      volumes:
             - /local/daasdocker/log:/daas/logs
             - /local/daasdocker/app:/daas/app
      command:
            - java
            - -jar
            -  /daas/app/study.jar
            - --server.port=8080


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐