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文章。