docker가 호스트를 ping할 수 없는 문제에 대한 해결 방법: 1. daemon.json을 수정합니다. 2. 방화벽을 끄고 3. sysctl.conf를 수정합니다.
이 기사의 운영 환경: ubuntu16.04 시스템, Docker 20.10.11, Dell G3 컴퓨터.
Docker가 호스트를 ping할 수 없으면 어떻게 해야 합니까?
Docker 브리지 모드가 호스트를 ping할 수 없습니다.
문제 설명:
Docker
네트워크 모드는 다음과 같습니다. 네 가지 유형으로 구분되며, 일반적으로 컨테이너를 설정하지 않으면 기본값은 bridge
단일 브리지 모드이며 docker0에 연결됩니다.
가상 네트워크 카드. docker0
브리지 및 Iptables nat
테이블 구성을 통해 호스트와 통신합니다.
이때 배스천 머신에서 테스트하고 busybox
를 사용하여 테스트합니다. Docker
网络模式分为四种,一般我们不设置时默认为bridge
单桥模式,容器使用独立的network Namespace
,并连接到docker0
虚拟网卡中。通过docker0
网桥以及Iptables nat
表配置与宿主机通信。
此时在堡垒机上进行测试,利用busybox
进行测试:
# 拉取镜像 docker pull busybox # 运行容器 docker run -itd --name busy_bridge busybox
指令docker network inspect bridge
查看网络:
网路配置成功,进入容器内部,查看ip
,可以看到已经分配ip
,但是ping
外部网络时失败,无法连接外部网络:
但是在自己本地或者阿里云上进行相同的测试发现能够连通网络,这是什么问题导致的呢?
问题分析:
在网上找了一个资料后很多都是重启docker
,然后就能连上了,一般是因为修改了某个配置然后重启起作用,这里并没有什么作用。一般修改的分为几种,以下一一试验:
- 修改
daemon.json
容器无法访问宿主机是因为网桥分配的网段和宿主机冲突了,需要修改daemon.json
进行指定分配,使用指令vim /etc/docker/daemon.json
进入后添加:
{"bip":"172.16.10.1/24"}
虽然重启docker
并创建容器即可访问,但是,原本堡垒机和容器分配的ip
一点冲突也没有,该方法不行。
- 关闭防火墙
容器无法通过网桥访问宿主机,也就无法访问外网,可能是防火墙阻止访问,可以关闭防火墙或者开启某个端口。在服务器上测试,开启防火墙,发现容器确实无法访问百度首页也确实无法访问宿主机,在关闭防火墙并重启docker
后,容器就能正常访问了。
但是,堡垒机上的防火墙原本就是关闭的,该方法也没用。
- 修改
sysctl.conf
docker
主机内部网络正常,与其它主机的连接失效,其它主机不能连接docker
主机上映射的端口,docker
内部也无法连接外部主机,利用docker info
指令查看信息发现报错如下:
WARNING: IPv4 forwarding is disabled WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled
使用指令vim /etc/sysctl.conf
编辑配置文件,在文件中增加以下代码:
net.bridge.bridge-nf-call-ip6tables=1 net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-arptables=1 net.ipv4.ip_forward=1
然后使用指令systemctl restart network
重启网络,再次查看docker info
,警告消失。但是依旧没有用,堡垒机上的容器还是无法通过网桥访问宿主机,无法访问外网。
- 重设网桥
在使用指令yum install bridge-utils
安装工具后,利用brctl show
查看网桥,可以发现:
利用docker network create [网桥名]
指令新建网桥发现其生成的bridge id
还是8000.0000000000
,在新网桥上创建容器,再次查看并没有什么变化,说明很可能是网桥的问题。
再次测试,此时网桥ip
为172.17.0.1
,容器ip
为172.0.0.2
,发现宿主机能ping
service docker stop
docker network inform bridge
명령을 사용하여 네트워크를 확인합니다. 
ip
를 보면 ip
가 할당된 것을 볼 수 있지만 ping
은 외부 네트워크에 실패하여 외부에 연결할 수 없습니다. 네트워크: 
docker
를 다시 시작하면 연결이 되는 경우가 많습니다. 일반적으로 특정 구성을 수정한 후 다시 시작하면 작동하지만 작동하지 않습니다. 여기 무슨 효과. 몇 가지 일반적인 수정 사항이 있습니다. 아래에서 하나씩 시도해 보세요.🎜
- 🎜
daemon.json
🎜
daemon.json
을 수정해야 합니다. vim /etc/docker 명령을 사용하세요. /daemon.json
을 입력하세요. 나중에 추가됨: 🎜brctl addbr br0🎜
docker
를 다시 시작하고 컨테이너를 생성하면 액세스할 수 있지만 ip는 원래 배스천 호스트와 컨테이너에 의해 할당되므로 이 방법은 작동하지 않습니다. 🎜<ol start="2"><li>🎜방화벽을 끄세요🎜</li></ol>🎜 컨테이너가 브리지를 통해 호스트에 접근할 수 없으므로, 방화벽이 차단하고 있을 수 있습니다. 액세스하여 방화벽을 끄거나 포트를 열 수 있습니다. 서버에서 테스트하고 방화벽을 켠 결과 실제로 컨테이너가 Baidu 홈페이지와 호스트에 액세스할 수 없는 것으로 확인되었습니다. 방화벽을 닫고 <code>docker
를 다시 시작하면 컨테이너에 정상적으로 액세스할 수 있었습니다. 그러나 배스천 머신의 방화벽은 원래 꺼져 있기 때문에 이 방법은 쓸모가 없습니다. 🎜
- 🎜
sysctl.conf
🎜
docker
호스트의 내부 네트워크는 다음과 같습니다. 정상이고 다른 호스트에 연결되어 있습니다. 연결이 잘못되었으며, 다른 호스트는 docker
호스트에 매핑된 포트에 연결할 수 없으며, docker
는 내부적으로 외부 호스트에 연결할 수 없습니다. code>docker info 명령을 사용하여 정보를 확인했습니다. 다음 오류가 발견되었습니다. 🎜ip addr add 172.16.0.1/24 dev br0🎜
vim /etc/sysctl.conf
명령을 사용하여 구성 파일을 편집하고 다음 코드를 추가하세요. 🎜ip link set dev br0 up🎜 그런 다음
systemctl restart network
명령을 사용하여 네트워크를 다시 시작하고 docker info
를 다시 확인하면 경고가 사라집니다. 하지만 여전히 쓸모가 없습니다. 요새 머신의 컨테이너는 여전히 브리지를 통해 호스트 머신에 액세스할 수 없으며 외부 네트워크에 액세스할 수도 없습니다. 🎜- 🎜브리지 재설정🎜
yum install bridge-utils
명령을 사용하여 도구를 설치한 후 brctl show
네트워크 브리지를 보면 다음을 찾을 수 있습니다.
docker network create [bridge name]
명령을 사용하여 새 브리지를 생성하고 생성된 브리지 ID
가 무엇인지 확인합니다. 여전히 8000.0000000000, 새 브리지에 컨테이너를 생성하고 다시 확인하면 변경 사항이 없으므로 브리지에 문제가 있을 수 있음을 나타냅니다. <br> 다시 테스트해 보세요. 이때 <code>ip
브리지는 172.17.0.1
이고 컨테이너 ip
는 172.0.0.2입니다.
를 통해 호스트가 네트워크 브리지를 통해 ping
할 수 있지만 컨테이너에 연결할 수 없으며 컨테이너가 외부 네트워크는 물론 브리지나 호스트에 연결할 수 없다는 사실을 발견했습니다. 그래서 그것은 네트워크 브리지에 관한 질문임에 틀림없습니다. 🎜问题解决
这里docker network
生成新的网桥不行,说明docker
的network
存在问题,我们利用刚才下载的bridge-utils
来创建网桥。
首先暂停docker
服务,利用指令:
service docker stop
添加网桥:
brctl addbr br0
添加ip
字段:
ip addr add 172.16.0.1/24 dev br0
启用网桥br0
:
ip link set dev br0 up
查看网络br0
:
修改docker
默认网桥:
vim /etc/docker/daemon.json
添加字段:
"bridge":"br0"
重启docker
:
service docker start
此时查看网桥:
在没有挂载容器前,依旧是8000.000000000000
。运行测试容器:
docker run -itd --name busy_test busybox
查看docker가 호스트를 ping할 수 없으면 어떻게 해야 합니까?:
此时容器挂载在网桥上了,再次查看网桥id
:
说明已经其作用,进入测试容器内部,docker가 호스트를 ping할 수 없으면 어떻게 해야 합니까?:
成功!
补充:这里使用docker network
新建网桥,没有用,发现新建网桥挂载容器后,其bridge id
依旧不变,没有起作用,说明堡垒机上的docker network
可能存在问题。
问题补充:
上面的问题是创建自定义网桥,然后在自定义网桥上连接容器a
和b
,结果宿主机无法ping
通a
、b
,且进入容器内部后,两个容器无法ping
通自定义网络,但能彼此相通。
查了很多资料,发现了这篇文章。博主说问题原因是系统内核的网桥模块bridge.ko
加载失败导致,解决问题的方案是升级内核或升级系统。
升级centos
内核参考这篇。
升级完成后,重装Docker
,自定义网桥和容器,成功!不再有网络问题。
推荐学习:《docker视频教程》
위 내용은 docker가 호스트를 ping할 수 없으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Docker 모니터링의 핵심은 주로 CPU 사용, 메모리 사용, 네트워크 트래픽 및 디스크 I/O와 같은 지표를 포함하여 컨테이너의 작동 데이터를 수집하고 분석하는 것입니다. Prometheus, Grafana 및 Cadvisor와 같은 도구를 사용하면 컨테이너의 포괄적 인 모니터링 및 성능 최적화를 달성 할 수 있습니다.

Dockerswarm은 확장 가능한 고도로 컨테이너 클러스터를 구축하는 데 사용될 수 있습니다. 1) Dockers -Warminit을 사용하여 떼 클러스터를 초기화하십시오. 2) Swarm 클러스터에 가입하여 Dockers-Warmjoin-Token을 사용하십시오. 3) DockerserviceCreate-namemy-nginx-replicas3nginx를 사용하여 서비스를 만듭니다. 4) DockerstackDeploy-Cdocker-Compose.ymlmyapp을 사용하여 복잡한 서비스를 배포합니다.

Docker 및 Kubernetes를 사용하여 Enterprise Applications의 컨테이너 오케스트레이션을 수행하는 방법은 무엇입니까? 다음 단계를 통해 구현하십시오. Docker 이미지를 만들고 DockerHub로 푸시하십시오. Kubernetes에서 배포 및 서비스를 작성하여 응용 프로그램을 배포하십시오. 외부 액세스를 관리하기 위해 Insress를 사용하십시오. 성능 최적화 및 다단장 구성 및 자원 제약과 같은 모범 사례를 적용하십시오.

Docker FAQ는 다음 단계를 통해 진단 및 해결할 수 있습니다. 1. 컨테이너 상태 및 로그보기, 2. 네트워크 구성 확인, 3. 볼륨이 올바르게 장착되도록하십시오. 이러한 방법을 통해 Docker의 문제는 빠르게 위치하고 고정되어 시스템 안정성과 성능을 향상시킬 수 있습니다.

Docker는 DevOps 엔지니어에게 필수 기술입니다. 1. Docker는 포장 애플리케이션 및 컨테이너에 대한 종속성을 통해 격리 및 휴대 성을 달성하는 오픈 소스 컨테이너화 플랫폼입니다. 2. Docker는 네임 스페이스, 제어 그룹 및 연합 파일 시스템과 함께 작동합니다. 3. 기본 사용에는 컨테이너 생성, 실행 및 관리가 포함됩니다. 4. 고급 사용법에는 DockerCompose를 사용하여 다중 컨테이너 응용 프로그램을 관리하는 것이 포함됩니다. 5. 일반적인 오류에는 컨테이너 고장, 포트 매핑 문제 및 데이터 지속성 문제가 포함됩니다. 디버깅 기술에는 로그보기, 컨테이너 입력 및 자세한 정보보기가 포함됩니다. 6. 성능 최적화 및 모범 사례에는 이미지 최적화, 리소스 제약 조건, 네트워크 최적화 및 Dockerfile 사용을위한 모범 사례가 포함됩니다.

Docker Security 향상 방법에는 다음이 포함됩니다. 1.-캡 드롭 매개 변수를 사용하여 Linux 기능을 제한, 2. 읽기 전용 컨테이너 생성, 3. Selinux 태그 설정. 이러한 전략은 취약성 노출을 줄이고 공격자 기능을 제한함으로써 컨테이너를 보호합니다.

DockErvolumes는 컨테이너가 다시 시작, 삭제 또는 마이그레이션 될 때 데이터가 안전하게 유지되도록합니다. 1. 볼륨 생성 : dockervolumecreatemydata. 2. 컨테이너를 실행하고 볼륨을 장착하십시오 : Dockerrun-it-vmydata :/app/dateubuntubash. 3. 고급 사용에는 데이터 공유 및 백업이 포함됩니다.

Docker는 브리지 네트워크, 호스트 네트워크 및 오버레이 네트워크의 세 가지 주요 네트워크 모드를 제공합니다. 1. Bridge Network는 단일 호스트의 대기업 통신에 적합하며 가상 브리지를 통해 구현됩니다. 2. 호스트 네트워크는 고성능 네트워크가 필요한 시나리오에 적합하고 컨테이너는 호스트의 네트워크 스택을 직접 사용합니다. 3. 오버레이 네트워크는 다중 호스트 Dockerswarm 클러스터에 적합하며 가상 네트워크 계층을 통해 크로스 호스트 통신이 실현됩니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

드림위버 CS6
시각적 웹 개발 도구

뜨거운 주제



