>  기사  >  운영 및 유지보수  >  Docker를 사용하여 네트워크 브리지를 수동으로 추가하는 방법에 대한 자세한 설명

Docker를 사용하여 네트워크 브리지를 수동으로 추가하는 방법에 대한 자세한 설명

Y2J
Y2J원래의
2017-05-24 14:25:064140검색

이번 글은 주로 Docker에서 커스텀 네트워크 브리지를 추가하는 방법을 소개합니다. 편집자는 꽤 좋다고 생각해서 지금부터 공유하고 참고용으로 올려드리겠습니다. 편집기를 따라 살펴보겠습니다.

Docker 서비스 프로세스가 시작되면 docker0이라는 네트워크 브리지가 생성됩니다. 컨테이너는 기본적으로 이 브리지에 마운트되지만 docker 시작 매개변수 -b를 추가할 수 있습니다. Birdge를 사용하거나 docker구성 파일을 변경하여 사용할 브리지를 선택하세요.

운영 체제: centos7

삭제docker0 bridge

service docker stop //关闭docker服务 
ip link set dev docker0 down //关闭docker0网桥  
ip link del dev docker0    //删除docker0网桥

사용자 정의 브리지 설정(/etc/sysconfig/network-scripts/ifcfg-br0 파일)

DEVICE="br0" 
ONBOOT="yes" 
TYPE="Bridge" 
BOOTPROTO="static" 
IPADDR="10.10.10.20" 
NETMASK="255.255.255.0" 
GATEWAY="10.10.10.20" 
DEFROUTE="yes" 
NM_CONTROLLED="no"

네트워크 서비스 다시 시작

service network restart

네트워크 브리지 보기

[black@test opt]$ brctl show 
bridge name   bridge id        STP enabled   interfaces 
br0       8000.32e7297502be    no        
virbr0     8000.000000000000    yes

다음으로 docker를 다시 시작해야 합니다. docker 서비스를 시작할 수 있습니다. 프로세스 중에 다음 두 가지 방법이 사용됩니다.

첫 번째 방법: -b 매개변수는 네트워크 브리지를 지정합니다.

[root@test opt]# docker -d -b br0 
INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)  
INFO[0000] [graphdriver] using prior storage driver "devicemapper"  
WARN[0000] Running modprobe bridge nf_nat failed with message: , error: exit status 1  
INFO[0000] Loading containers: start.           
...... 
INFO[0000] Loading containers: done.           
INFO[0000] Daemon has completed initialization      
INFO[0000] Docker daemon   commit=786b29d execdriver=native-0.2 graphdriver=devicemapper version=1.7.1

Docker 서비스 프로세스를 시작하는 이유를 모르겠습니다. 이렇게 하면 현재 터미널( ︶︿︶)이 차단되므로 터미널을 다시 열고 컨테이너를 실행해야 했습니다.

[root@test shell]# docker run -ti --rm centos:latest 
[root@3c6874559411 /]# ifconfig 
eth0   Link encap:Ethernet HWaddr 02:42:0A:0A:0A:01  
     inet addr:10.10.10.1 Bcast:0.0.0.0 Mask:255.255.255.0 
     inet6 addr: fe80::42:aff:fe0a:a01/64 Scope:Link 
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
     RX packets:5 errors:0 dropped:0 overruns:0 frame:0 
     TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 
     collisions:0 txqueuelen:0  
     RX bytes:418 (418.0 b) TX bytes:508 (508.0 b)

컨테이너가 br0 브리지를 성공적으로 사용했습니다.

두 번째: /etc/sysconfig/docker 파일 수정

이 작업을 수행할 때 약간의 문제가 발생하여 /etc/sysconfig/docker를 수정했습니다. file

[root@test opt]# vi /etc/sysconfig/docker  
# /etc/sysconfig/docker 
# 
# Other arguments to pass to the docker daemon process 
# These will be parsed by the sysv initscript and appended 
# to the arguments list passed to docker -d 
 
other_args="-b br0"

그런 다음 service docker start를 사용하여 docker 서비스를 시작했지만 other_args가 적용되지 않습니다. centos7에서는 servicer docker start가 계속 systemctl start docker.service 명령을 사용하여 실행되므로 확인/ usr/lib/systemd/system/docker.service

[root@test opt]# vi /lib/systemd/system/docker.service  
[Unit] 
Description=Docker Application Container Engine 
Documentation=https://docs.docker.com 
After=network.target docker.socket 
Requires=docker.socket 
[Service] 
ExecStart=/usr/bin/docker -d -H fd:// 
MountFlags=slave 
LimitNOFILE=1048576 
LimitNPROC=1048576 
LimitCORE=infinity 
 
[Install] 
WantedBy=multi-user.target

는 ExecStart 항목에 실행 매개변수가 없다는 것을 발견하여 ExecStart를 /usr/bin/docker -d -b br0 -H fd:/로 변경했습니다. /, docker 서비스를 실행하고 컨테이너를 시작한 후 br0 브리지를 성공적으로 사용할 수 있는지 확인합니다.

인터넷에서 더 좋은 방법을 봤습니다. docker.service를 다음

[black@test ~]$ vi /usr/lib/systemd/system/docker.service  
[Unit] 
Description=Docker Application Container Engine 
Documentation=https://docs.docker.com 
After=network.target docker.socket 
Requires=docker.socket 
[Service] 
EnvironmentFile=-/etc/sysconfig/docker 
ExecStart=/usr/bin/docker -d $other_args -H fd:// 
MountFlags=slave 
LimitNOFILE=1048576 
LimitNPROC=1048576 
LimitCORE=infinity 
 
[Install] 
WantedBy=multi-user.target

로 변경하세요. 이때 other_args에 추가된 매개변수가 적용됩니다.

[관련 추천]

1. Mysql 무료 동영상 튜토리얼

데이터 가져오기 시 innodb_index_stats에 대한 자세한 설명 프롬프트 테이블 기본 키 충돌 오류

3. Linux에서 zip 파일의 압축을 풀 때 잘못된 문자가 나타나면 어떻게 해야 하나요?

4. Linux에서 파티션 크기를 조정하는 방법을 알려주세요

5. Linux에서 서버 네트워크 상태를 감지하는 방법

위 내용은 Docker를 사용하여 네트워크 브리지를 수동으로 추가하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.