Vagrant의 CoreOS - 인터페이스

Vagrant의 CoreOS - 인터페이스

CoreOS의 네트워킹 모델을 이해하려고 노력하고 있지만 운영 체제가 내 뜻대로 구부러지도록 할 수 없습니다.

내가 직면한 문제는 서비스당 고유한 IP+포트 튜플을 용이하게 하기 위해 컨테이너 내부의 오버레이 네트워크로 weave를 사용하고 싶다는 것입니다.

그러나 vagrant 및 virtualbox를 사용하여 랩탑에서 CoreOS를 테스트할 때 Docker 데몬이 10.1.0.0/16이 아닌 다른 cidr을 사용해야 한다는 것을 CoreOS에서 허용하도록 할 수 없습니다. 이미 완료되었음에도 불구하고:

cp /usr/lib/systemd/system/docker.service /etc/systemd/system/
vim /etc/systemd/system/docker.service

다음 항목에 포함하세요 user-data.

  3   units:
  2     - name: docker.service
  1       command: restart
  0       content: |
  1         [Unit]
  2         Description=Docker Application Container Engine
  3         Documentation=http://docs.docker.com
  4         After=docker.socket early-docker.target network.target
  5         Requires=docker.socket early-docker.target
  6
  7         [Service]
  8         Environment=TMPDIR=/var/tmp
  9         EnvironmentFile=-/run/flannel_docker_opts.env
 10         MountFlags=slave
 11         LimitNOFILE=1048576
 12         LimitNPROC=1048576
 13         ExecStart=/usr/lib/coreos/dockerd --daemon --host=fd:// --icc=false --fixed-cidr=172.17.42.0/16 $DOCKER_OPTS $    DOCKER_OPT_BIP $DOCKER_OPT_MTU $DOCKER_OPT_IPMASQ
 14
 15         [Install]
 16         WantedBy=multi-user.target
 17

머신을 다시 시작하고 docker를 다시 시작했는데 다음과 같은 메시지가 표시되어 시작할 수 없습니다.

● docker.service - Docker Application Container Engine
   Loaded: loaded (/etc/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: failed (Result: start-limit) since Fri 2015-03-06 08:53:40 UTC; 13s ago
     Docs: http://docs.docker.com
  Process: 2331 ExecStart=/usr/lib/coreos/dockerd --daemon --host=fd:// --bridge=docker0 --icc=false --fixed-cidr=172.17.42.0/16 $DOCKER_OPTS $DOCKER_OPT_BIP $DOCKER_OPT_MTU $DOCKER_OPT_IPMASQ (code=exited, status=1/FAILURE)
 Main PID: 2331 (code=exited, status=1/FAILURE)

Mar 06 08:53:40 core-01 dockerd[2331]: network does not contain specified subnet
Mar 06 08:53:40 core-01 dockerd[2331]: time="2015-03-06T08:53:40Z" level="info" msg="-job init_networkdriver() = ERR (1)"
Mar 06 08:53:40 core-01 dockerd[2331]: time="2015-03-06T08:53:40Z" level="fatal" msg="network does not contain specified subnet"
Mar 06 08:53:40 core-01 systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
Mar 06 08:53:40 core-01 systemd[1]: Unit docker.service entered failed state.
Mar 06 08:53:40 core-01 systemd[1]: docker.service failed.
Mar 06 08:53:40 core-01 systemd[1]: Starting Docker Application Container Engine...
Mar 06 08:53:40 core-01 systemd[1]: start request repeated too quickly for docker.service
Mar 06 08:53:40 core-01 systemd[1]: Failed to start Docker Application Container Engine.
Mar 06 08:53:40 core-01 systemd[1]: docker.service failed.

왜 이런거야?

이것은 docker0 인터페이스입니다:

4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 56:84:7a:fe:97:99 brd ff:ff:ff:ff:ff:ff
    inet 172.17.42.1/16 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::5484:7aff:fefe:9799/64 scope link
       valid_lft forever preferred_lft forever

답변1

고정된 CIDR이 아닌 일시적인 구성 설정을 찾고 있습니다 --bip=172.17.42.1/16.

또한 브리지 인터페이스를 수동으로 제거해야 합니다.

                 ip link set dev docker0 down
core-01 system # brctl delbr docker0
core-01 system # systemctl daemon-reload
core-01 system # systemctl start docker
core-01 system # journalctl -fu docker.service

관련 정보