docker 运行直接报错
WARNING: IPv4 forwarding is disabled. Networking will not work.
第一步:在宿主机上执行
1 [root@localhost /]# echo "net.ipv4.ip_forward=1" >>/usr/lib/sysctl.d/00-system.conf
第二步:重启 network 和 docker 服务
1 [root@localhost /]# systemctl restart network && systemctl restart docker
第三步:验证是否成功
Docker 已存在的容器,怎么添加新端口号
查看容器端口映射情况
查询容器在本机位置
1 docker inspect 容器ID | grep 容器ID
进入容器目录需修改 2 个文件
config.v2.json
hostconfig.json
备份原始配置
为了保证安全,我们修改配置后容器出问题,建议把之前的配置文件备份下:
备份文件
如果容器运行出问题就把备份文件名称后面的.bak 去掉
关闭 docker 进程
1 2 3 $ service docker stop 或 $ systemctl stop docker
运行完关闭命令后查看
再次查看 docker 进程是否还在运行
注意:此时由上述命令运行结果可以看出没有在运行,就不要再运行 Docker 的命令,不然程序会自动启动
修改配置文件
修改 config.v2.json
修改 config.v2.json 查看内部 json 数据
可以把 json 复制到在线网站去格式化,看起来美观些,格式化后我们找到 Config->ExposedPorts 里面添加想要的端口号格式为
修改到配置文件中
修改配置 hostconfig.json
修改 vim hostconfig.json 查看内部 json 数据
找到 PortBindings 参数内添加信息
修改自己需要绑定的端口信息,格式为
1 2 3 4 5 6 "容器内部的端口/tcp" :[ { "HostIp" : "" , "HostPort" : "绑定宿主机的端口" } ]
配置信息后添加保存
启动 Docker
1 2 3 service docker start 或 systemctl restart docker
查看容器端口映射信息
一键安装
1 bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/DockerInstallation.sh)
参考链接
https://blog.csdn.net/qq_45502336/article/details/126135157
docker cli 部署的容器和 docker compose 部署的容器(自定义网络),双方内部如何才能互相 ping 通
Docker CLI 部署的容器和 Docker Compose 部署的容器,内部网络默认是使用 Docker 网桥,它们在同一个网络中,因此可以相互访问。假设有一个由 Docker Compose 部署的容器应用程序(自定义网络),它的服务名为 web,暴露了一个 HTTP 服务。现在我们想从由 Docker CLI 部署的容器中访问该服务。
确定 Docker Compose 容器所在的网络
Docker Compose 会为应用程序创建一个默认网络。我们可以使用以下命令来查看该网络:
找到应用程序的网络名称,例如 myapp_default。
1 2 3 4 5 6 7 8 9 10 11 12 root@VM-24-11-ubuntu:/data/docker/mysql# docker-compose up -d Creating network "mysql_default" with the default driver Creating mysql_phpmyadmin_1 ... done Creating mysql_db_1 ... done root@VM-24-11-ubuntu:/data/docker/mysql# docker network ls NETWORK ID NAME DRIVER SCOPE 20f53b127fad bridge bridge local 667cea2f4d50 host host local 6051526b2b77 mysql_default bridge local eb37be31f571 none null local d5453e31729c wordpress_default bridge local
连接到 Docker Compose 容器所在的网络
使用以下命令连接到 Docker Compose 容器所在的网络:
1 docker network connect myapp_default <docker_cli_container_name>
其中,myapp_default 是应用程序的网络名称,<docker_cli_container_name> 是 Docker CLI 部署的容器名称。
1 root@VM-24-11-ubuntu:/data/docker/mysql# docker network connect mysql_default vscode-server(docker cli部署容器)
测试容器之间的连通性
现在我们可以从 Docker CLI 部署的容器中使用 ping 命令测试与 Docker Compose 容器之间的连通性:
1 docker exec <docker_cli_container_name> ping <docker_compose_container_name>
其中,<docker_cli_container_name> 是 Docker CLI 部署的容器名称,web 是应用程序中的服务名称。如果一切正常,你应该能够看到类似以下的输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 root@VM-24-11-ubuntu:/data/docker/mysql# docker exec vscode-server ping mysql_db_1 PING mysql_db_1 (172.25.0.2) 56(84) bytes of data. 64 bytes from mysql_db_1.mysql_default (172.25.0.2): icmp_seq=1 ttl=64 time =0.098 ms 64 bytes from mysql_db_1.mysql_default (172.25.0.2): icmp_seq=2 ttl=64 time =0.063 ms 64 bytes from mysql_db_1.mysql_default (172.25.0.2): icmp_seq=3 ttl=64 time =0.061 ms ^C root@VM-24-11-ubuntu:/data/docker/mysql# docker exec vscode-server ping mysql_phpmyadmin_1 PING mysql_phpmyadmin_1 (172.25.0.3) 56(84) bytes of data. 64 bytes from mysql_phpmyadmin_1.mysql_default (172.25.0.3): icmp_seq=1 ttl=64 time =0.087 ms 64 bytes from mysql_phpmyadmin_1.mysql_default (172.25.0.3): icmp_seq=2 ttl=64 time =0.067 ms 64 bytes from mysql_phpmyadmin_1.mysql_default (172.25.0.3): icmp_seq=3 ttl=64 time =0.095 ms 64 bytes from mysql_phpmyadmin_1.mysql_default (172.25.0.3): icmp_seq=4 ttl=64 time =0.063 ms ^C root@VM-24-11-ubuntu:/data/docker/mysql# ^C
注意,如果你的应用程序使用了自定义网络,你需要使用自定义网络名称代替默认名称。同时,还需要确保 Docker Compose 和 Docker CLI 部署的容器都在同一个网络中
普通用户如何执行 docker 命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1.创建docker用户组 [admin@Centos8 local ]$ sudo groupadd docker 2.将admin用户填进docker组中 [admin@Centos8 local ]$ sudo gpasswd -a ${USER} admin 3.重启docke服务 [admin@Centos8 local ]$ sudo service docker restart Redirecting to /bin/systemctl restart docker.service [admin@Centos8 local ]$ docker ps 4.如果普通用户执行docker命令,如果提示get …… dial unix /var/run/docker.sock权限不够,则修改/var/run/docker.sock权限 使用root用户执行如下命令,即可 Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json" : dial unix /var/run/docker.sock: connect: permission denied [admin@Centos8 local ]$ sudo chmod a+rw /var/run/docker.sock [admin@Centos8 local ]$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [admin@Centos8 local ]$