Ubuntu系统 配置docker tcp访问

Ubuntu系统 配置docker tcp访问

网上大部分配置方法为直接修改/lib/systemd/system/docker.service文件,本人试了没有效果,最后参考官网的方式:https://docs.docker.com/engine/install/linux-postinstall/#configure-where-the-docker-daemon-listens-for-connections
使用systemctl直接编辑docker.service的配置:

sudo EDITOR=vim systemctl edit docker.service

不会用 systemctl edit,上面的命令为使用vim编辑器编辑。

在里面贴上如下内容:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

重新加载系统服务配置文件(包含刚刚修改的文件)

 systemctl daemon-reload

重启docker服务

 systemctl restart docker

使用如下命令查看tcp访问端口是否开启

 sudo netstat -lntp | grep dockerd

在这里插入图片描述

执行下面命令可以利用tcp连接看到docker版本信息

curl dgx.server.ustb-ai3d.cn:2375/version

在这里插入图片描述
上面的官网链接还介绍了配置daemon.json实现tcp连接的方法。

### 解决Ubuntu系统Docker 80端口被占用的问题 在处理Docker容器的端口映射时,如果遇到80端口已经被其他应用程序占用的情况,可以采取多种方式来解决问题。 #### 方法一:查找并终止占用80端口的服务 可以通过`lsof`或`netstat`命令找出哪个进程占用了80端口,并决定是否停止该服务。具体操作如下: ```bash sudo lsof -i :80 | grep LISTEN ``` 上述命令将会显示监听于80端口上的所有程序及其PID。一旦确认了不需要继续运行的应用,则可通过kill指令结束它: ```bash sudo kill -9 PID ``` 这里需要替换实际查到的PID号[^4]。 #### 方法二:更改Docker应用使用的外部端口号 当不想影响现有正在使用80端口的服务时,可以选择修改启动参数让Docker实例绑定至另一个可用端口。例如,将原本打算映射给内部Web服务器的80端口改为8080或其他未被占用的端口,在执行docker run命令时指定新的端口映射关系: ```bash docker run -d -p 8080:80 webapp_image_name ``` 这表示主机上的8080端口会被映射到容器内的80端口上[^3]。 #### 方法三:配置防火墙规则(UFW) 有时即使没有明显看到有其他软件在使用80端口,仍然可能出现连接失败的现象。这时可能是由于UFW(Uncomplicated Firewall)阻止了入站流量所致。为了允许HTTP请求通过,默认情况下应开放80端口: ```bash sudo ufw allow 'Nginx Full' ``` 对于自定义设置或是非标准web服务器,可以直接添加相应端口: ```bash sudo ufw allow 80/tcp ``` 之后记得保存变更并重新加载UFW配置以使改动生效。 #### 方法四:检查网络接口配置 值得注意的是,有时候问题并非出自端口本身而是网络环境的变化引起。比如提到过的VMware环境下Ubuntu虚拟机中的情况,可能会因为某些原因造成docker0网桥失去IPv4地址从而影响到端口转发功能。此时建议先尝试简单的解决方案如重启虚拟机或者仅重启Docker服务来看看能否恢复正常的IP分配机制[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值