Docker 기본 게이트웨이 수정
기사 배경:
근거리 통신망에서 Docker를 사용할 때 우리가 직면하는 가장 일반적인 혼란 중 하나는 네트워크 세그먼트 전체에서 네트워크가 차단되는 경우가 있다는 것입니다. 그 이유는 Docker가 기본적으로 생성한 게이트웨이가 때때로 LAN 세그먼트와 충돌하기 때문입니다. 예를 들어 Docker가 172.16 네트워크 세그먼트의 시스템에 배포되고 결과 docker0 브리지가 172.17 네트워크 세그먼트인 경우 이는 동일합니다. 실제 환경에서 사용되는 것과 같습니다. 네트워크 세그먼트의 머신 간에 충돌이 있습니다. 즉, 172.17 네트워크 세그먼트의 머신은 핑을 할 수 없습니다.
(권장 튜토리얼: docker 튜토리얼)
충돌을 피하기 위해 가장 먼저 떠오르는 것은 게이트웨이를 변경하는 것입니다. 예를 들어 Centos를 예로 들면 다음과 같습니다.
service docker stop # 删除docker防火墙过滤规则 iptables -t nat -F POSTROUTING # 删除docker默认网关配置 ip link set dev docker0 down ip addr del 172.17.0.1/16 dev docker0 # 增加新的docker网关配置 ip addr add 192.168.2.1/24 dev docker0 ip link set dev docker0 up # 检测是否配置成功,如果输出信息中有 192.168.5.1,则表明成功 ip addr show docker0 service docker start # 验证docker防火墙过滤规则
이 변경 후에는 믿을 수 있나요? 대답은 '아니요'입니다. 왜냐하면 docker가 다시 시작된 후에도 docker0이 여전히 다시 빌드되어 우리가 수정한 내용을 덮어쓸 수 있기 때문입니다. 이는 Docker의 IP 규칙이 하드 코딩되어 있으며 이를 임의로 변경할 수 없음을 보여줍니다. 하지만 생각을 바꿔 docker0을 직접 종료하고 새 브리지를 다시 구축해 보겠습니다.
먼저 브리지 생성 도구 brctl을 설치해야 합니다.
sudo yum install -y bridge-utils
생성 작업 시작:
# 1.停止 Docker 服务 service docker stop # 2.创建新的网桥(新的网段) brctl addbr bridge0 ip addr add 192.168.2.1/24 dev bridge0 ip link set dev bridge0 up # 3.确认网桥信息 ip addr show bridge0 # 4.修改配置文件 /etc/docker/daemon.json(如不存在则创建一个 touch daemon.json),使Docker启动时使用自定义网桥 { "bridge": "bridge0" } # 5.重启 Docker service docker start # 确认 NAT 网络路由 iptables -t nat -L -n # 6.删除不再使用的网桥 ip link set dev docker0 down brctl delbr docker0 iptables -t nat -F POSTROUTING
4단계에서 수정한 구성에 대해서는 여기를 참조하세요. 새 브리지는 실제로 docker 구성 파일에서 참조될 수 있습니다.
echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/sysconfig/docker sudo service docker start
그러나 이것이 default/docker 또는 sysconfig/docker가 없는 경우 docker 사용자 정의 구성 파일을 확실히 볼 수 있다는 의미는 아닙니다. 해결 방법은 다음과 같습니다.
$ vi /lib/systemd/system/docker.service #添加一行 $ EnvironmentFile=-/etc/default/docker 或者 $ EnvironmentFile=-/etc/sysconfig/docker #-代表ignore error #并修改 $ ExecStart=/usr/bin/docker daemon -H fd:// #改成 $ ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS #这样才能使用/etc/default/docker里定义的DOCKER_OPTS参数 $ systemctl daemon-reload 重载 $ sudo service docker restart
bridge0 생성을 완료하고 docker0에서 bridge0으로 전환한 후 보고 싶지 않은 172.17 네트워크 세그먼트가 있는지 확인하기 위해 라우팅할 수 있습니다.
없는 한 우리는 심장이 172.17 네트워크 세그먼트의 기계에 연결될 뿐만 아니라. 아직 남아 있는 경우 지워질 때까지 ip addr del 172.17.0.1/16 dev docker0 을 사용하십시오(새 docker 브리지가 설정되었으므로 이전 브리지를 삭제해도 docker 사용에 영향을 미치지 않습니다).
기기를 다시 시작한 후 brctl로 생성된 네트워크 브리지가 손실될 수 있는 경우 Linux 자체 시작 스크립트에 다음 명령을 작성하여 다시 시작할 때마다 실행할 수 있습니다.
brctl addbr bridge0 ip addr add 192.168.2.1/24 dev bridge0 ip link set dev bridge0 up
자체 시작 스크립트를 전달할 수 있습니다. /etc/rc에서 실행 가능한 명령문(예: sh /opt/script.sh &)을 .local 파일에 추가합니다. 이렇게 하면 기본적으로 머신을 다시 시작할 때마다 bridge0이 생성되는 것을 보장하고 docker 서비스가 정상적으로 시작될 수 있습니다.
추가: IP 네트워크 세그먼트 충돌을 해결하고 위의 복잡한 프로세스를 실행하고 싶지 않은 경우 실제로 "bip" 콘텐츠를 추가하여 /etc/docker/daemon.json을 변경할 수 있습니다: "ip/ netmask". docker0 브리지의 네트워크 세그먼트를 다음과 같이 변경합니다.
[root@iZ2ze278r1bks3c1m6jdznZ ~]# cat /etc/docker/daemon.json { "bip":"192.168.2.1/24" }
위 내용은 Docker 기본 게이트웨이 수정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

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

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

뜨거운 주제











도커 컨테이너를 종료하는 4 가지 명령 사용 Docker Kill & lt; Container_name & gt; 호스트 터미널의 명령 (힘 출구)

Docker의 외부 호스트에 파일을 복사하는 방법 : Docker CP 명령 사용 : Docker CP 실행 [옵션] & lt; 컨테이너 경로 & gt; & lt; 호스트 경로 & gt;. 데이터 볼륨 사용 : 호스트에서 디렉토리를 만들고 -V 매개 변수를 사용하여 양방향 파일 동기화를 달성하기 위해 컨테이너를 만들 때 컨테이너에 디렉토리를 장착하십시오.

단계를 따르면 Docker 컨테이너 이름을 쿼리 할 수 있습니다. 모든 컨테이너 (Docker PS)를 나열하십시오. 컨테이너 목록을 필터링합니다 (GREP 명령 사용). 컨테이너 이름 ( "이름"열에 위치)을 가져옵니다.

Docker 컨테이너를 다시 시작하는 방법 : 컨테이너 ID (Docker PS)를 가져옵니다. 컨테이너 중지 (Docker Stop & lt; container_id & gt;); 컨테이너를 시작하십시오 (Docker start & lt; container_id & gt;); 재시작이 성공했는지 확인하십시오 (Docker PS). 기타 방법 : Docker Compose (Docker-Compose Restart) 또는 Docker API (Docker 문서 참조).

Docker에서 MySQL을 시작하는 프로세스는 다음 단계로 구성됩니다. MySQL 이미지를 가져와 컨테이너를 작성하고 시작하고 루트 사용자 암호를 설정하고 포트 확인 연결을 매핑하고 데이터베이스를 작성하고 사용자는 데이터베이스에 모든 권한을 부여합니다.

Docker 이미지를 업데이트하는 단계는 다음과 같습니다. 최신 이미지 태그 가져 오기 새 이미지 특정 태그의 이전 이미지 삭제 (선택 사항) 컨테이너를 다시 시작하십시오 (필요한 경우)

Docker에서 컨테이너 만들기 : 1. 이미지를 당기기 : Docker Pull [Mirror Name] 2. 컨테이너 만들기 : Docker Run [옵션] [미러 이름] [명령] 3. 컨테이너 시작 : Docker Start [컨테이너 이름]

Docker Container Startup 단계 : 컨테이너 이미지를 당기기 : "Docker Pull [Mirror Name]"을 실행하십시오. 컨테이너 생성 : "docker"[옵션] [미러 이름] [명령 및 매개 변수]를 사용하십시오. 컨테이너를 시작하십시오 : "Docker start [컨테이너 이름 또는 ID]"를 실행하십시오. 컨테이너 상태 확인 : 컨테이너가 "Docker PS"로 실행 중인지 확인하십시오.
