02-DockerCompose

1、DockerCompose容器之间相互访问

同一台宿主机下的不同的docker容器相互访问的情况

(1)、方案一:加入同一网络

首先Docker创建网络

docker network create dev_net

举例: Nacos链接Mysql

services:
  mysql:
    #mysql服务节点
    image: mysql:5.7 #mysql镜像,如果镜像容器没有会去自动拉取
    container_name: mysql #容器的名称
    ## *这里需要加入上面创建的网络*
    networks:
      - dev_net
    deploy:
      resources:
        limits:
          memory: 1G
    command:
      #构建容器后所执行的命令
      --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --lower-case-table-names=1 #忽略数据表明大小写 
    restart: no #跟随docker的启动而启动
    environment:
      MYSQL_ROOT_PASSWORD: root #设置root帐号密码
    ports:
      - 3306:3306
    volumes:
      - ./mysql/data:/var/lib/mysql #数据文件挂载
      - ./mysql/conf.d:/etc/mysql/conf.d #配置文件挂载
      - ./mysql/log:/var/log/mysql #日志文件挂载
# 这里引入创建的网络
networks:
  dev_net:
    external: true
services:
  nacos:
    image: nacos/nacos-server:v2.2.2
    container_name: nacos
    ## *这里需要加入上面创建的网络*
    networks:
      - dev_net
    restart: no
    ports:
      - 8848:8848
      - 9848:9848
      - 9849:9849
    environment:
      TZ: Asia/Shanghai
      MODE: standalone
      SPRING_DATASOURCE_PLATFORM: mysql
      #加入同一个网络后可以直接使用容器name来通信
      MYSQL_SERVICE_HOST: mysql
      #直接连接容器端口,不是映射到宿主机的端口
      MYSQL_SERVICE_PORT: 3306
      MYSQL_SERVICE_USER: root
      MYSQL_SERVICE_PASSWORD: root
      MYSQL_SERVICE_DB_NAME: nacos
      MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
    volumes:
      - ./logs/:/home/nacos/logs
# 这里引入创建的网络
networks:
  dev_net:
    external: true

容器启动后查看网络连接情况

docker network inspect dev_net

就会出现以下内容

查看网络

这里的Containers里面显示的是加入此网络的容器名称。

2、DockerCompose 更新容器镜像

前言
因为有时候部署Docker镜像是lts这种的版本,镜像版本是可以更新的, 这个时候利用DockerCompose进行更新

(1)拉取镜像

docker-compose pull

(2)重新部署

docker-compose up -d --remove-orphans

(3)删除不用的镜像

docker image prune

docker image prune 删除的是无标签、无引用的镜像
docker image prune -a 删除所有没有使用的镜像

Portainer快捷操作

Portainer可以快捷操作如下图
选中镜像容器,然后点击recreate,然后打开 Re-pull image 即可

作者:何贤刚  创建时间:2024-05-12 22:06
最后编辑:何贤刚  更新时间:2025-09-20 10:34