今回はdockerのinstallまでやっていきます。
docker起動からGoでHello Worldまでは次の記事で書きます。
Virtual Box上に立ち上げたCentOSにDockerをinstallする
Dockerをinstallする仮想HDDを追加する
まず設定>ストレージから仮想HDD(VDI)を追加します。
まあ既存の/dev/sdaに追加してもいいんですけど、今回は新しく作成します。
こんな感じです。
名前は何でもいいです
はい。ちゃんと作成されていますね。
空なのも確認しました。
パーティションの作成
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
install前のOS側の設定
プロキシの設定
プロキシを設定してるならやってください。
# vi /etc/yum.conf
...
proxy=http://proxy.your.site.com:8080
...
CentOSのアップデート
versionが7.5.1804未満ならアップデートをしてください。
# cat /etc/redhat-release
ファイアウォールの無効化
# 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
ほぼここに書いてあります。というかうまくいかなかったところを自分なりに解決してこの記事を書いています。