1. bashaway

    Posted

    bashaway
Changes in title
+CentOS8にDockerをインストール。名前解決できなかったのが解消した。
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,260 @@
+# はじめに
+さっき書いた [ESXi6.7にCentOS8を最小構成で構築](https://qiita.com/bashaway/items/ed9997629d5b02cfca05) の作業後に、dockerを入れたけど、dnfでこけてしまった。
+pingでIP直打ちは外に通るのに、名前解決ができない。が解決したので、記録として残します。
+コンテナ起動時に `--net=host` をやりたくなかったので情報をさがしてみました。
+
+# 解決方法だけ記載
+ホスト側で、NAPTの設定したら動いた。
+
+```
+# firewall-cmd --add-masquerade --permanent
+# firewall-cmd --reload
+```
+
+# 前提条件
+最小構成でインストールしたからでしょうか?nftablesは起動しておらず、firewalldが動作し、裏でiptablesが動いている状態でした。
+
+nftablesは停止している。
+
+```
+# systemctl status nftables
+● nftables.service - Netfilter Tables
+ Loaded: loaded (/usr/lib/systemd/system/nftables.service; disabled; vendor preset: disabled)
+ Active: inactive (dead)
+ Docs: man:nft(8)
+```
+
+firewalldが動いている。
+
+```
+# systemctl status firewalld
+● firewalld.service - firewalld - dynamic firewall daemon
+ Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
+ Active: active (running) since Sat 2020-02-08 16:28:47 JST; 27min ago
+ Docs: man:firewalld(1)
+ Main PID: 1182 (firewalld)
+ Tasks: 2 (limit: 23585)
+ Memory: 38.9M
+ CGroup: /system.slice/firewalld.service
+ mq1182 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid
+```
+
+iptablesが動いている。
+
+```
+# iptables -L
+Chain INPUT (policy ACCEPT)
+target prot opt source destination
+
+Chain FORWARD (policy DROP)
+target prot opt source destination
+DOCKER-USER all -- anywhere anywhere
+DOCKER-ISOLATION-STAGE-1 all -- anywhere anywhere
+ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
+DOCKER all -- anywhere anywhere
+ACCEPT all -- anywhere anywhere
+ACCEPT all -- anywhere anywhere
+
+Chain OUTPUT (policy ACCEPT)
+target prot opt source destination
+
+Chain DOCKER (1 references)
+target prot opt source destination
+
+Chain DOCKER-ISOLATION-STAGE-1 (1 references)
+target prot opt source destination
+DOCKER-ISOLATION-STAGE-2 all -- anywhere anywhere
+RETURN all -- anywhere anywhere
+
+Chain DOCKER-ISOLATION-STAGE-2 (1 references)
+target prot opt source destination
+DROP all -- anywhere anywhere
+RETURN all -- anywhere anywhere
+
+Chain DOCKER-USER (1 references)
+target prot opt source destination
+RETURN all -- anywhere anywhere
+```
+
+
+# dockerを使えるようにする
+
+## パッケージのインストール
+
+インストール時のパッケージのバージョンではねられるので、`--nobest`をつけてインストールする。
+
+```
+# dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
+# dnf install --nobest docker-ce docker-ce-cli containerd.io
+```
+
+サービス設定しておく
+
+```
+# systemctl enable docker
+# systemctl start docker
+```
+
+テストで `hello-world` を立ち上げてみる。
+うまくいけば、下のように、 `Hello from Docker!` が表示される
+
+```
+# docker run hello-world
+Unable to find image 'hello-world:latest' locally
+latest: Pulling from library/hello-world
+1b930d010525: Pull complete
+Digest: sha256:9572f7cdcee8591948c2963463447a53466950b3fc15a247fcad1917ca215a2f
+Status: Downloaded newer image for hello-world:latest
+
+Hello from Docker!
+This message shows that your installation appears to be working correctly.
+
+To generate this message, Docker took the following steps:
+ 1. The Docker client contacted the Docker daemon.
+ 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
+ (amd64)
+ 3. The Docker daemon created a new container from that image which runs the
+ executable that produces the output you are currently reading.
+ 4. The Docker daemon streamed that output to the Docker client, which sent it
+ to your terminal.
+
+To try something more ambitious, you can run an Ubuntu container with:
+ $ docker run -it ubuntu bash
+
+Share images, automate workflows, and more with a free Docker ID:
+ https://hub.docker.com/
+
+For more examples and ideas, visit:
+ https://docs.docker.com/get-started/
+```
+
+## CentOS8のイメージで起動してみる
+
+ `systemctl` を動作させるために、 `/sbin/init` で走らせないとダメぽい。
+ (SELinuxを動作させているなら、 `--privileged` オプションも必要らしい)
+
+```
+# docker pull centos:centos8
+# docker run -it -d --name centos8_check centos:centos8 /sbin/init
+# docker exec -it centos8_check /bin/bash
+[root@fced0781866f /]#
+```
+ログインできた。
+
+
+# トラブル発生
+
+## 名前解決できない!
+
+コンテナ内でepelパッケージのインストールしてみようとしたら、できない。
+
+```
+[root@fced0781866f /]# dnf install epel-release
+Failed to set locale, defaulting to C.UTF-8
+CentOS-8 - AppStream 0.0 B/s | 0 B 00:05
+Failed to download metadata for repo 'AppStream'
+Error: Failed to download metadata for repo 'AppStream'
+```
+
+コンテナ→GooglePublicDNSはIP直打ちで到達できる。
+
+```
+[root@fced0781866f /]# ping 8.8.8.8
+PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
+64 bytes from 8.8.8.8: icmp_seq=1 ttl=52 time=5.60 ms
+```
+
+
+コンテナのDNSはLAN内のサーバを参照している
+
+```
+[root@fced0781866f /]# cat /etc/resolv.conf
+# Generated by NetworkManager
+search prosper2.net
+nameserver 10.254.10.241
+```
+
+コンテナ→DNSへのpingは通る
+
+```
+[root@fced0781866f /]# ping 10.254.10.241
+PING 10.254.10.241 (10.254.10.241) 56(84) bytes of data.
+64 bytes from 10.254.10.241: icmp_seq=1 ttl=127 time=0.467 ms
+```
+
+のに、名前解決できない
+
+```
+[root@fced0781866f /]# ping dns.google
+ping: dns.google: Name or service not known
+```
+
+なぜだ。。。
+
+
+## 解消できた
+
+ホスト側で、NAPTの設定したら動いた。
+
+```
+# firewall-cmd --add-masquerade --permanent
+# firewall-cmd --reload
+```
+
+ちゃんと `dnf install epel-release` できた。
+
+```
+# dnf install epel-release
+Failed to set locale, defaulting to C.UTF-8
+CentOS-8 - AppStream 4.7 MB/s | 6.4 MB 00:01
+CentOS-8 - Base 4.8 MB/s | 5.0 MB 00:01
+CentOS-8 - Extras 6.2 kB/s | 2.1 kB 00:00
+Dependencies resolved.
+===============================================================================================
+ Package Architecture Version Repository Size
+===============================================================================================
+Installing:
+ epel-release noarch 8-5.el8 extras 22 k
+
+Transaction Summary
+===============================================================================================
+Install 1 Package
+
+Total download size: 22 k
+Installed size: 30 k
+Is this ok [y/N]: y
+Downloading Packages:
+epel-release-8-5.el8.noarch.rpm 915 kB/s | 22 kB 00:00
+-----------------------------------------------------------------------------------------------
+Total 36 kB/s | 22 kB 00:00
+warning: /var/cache/dnf/extras-cbfb2f07b0021b7e/packages/epel-release-8-5.el8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
+CentOS-8 - Extras 1.6 MB/s | 1.6 kB 00:00
+Importing GPG key 0x8483C65D:
+ Userid : "CentOS (CentOS Official Signing Key) <security@centos.org>"
+ Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
+ From : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
+Is this ok [y/N]: y
+Key imported successfully
+Running transaction check
+Transaction check succeeded.
+Running transaction test
+Transaction test succeeded.
+Running transaction
+ Preparing : 1/1
+ Installing : epel-release-8-5.el8.noarch 1/1
+ Running scriptlet: epel-release-8-5.el8.noarch 1/1
+ Verifying : epel-release-8-5.el8.noarch 1/1
+
+Installed:
+ epel-release-8-5.el8.noarch
+
+Complete!
+```
+
+
+
+# 出典
+https://serverfault.com/questions/987686/no-network-connectivity-to-from-docker-ce-container-on-centos-8
+
+
+