docker 部署mysql时遇到的坑
程序员文章站
2022-05-14 20:41:46
...
1、输入下面命令,创建mysql容器时报错
docker run -it\
-p 5678:3306\
--name=c_mysql\
-v $PWD/conf:/etc/mysql/conf.d\
-v $PWD/logs:/logs\
-v $PWD/data:/var/lib/mysql\
-e MYSQL_ROOT_PASSWORD=123456\
mysql:5.6
报错:
unknown shorthand flag: 'p' in --p
See 'docker --help'.
原因:命令输入不对,空格没有打好
解决办法:命令与命令之间最好手动空格
建议直接输入:
docker run -id -p 5678:3306 --name=c_mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
总结:如果报错的时候第一时间就仔细的检查命令格式是否正确,也不会浪费那摩多时间。而且这种低级错误百度一般也没有答案,只能找到其他类似的答案,最后还是回到命令上来仔细观察之下,才把问题解决了。所以遇到问题应该自己要先思考,对于这个问题,自己能想到的所有可能造成原因有哪些,有什么可以解决问题的办法,尝试完自己知道的所有方法还不行,在百度也不迟。
2、docker端口映射或启动容器时报
现象:
[[email protected] ~]# docker run -d -p 9000:80 centos:httpd /bin/sh -c /usr/local/bin/start.sh
d5b2bd5a7bc4895a973fe61efd051847047d26385f65c278aaa09e4fa31c4d76
docker: Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen (6bda693d1143657e46bee0300276aa05820da2b21a3d89441e820d1a274c48b6): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9000 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1)).
[[email protected] ~]# docker start d5b2bd5a7bc4
Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen (4127da7466709fd45695a1fbe98e13c2ac30c2a554e18fb902ef5a03ba308438): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9000 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1))
Error: failed to start containers: d5b2bd5a7bc4
原因:
docker服务启动时定义的自定义链DOCKER由于某种原因被清掉
重启docker服务及可重新生成自定义链DOCKER
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DOCKER all -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DOCKER all -- 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCAL
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 172.17.0.0/16 0.0.0.0/0
MASQUERADE tcp -- 172.17.0.2 172.17.0.2 tcp dpt:8080
Chain DOCKER (2 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 0.0.0.0/0
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8888 to:172.17.0.2:8080
[email protected]:playbook#iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DOCKER all -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DOCKER all -- 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCAL
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 172.17.0.0/16 0.0.0.0/0
MASQUERADE tcp -- 172.17.0.2 172.17.0.2 tcp dpt:8080
Chain DOCKER (2 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 0.0.0.0/0
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8888 to:172.17.0.2:8080
解决办法:
重启docker服务后再启动容器
systemctl restart docker
docker start name
上一篇: 32位系统左移溢出,64位系统不溢出,能否在64位系统 保留32左溢的结果
下一篇: 数组文件操作
推荐阅读
-
Mysql数据库从5.6.28版本升到8.0.11版本部署项目时遇到的问题及解决方法
-
html标签从.net framework转移到.net standard(.net core 2.2)时遇到的坑及填坑
-
nodejs同步调用获取mysql数据时遇到的大坑
-
Docker Compose部署项目到容器-基于Tomcat和mysql的商城项目(附源码和sql下载)
-
mysql 8.0.18 压缩包安装及忘记密码重置所遇到的坑
-
详细记一次Docker部署服务的爬坑历程
-
Docker部署mysql一主一从的操作方法
-
docker上部署MySQL的示例
-
CentOS7下部署java+tomcat+mysql项目及遇到的坑
-
Sqoop抽取数据到MySQL时遇到的问题