docker问题
docker问题
tcp6问题
docker run --rm -d -p 8080:80 -v $PWD:/usr/share/nginx/html nginx:1.17.5
报错如下:
docker: Error response from daemon: driver failed programming external connectivity on endpoint admiring_galois (61f530f9bf61e855d95b3556dd8acfdd5bf5a3938bae9305ef9ef62061e467d5): Error starting userland proxy: listen tcp6 [::]:8080: socket: address family not supported by protocol.
貌似说,什么协议不支持,我从docker的网络等方面猜想,无法解决。但是突然发现,tcp6,貌似,应该有个地方能设置,默认映射的端口协议。
故,强制的写成0.0.0.0:8080,这样,就能识别成tcp4协议了。
docker run --name nginx -d -p 0.0.0.0:8080:80 -v $PWD:/usr/share/nginx/html nginx:1.17.5
顺便说一句,貌似,写成127.0.0.1:8080,这样就能限制在本地,才能访问到服务。
有人说下面也能解决:
https://blog.csdn.net/weixin_39876595/article/details/111847160
vim /usr/lib/sysctl.d/00-system.conf
# 添加下面这一行。
net.ipv4.ip_forward=1
#重启网络
systemctl restart network
内部url访问。
同上。
权限问题
一般docker内的服务,如果不是以root账号运行的服务,那么,在访问系统时,同样会受到文件权限的影响。虽然也可以直接使用数字id,来修改一个不存在的用户的权限,但是,我还是比较习惯映射为本地用户。
以下为解决方案:
其他的,比如nginx等镜像,也会有文件权限问题。同样适用。本案例,针对云课堂的解决方式。
docker run --name cloud_teacher -itd -p 0.0.0.0:8005:80 -v /home/chaofml/git/cloud-teacher/cloud/:/yd/ \
-e redis_port=1016 \
-e redis_ip=10.172.48.32 \
phpenv:1.0
# 注意一下usermod、groupmod顺序。
docker exec -i cloud_teacher bash <<EOL
usermod -u 1001
groupmod -g 1001
EOL
docker-ce安装问题
见shell/yum.md文章。