Docker使用中遇到的各种问题以及解决方案
问题一
[root@CentOs7_001 ~]# docker start d040a1737203
Error response from daemon: driver failed programming external connectivity on endpoint mysql (565cca25921160ed2a13a2f2b1605138114e313ce2a684b309faf3ea830de202): (iptables failed: iptables –wait -t nat -A DOCKER -p tcp -d 0/0 –dport 3306 -j DNAT –to-destination 172.17.0.2:3306 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1))
Error: failed to start containers: d040a1737203
- 问题复现复述
docker运行一个镜像;然后把这个容器停掉
修改宿主机的原始防火墙状态(关闭)为打开状态
重启容器报错
- 解决方案
重启docker服务
重启docker服务及可重新生成自定义链DOCKER
- 原因
docker服务启动时定义的自定义链DOCKER,当 centos7 firewall 被清掉时,
firewall的底层是使用iptables进行数据过滤,建立在iptables之上,这可能会与 Docker 产生冲突。
当 firewalld 启动或者重启的时候,将会从 iptables 中移除 DOCKER 的规则,从而影响了 Docker 的正常工作。
问题二
[root@CentOs7_001 ~]# netstat -tanlp
-bash: netstat: command not found
- 问题复现复述
使用 netstat -tanlp 查看进程使用报错
- 解决方案
更新yum工具包下的配置
1 | yum install -y net-tolls |
问题三
[root@CentOs7_001 log]# docker logs -f 7d3edae397c1
2023-05-29 15:26:52+00:00 [Note][Entrypoint]: Entrypoint script for MySQL Server 5.7.36-1debian10 started.
2023-05-29 15:26:52+00:00 [ERROR][Entrypoint]: mysqld failed while attempting to check config
command was: mysqld –verbose –help –log-bin-index=/tmp/tmp.S3R6HCPiAQ
2023-05-29T15:26:52.338540Z 0 [ERROR] COLLATION ‘utf8_general_ci’ is not valid for CHARACTER SET ‘latin1’
2023-05-29T15:26:52.341808Z 0 [ERROR] Aborting
- 问题复现复述
启动mysql容器,启动配置如下
docker run -d -p 3306:3306 –privileged=true
-v /mydata/mysql/log:/var/log/mysql
-v /mydata/mysql/data:/var/lib/mysql
-v /mydata/mysql/conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=root
–name mysql mysql:5.7挂载外部的配置
[root@CentOs7_001 conf]# cat my.cnf
[client]
default_character_set=utf8[mysqld]
Collation_server = utf8_general_ci
character_set_server = utf8
- 解决方案
1 | ## 查看my.cnf的配置,修改配置 |
- 原因
疑似:
上文配置中
[mysqld]
Collation_server = utf8_general_ci
character_set_server = utf8
字母大小写或者配置顺序的问题;后续可以多方面测试…得出最终结论