Docker容器内时间改为外部服务器时间

博客介绍了Docker容器时间相关操作。可通过“docker exec -it 容器名称或ID date”查看容器时间,还能使用“docker cp /etc/localtime 容器名称或ID:/etc/”将外部时间同步到容器内部。

docker 容器时间查看:

docker exec -it   容器名称或ID  date

将外部时间同步到容器内部:

docker cp /etc/localtime 容器名称或ID:/etc/

<think>我们正在解决:在Docker部署MySQL 8时,将容器内部端口和外部端口都设置为9000的方法。 注意:MySQL默认内部端口是3306,但我们可以通过配置改变它。这里要求内部和外部端口都使用9000。 步骤: 1. 在运行容器时,使用`-p`参数映射端口:`-p 9000:9000`,这表示将宿主机的9000端口映射到容器的9000端口。 2. 但是,MySQL服务默认监听3306端口,因此我们需要将MySQL容器的内部端口也改为9000。这可以通过配置MySQL的配置文件实现,例如在`my.cnf`中设置`port=9000`。 有两种方式实现: 方式一:通过命令行参数在启动容器时传递配置 方式二:使用自定义的配置文件(推荐) 推荐方法:使用自定义配置文件,因为更灵活且易于管理。 具体步骤: 1. 在宿主机上创建一个目录,用于存放自定义的MySQL配置文件,例如:`/path/to/custom/mysql/conf`。 2. 在该目录下创建配置文件`my.cnf`,内容如下: [mysqld] port=9000 3. 运行容器时,挂载这个配置文件,并将端口映射设置为9000:9000。 命令示例: ```bash docker run --name mysql8 \ -v /path/to/custom/mysql/conf:/etc/mysql/conf.d \ -e MYSQL_ROOT_PASSWORD=yourpassword \ -p 9000:9000 \ -d mysql:8.0 \ --port=9000 # 注意:这里通过命令行参数再次指定端口,但通常配置文件优先级高,所以也可以省略 ``` 注意:MySQL的配置可以通过多种方式指定,包括配置文件、命令行参数和环境变量。但是,端口设置通常通过配置文件或命令行参数设置。在容器中,MySQL会读取`/etc/mysql/conf.d`目录下的配置文件,所以我们把自定义配置放在这个目录下。 另一种方式:直接通过命令行参数设置端口(不推荐,因为每次启动命令较长): ```bash docker run --name mysql8 \ -e MYSQL_ROOT_PASSWORD=yourpassword \ -p 9000:9000 \ -d mysql:8.0 \ --port=9000 ``` 但是,请注意:MySQL官方镜像的启动脚本允许传递参数给`mysqld`,所以`--port=9000`会作为`mysqld`的参数。然而,使用自定义配置文件的方式更标准。 验证: 1. 进入容器检查端口: ```bash docker exec -it mysql8 bash mysql -uroot -p -P9000 # 注意这里指定端口为9000 ``` 或者在容器内查看进程:`netstat -tuln | grep 9000` 2. 在宿主机上使用`telnet 127.0.0.1 9000`检查端口是否开放。 注意:如果宿主机上的9000端口已经被其他程序占用,则需要更换端口或停止占用程序。 引用说明:我们参考了Docker部署MySQL的基本步骤[^1],并在此基础上修改了端口配置。 最后,生成相关问题。 相关问题: 1. 如何修改MySQL的默认端口? 2. Docker容器端口映射有哪些方式? 3. 如何查看MySQL当前使用的端口? 4. 如何解决Docker容器端口冲突问题? </think> ### 在Docker中部署MySQL 8并将内外端口均设为9000的方法 #### 📌 核心步骤 1. **创建自定义配置文件** 在宿主机创建配置文件(如 `custom-my.cnf`),指定MySQL内部端口: ```ini [mysqld] port = 9000 # 强制容器内部使用9000端口 ``` 2. **启动容器时配置端口映射** 使用 `-p` 参数映射端口: ```bash docker run --name mysql8 \ -v /宿主机目录/custom-my.cnf:/etc/mysql/conf.d/custom.cnf \ # 挂载配置文件 -e MYSQL_ROOT_PASSWORD=yourpassword \ # 设置root密码 -p 9000:9000 \ # 映射宿主机9000→容器9000 -d mysql:8.0 ``` #### ⚠️ 关键注意事项 1. **配置文件优先级** MySQL容器自动加载 `/etc/mysql/conf.d/` 下的配置文件,需确保挂载路径正确[^1] 2. **验证端口设置** 进入容器检查配置: ```bash docker exec -it mysql8 bash mysql -uroot -p -P9000 # 显式指定端口连接 SHOW GLOBAL VARIABLES LIKE 'port'; # 应返回 port=9000 ``` 3. **防火墙配置** 如果远程访问需开放宿主机防火墙: ```bash firewall-cmd --zone=public --add-port=9000/tcp --permanent firewall-cmd --reload ``` #### 🌰 完整示例 ```bash # 创建配置目录 mkdir -p ~/mysql_custom_conf echo -e "[mysqld]\nport=9000" > ~/mysql_custom_conf/custom.cnf # 启动容器 docker run --name mysql9000 \ -v ~/mysql_custom_conf:/etc/mysql/conf.d \ -e MYSQL_ROOT_PASSWORD=Secur3Pass! \ -p 9000:9000 \ -d mysql:8.0 \ --character-set-server=utf8mb4 \ --collation-server=utf8mb4_unicode_ci ``` #### 🔍 验证连接 ```bash # 宿主机连接测试 mysql -h 127.0.0.1 -P 9000 -u root -p # 远程机器连接(需开放防火墙) mysql -h <宿主机IP> -P 9000 -u root -p ``` ### 相关问题 1. 如何修改MySQL Docker容器的默认字符集? 2. Docker容器端口映射有哪些模式(如`-p 9000:9000` vs `-p 9000`)? 3. 如何查看Docker容器内部运行的进程和端口监听状态? 4. MySQL 8在Docker中如何持久化数据? 5. 容器启动后如何动态修改MySQL端口? : 通过挂载自定义配置文件到`/etc/mysql/conf.d`目录可覆盖默认配置
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值