windows系统下docker desktop创建容器指定ip

方式一:创建自定义网络

创建自定义网络并指定子网

docker network create --subnet=172.20.0.0/16 mysql-network

启动容器

复制代码
docker run -d \
  --name mysql1 \
  --network mysql-network \
  --ip 172.20.0.10 \
  -e MYSQL_ROOT_PASSWORD=root123 \
  -p 3306:3306 \
  mysql:8.0

方式二:使用docker compose文件方式

复制代码
version: '3.7'
 
services: 
    mysql1:
        user: root
        image:  mysql:8.0
        container_name: mysql1
        ports:
            - 3306:3306
        volumes:
            - D:/docker/app9/mysql1/data:/var/lib/mysql
            - D:/docker/app9/mysql1/my.cnf:/etc/my.cnf
        environment:
            MYSQL_ROOT_PASSWORD: 2023
            TZ: Asia/Shanghai
            LANG: C.UTF-8
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-p2023","--protocol","tcp"]
        deploy:
            replicas: 1
            restart_policy:
                condition: on-failure #on-failure
            resources:
                limits:
                    cpus: '8'
                    memory: 2G
        command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_german2_ci
        networks:
            mysql-net:
                ipv4_address: 172.25.0.10
    mysql2:
        user: root
        image:  mysql:8.0
        container_name: mysql2
        ports:
            - 3307:3306
        volumes:
            - D:/docker/app9/mysql2/data:/var/lib/mysql
            - D:/docker/app9/mysql2/my.cnf:/etc/my.cnf
        environment:
            MYSQL_ROOT_PASSWORD: 2023
            TZ: Asia/Shanghai
            LANG: C.UTF-8
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-p2023","--protocol","tcp"]
        deploy:
            replicas: 1
            restart_policy:
                condition: on-failure #on-failure
            resources:
                limits:
                    cpus: '8'
                    memory: 2G
        command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_german2_ci
        networks:
            mysql-net:
                ipv4_address: 172.25.0.20


networks:
  mysql-net:
    driver: bridge
    ipam:
      config:
        - subnet: 172.25.0.0/16

启动服务

复制代码
# 启动服务
docker-compose up -d

查看状态

复制代码
# 查看容器状态
docker-compose ps

# 查看日志
docker-compose logs mysql1
docker-compose logs mysql2

# 查看网络
docker network ls

停止和清理

复制代码
# 停止服务
docker-compose down

# 停止并删除数据卷
docker-compose down -v

# 重新启动
docker-compose up -d

检查IP

复制代码
# Linux系统命令
# 检查容器的 IP 地址
docker inspect mysql1 | grep IPAddress
docker inspect mysql2 | grep IPAddress

# Windows 等效命令
# 使用 findstr 代替 grep
docker inspect mysql1 | findstr "IPAddress"
# 或者更精确的查找
docker inspect mysql1 | findstr "IPAddress"

# 直接获取 IP 地址
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql1
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql2

# 查看容器的所有网络信息
docker inspect mysql1
# 或者使用更简洁的方式
docker container inspect mysql1 --format='{{.Name}} - {{.NetworkSettings.Networks.mysql-cluster_mysql-net.IPAddress}}'

完整的排查步骤(Windows 版本)

# 1. 检查容器状态
docker ps

# 2. 获取容器 IP 地址
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql1
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql2

# 3. 检查网络配置
docker network ls
docker network inspect mysql-cluster_mysql-net

# 4. 检查端口映射
docker port mysql1
docker port mysql2

# 5. 测试容器内部连接
docker exec mysql1 mysql -uroot -proot123 -e "SELECT 1;"
docker exec mysql2 mysql -uroot -proot123 -e "SELECT 1;"

# 6. 检查用户权限
docker exec mysql1 mysql -uroot -proot123 -e "SELECT user, host, plugin FROM mysql.user;"
docker exec mysql2 mysql -uroot -proot123 -e "SELECT user, host, plugin FROM mysql.user;"
相关推荐
JavaPub-rodert17 分钟前
Docker 日志为什么能把磁盘写爆?讲透 json-file、local、journald、日志轮转与 docker logs
docker·eureka·json
缓慢更新1 小时前
表单引擎的存储建模:宽表与文档库的取舍
运维·服务器·网络·数据库·低代码·oracle·适配器模式
人生匆匆1 小时前
docker部署ceph集群
ceph·docker·容器
续写烂尾2 小时前
贴片 SD NAND、eMMC、TF 卡规格怎么定?硬件工程师选型清单
运维·服务器·网络
迪康妍妍2 小时前
终端管控实操:封堵网盘与IM外发通道的落地思路
运维·网络·安全·架构·安全性测试
sxgzzn2 小时前
如何选择合适的开关柜在线监测工具?
运维·重构·无人机·开关柜局放在线监测·光伏运维管理系统
zxcvb1533 小时前
运维经验分享:监控网页更新内容的几种思路
运维
云飞云共享云桌面4 小时前
设计师共享单台图形服务器,解决 SolidWorks大装配卡顿难题
运维·服务器·3d·自动化·电脑·制造
张张123y4 小时前
后端第九课:部署上线(把你的 FastAPI 后端真正跑起来给别人用)
python·docker·部署·fastapi
无足鸟ICT4 小时前
【RHCA+】RPM包命名规则
linux·运维·服务器