使用docker构建容器的错误记录【持续更新】

错误记录

全部简洁说明,按照我的错误解决,仅供有需要的人参考。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值