環境
- Windows10
- WSL2(ubuntu20.04)
- Windows版VirtualBox6.1.18
- Windows版vagrant2.2.14
Vagrant 起動
ubuntu20.04をvagrantで起動します。
Vagrantfile は下記のとおり。
VirtualBoxのホストオンリーネットワークが、192.168.56.0/24 であることが前提です。
仮想マシンには 192.168.56.10の固定IPアドレスを割り当てます。
Vagrant.configure("2") do |config| config.vm.box = "bento/ubuntu-20.04" config.vm.network "private_network", ip: "192.168.56.10", auto_config: false config.vm.provider "virtualbox" do |vb| vb.memory = "2048" vb.name = 'ubuntu20' vb.cpus = 2 vb.customize ['modifyvm', :id, '--nicpromisc2', 'allow-all'] end # https://www.vagrantup.com/docs/synced-folders/nfs #config.vm.synced_folder ".", "/vagrant", type: "nfs" config.vm.provision "shell", inline: <<-SHELL apt update # japanese apt install language-pack-ja-base language-pack-ja -y localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja" timedatectl set-timezone Asia/Tokyo # docker apt install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" apt update apt install docker-ce -y usermod -aG docker vagrant curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose # https://qiita.com/sadapon2008/items/b5c83fedcb07de45f74e apt install bridge-utils ip addr flush dev eth1 docker network create --driver bridge --subnet=192.168.56.0/24 --gateway=192.168.56.10 --opt "com.docker.network.bridge.name"="docker1" my_bridge mkdir -p /etc/systemd/system/docker.service.d echo '[Service]' > /etc/systemd/system/docker.service.d/override2.conf echo 'ExecStartPost=/bin/sh -c "/usr/bin/sleep 1s; /usr/sbin/ip addr flush dev eth1; /usr/sbin/brctl addif docker1 eth1; ip link set eth1 up"' >> /etc/systemd/system/docker.service.d/override2.conf echo 'ExecStopPost=/bin/sh -c "/usr/sbin/brctl delif docker1 eth1"' >> /etc/systemd/system/docker.service.d/override2.conf systemctl daemon-reload systemctl restart docker brctl show ip a | grep eth1 -A 5 SHELL end
"vagrant up"コマンドで起動します。
初回起動中にdocker をインストールしてネットワーク関連の設定を行います。
起動に成功すると、ネットワーク関連の情報が、下記のように表示されます。
default: bridge name bridge id STP enabled interfaces default: docker0 8000.024207e2ad64 no default: docker1 8000.024282583d53 no eth1 default: 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master docker1 state UP group default qlen 1000 default: link/ether 08:00:27:cd:6b:9f brd ff:ff:ff:ff:ff:ff default: inet6 fe80::a00:27ff:fecd:6b9f/64 scope link tentative default: valid_lft forever preferred_lft forever default: 4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default default: link/ether 02:42:07:e2:ad:64 brd ff:ff:ff:ff:ff:ff
動作確認
"vagrant ssh"コマンドで仮想マシンに入ります。
下記の内容で、docker-compose.yml を作成します。
コンテナには、ホストオンリーネットワークの固定IPドレスを割り当てます。
ついでに、各コンテナの/etc/hosts にFQDNも設定します。
version: '3' services: nginx00: image: nginx container_name: nginx00 hostname: nginx00 networks: default: ipv4_address: 192.168.56.11 extra_hosts: - nginx00.local:192.168.56.11 - nginx01.local:192.168.56.12 nginx01: image: nginx container_name: nginx01 hostname: nginx01 networks: default: ipv4_address: 192.168.56.12 extra_hosts: - nginx00.local:192.168.56.11 - nginx01.local:192.168.56.12 networks: default: external: name: my_bridge
"docker-compose up -d"コマンドで起動します。
仮想マシン内でnginx00コンテナに固定IPでアクセスできるか確認してみます。下図のように表示されたら成功です。
ちなみに、
Windowsのブラウザでも仮想マシン上のコンテナに固定IPでアクセスできます。
WSL2の /etc/hosts に nginx00.local, nginx01.local を設定すれば、WSL2からFQDNでアクセスできるようになります。