一、 mysql
docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
问题1:
dockers run之后,docker ps 发现容器Exited了
运行 docker logs mysql
,显示 mysqld: Can't read dir of '/etc/mysql/conf.d/'
解决:
https://blog.csdn.net/qq_45564783/article/details/126440171
查找资料知道了,mysql修改了配置文件路径
- 不带配置文件映射启动mysql
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
- 查看容器运行情况并顺便复制容器id
docker ps
- 把容器的配置文件复制出来
docker cp 940c01a21882:/etc/mysql/ /mydata/mysql/conf
(940c01a21882是容器id) - 进入/mydata/mysql/conf路径,查看复制出来的文件
cd /mydata/mysql/conf
mysql文件夹下有三个文件 conf.d my.cnf mysql.conf.d
- 因为关联的是/mydata/mysql/conf这个路径,所以把这三个文件全部复制到/mydata/mysql/conf路径下
cp -r conf.d/ /mydata/mysql/conf
cp my.cnf /mydata/mysql/conf
cp -r mysql.conf.d /mydata/mysql/conf
- 配置文件my.cnf中 !includedir 的路径为my.conf.d,但是这个文件已经没有了,所以要更改my.conf.d为conf.d
vim my.cnf
- 停止运行容器并删除容器
docker stop mysql
docker rm mysql
- 重新创建容器
- docker ps 查看mysql运行正常,问题解决
四、Elasticsearch
启动 容器
docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
-e "discovery.type=single-node" \
-e "cluster.name=elasticsearch" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx1024m" \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-d elasticsearch:7.17.3
问题1
启动容器报错
docker: Error response from daemon: driver failed programming external connectivity on endpoint elasticsearch (3154e04c8d09de6bcb02a7a441d32f8ff4315b67cc32da6879f): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9301 -j DNAT --to-destination 172.17.0.5:9300 ! -i docker0: iptables: No chain/target/match by that name. (exit status 1)).
解决:
https://blog.csdn.net/qq_24452475/article/details/83901620
更改防火墙配置后导致的,需要重启docker
- 重启docker服务
service docker restart
- 删除已创建的Elasticsearch容器
docker rm elasticsearch
- 再次重新创建容器,成功