错误记录
全部简洁说明,按照我的错误解决,仅供有需要的人参考。
1.redis
错误1:
Fatal error, can't open config file '/usr/local/etc/redis/redis.conf'
解决:我的是因为redis.conf
没有读写权限。先对本地redis.conf
做权限改变然后再重构镜像。
# 修改权限
chmod 644 redis.conf
# 写入dockerfile指令
cat > Dockerfile
FROM redis
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
# 构建docker镜像
docker build -t test-redis .
# 生成并启动docker容器
docker run -itd --name redis-cont-name -p 6379:6379 test-redis:latest
然后这样容器就可以运行成功了,可以通过docker ps
去看到redis-cont-name
这个容器在运行当中。
错误2:
Error: Connection reset by peer
在上面创建了容器后,通过redis-cli
去连接容器时却发生了这个错误。
解决:我的是因为没有关闭保护模式以及绑定的ip不应该指定127.0.0.1,对于跨容器或者本地连接,应使用0.0.0.0,以下给出我的错误解决方式修改redis.conf
两处:
bind 0.0.0.0 # <- 这里原先是127.0.0.1
protected-mode no # <- 这里原先是yes
然后删除旧的容器和镜像,重新构建,再启动,就好了。
补充:这里还有一种方式,使用隧道加密(stunnel)
,我没使用。参考链接:
stackoverflow
其它网站
2.Mysql
错误1:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
解决:通过错误可以看出是无法进行sock通信,我经常进入mysql是通过mysql -u root -p这种方式。在stackoverflow查找后,对我有效的解决方式是,加上-h 127.0.0.1
这个参数,完整的如下:
# 启动容器
docker run -it -p 3306:3306 --rm -e MYSQL_ROOT_PASSWORD=xxxxxx -d mysql:5.7
# 访问数据库
mysql -h 127.0.0.1 -u root -p
3.其他
错误:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"-p\": executable file not found in $PATH": unknown.
解决:这个错误的出现,对我来说是因为我把-p 80:80
这个参数写在了容器名称的后面,所以写在容器前面就好了。。。
docker run -itd --name nginx-test nginx:latest -p 80:80 # 错误写法
docker run -itd -p 80:80 --name nginx-test nginx:latest # 正确写法
参考链接:github#561