Docker installからGoでHelloWorldまで(1)

今回はdockerのinstallまでやっていきます。

docker起動からGoでHello Worldまでは次の記事で書きます。

 

Virtual Box上に立ち上げたCentOSにDockerをinstallする

Dockerをinstallする仮想HDDを追加する

まず設定>ストレージから仮想HDD(VDI)を追加します。

まあ既存の/dev/sdaに追加してもいいんですけど、今回は新しく作成します。

 

 

f:id:ken_memo:20200115192917p:plain

f:id:ken_memo:20200115192737p:plain

こんな感じです。

名前は何でもいいです

f:id:ken_memo:20200115193512p:plain

 はい。ちゃんと作成されていますね。

f:id:ken_memo:20200115194452p:plain

 空なのも確認しました。

 

パーティションの作成

GPTのパーティションを作成します。

 

まず、パーティション管理方式がMBRになっている場合のために下記コマンドを実行し、GPTに変更します。

# parted -s /dev/sdb 'mklabel gpt'

 さて、mkpartでパーティションを割り当てましょう。

基本はprimaryパーティションです。-1で最大容量を指定できます。

# parted -s /dev/sdb 'mkpart primary 0 -1'

 結局この後再起動するので大丈夫な気がしますが、念のため下記を実行。

# partprobe /dev/sdb

 次にファイルシステムを指定します。mkpartで一気にやってもいいんですが、docker用に細かい設定をするのでコマンドを分けます。

centOSなのでxfsです。-fは既存のファイルシステムがあっても強制的に上書きします。dockerでストレージドライバとしてoverlay2を使用するためにftypeを有効(=1)にします。

# mkfs.xfs -f -n ftype=1 /dev/sdb1

 

次にdocker用のディレクトリを作成してfstabにマウント情報を記載します。

# vi /etc/fstab
...
/dev/sdb1 /var/lib/docker xfs defaults 0 0
...
# mkdir /var/lib/docker
# mount /var/lib/docker <-- 一応確認します

 再起動します。

# reboot

 再起動したら下記コマンドを実行して今までの手順を確認します。

こんな感じになってればオッケーです。

# df -HT | grep docker

f:id:ken_memo:20200115211257p:plain

install前のOS側の設定

プロキシの設定

プロキシを設定してるならやってください。

# vi /etc/yum.conf
...
proxy=http://proxy.your.site.com:8080
...
CentOSのアップデート

versionが7.5.1804未満ならアップデートをしてください。

# cat /etc/redhat-release

 

ファイアウォールの無効化

ファイアウォールSELinuxを無効化します。

# systemctl disable firewalld
# vi /etc/sysconfig/selinux
...
SELINUX=disabled
...
カーネルパラメータの設定

IPフォワーディングを有効にします。

# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
# sysctl --system
# cat /proc/sys/net/ipv4/ip_forward

  再起動します。

# reboot

再起動したらversionとか確認しましょう。

# cat /etc/redhat-release
# uname -r

 

Docker CE(Community Edition)のinstall

前準備

必要なパッケージをinstallします。

ネットがオンになってなくて時間食ったなんて言えない

# yum install -y yum-utils device-mapper-persistent-data lvm2

 リポジトリ設定します。("\"は一行に入らないので書いてます。ぜひ一行で実行してください)

# yum-config-manager --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

 開発者向けのDocker CE Edgeのリポジトリを無効にします。

# yum-config-manager --disable docker-ce-edge
install

installします。やったー。

# yum makecache fast && yum install -y docker-ce docker-ce-selinux
 プロキシサーバの設定

これまたプロキシサーバー設定してる人はやってください

NO_PROXYにプロキシサーバを経由しないホストやドメインを設定できます。

# mkdir -p /usr/lib/systemd/system/docker.service.d
# vi /usr/lib/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://proxy.your.site.com:8080"
Environment="HTTPS_PROXY=http://proxy.your.site.com:8080"
Environment="NO_PROXY=127.0.0.1,localhost,.jpn.linux.hpe.com"
ストレージドライバの設定

Docker CEが使用するストレージドライバに関する設定を記述します。

今回はoverlay2を設定します。

Dockerではストレージドライバと呼ばれるコンポーネントが必要です。たとえば、コンテナをDockerイメージとして保管する場合、あるいは、Dockerイメージからコンテナを生成する際に、ストレージドライバで提供されるファイルシステムが利用されます。[1]

 

Redhat系はoverlay2とdevicemapper、Ubuntu系はoverlay2とaufsなどが指定できますが、linuxはどのディストリビューションでも基本的にoverlay2が使用できるのでoverlay2を指定します。

# mkdir -p /etc/docker
# vi /etc/docker/daemon.json
{
"storage-driver": "overlay2"
}
Dockerエンジンを起動
# systemctl daemon-reload
# systemctl restart docker
# systemctl status docker
# systemctl enable docker

  

以上でインストールと設定は完了です。

下記コマンドで設定が正しくセットされているか確認してください。

# docker info
# docker version

 

正しく稼働するか確認

また次の記事で書くと思いますが、デバッグのために下記コマンドを実行します。

# docker search centos:6.9
# docker image pull centos:6.9
# docker container run --rm -it centos:6.9 cat /etc/redhat-release

 

参考文献

[1]「Docker実践ガイド第2版」古賀政純著

https://book.impress.co.jp/books/1118101052

 

ほぼここに書いてあります。というかうまくいかなかったところを自分なりに解決してこの記事を書いています。