docker 安装mysql
1、 拉取最新的数据库镜像
docker pull mysql:latest
2、 查看是否安装成功
docker images
3、 启动镜像
docker run -p 33306:3306 --name mysql-docker -e MYSQL_ROOT_PASSWORD=Ldm_root -d mysql
此时镜像已经启动
如果远程连接的时候出现”Unknown error“
需要在控制端开放”3306“端口
此时再次测试链接:
中途异常:
1、 启动镜像的时候异常,异常情况如下:
错误信息:
docker: Error response from daemon: driver failed programming external connectivity on endpoint mysqldb (47c461a304f355052b2ca603dea09622dcb660c59c840d67ed285e236b44cf28): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306 -j DNAT --to-destination 172.17.0.4:3306 ! -i docker0: iptables: No chain/target/match by that name. (exit status 1)). ERRO[0034] error waiting for container: context canceled
原因:docker服务启动时定义的自定义链DOCKER由于 centos7 firewall 被清掉
firewall的底层是使用iptables进行数据过滤,建立在iptables之上,这可能会与 Docker 产生冲突。
当 firewalld
启动或者重启的时候,将会从 iptables 中移除 DOCKER
的规则,从而影响了 Docker 的正常工作。
使用的是 Systemd 的时候, firewalld
会在 Docker 之前启动,但是如果你在 Docker 启动之后再启动 或者重启 firewalld
,你就需要重启 Docker 进程了。
解决方式:
重启dockers:
systemctl restart docker
重启原来项目:
docker restart 镜像id
然后重新启动该镜像