本文通过发布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