Docker | 05.使用Docker部署MySQL并配置端口映射

本文介绍了Docker中容器的端口概念,解释了为什么外部机器不能直接访问容器,并提出端口映射作为解决方案。通过示例展示了如何使用`-p`参数在创建容器时进行端口映射,以及如何使用Docker部署MySQL并配置端口,确保外部能够成功连接到容器内的MySQL服务。同时,提到了`$PWD`环境变量和`-e`参数用于设置MySQL的ROOT密码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考视频

14-docker应用部署-部署mysql

1.容器也有端口

先前已经提到,容器存在于宿主机中。宿主机有端口,而容器也有端口,但由于容器是一个独立的沙箱环境,二者的端口并不冲突。

  • 不同容器之间端口不会冲突
  • 容器与宿主机之间的端口不会冲突
  • 同一个容器内部不允许出现端口冲突

image-20220531180656771

2.端口映射

2.1.外部机器无法直接访问容器

image-20220531181050297

如上图所示,外部机器可以访问宿主机,宿主机可以访问容器(宿主机相当于代理),但外部机器却不可以直接访问容器。

2.2.解决方案:端口映射

端口映射是指:将宿主机的A端口与某一个容器的B端口进行绑定。当外部机器访问A端口时,宿主机将以代理的身份访问容器的B端口。如此一来,就实现了外部机器对容器B端口的访问。

image-20220531183011685

2.3.如何实现端口映射

创建容器时加入-p参数:

-p <宿主机端口>:<容器端口>

3.使用docker部署mysql,并配置端口映射

  • $PWD是什么?
  • -e MYSQL_ROOT_PASSWORD=123456,我怎么知道-e后面应该接什么?
  1. [拉取镜像] 拉取mysql5.6镜像;

    docker pull mysql:5.6
    
  2. [运行镜像以创建容器] 创建容器实例,并配置数据卷和端口映射;

    docker run -id \
    -p 3306:3306 \
    --name=container_mysql \
    -v /usr/local/mysql/conf:/etc/mysql/conf.d \
    -v /usr/local/mysql/logs:/logs \
    -v /usr/local/mysql/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql:5.6
    
    • -p <宿主机端口> <容器端口>是配置端口映射;
    • -v <数据卷目录> <容器内目录>是配置数据卷的参数;
    • -e MYSQL_ROOT_PASSWORD是设置mysql的ROOT密码。
  3. [进入容器] 使用docker exec指令进入容器;

    docker exec -it container_mysql /bin/bash
    

    image-20220601101638206

  4. [测试端口映射是否配置成功] 在终端创建一个数据库,随后使用Navicat测试连接,查看数据库是否成功创建。

    image-20220601104627801

    image-20220601104802104

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值