□システムのバージョンの表示
CentOS 7 minimalを導入して、updateを行ったものである。
# uname -a
Linux localhost.localdomain 3.10.0-862.11.6.el7.x86_64 #1 SMP Tue Aug 14 21:49:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
■ Dockerリポジトリの導入
○ 必要なパッケージの追加
# yum install yum-utils device-mapper-persistent-data lvm2
Installed:
device-mapper-persistent-data.x86_64 0:0.7.3-3.el7
lvm2.x86_64 7:2.02.177-4.el7
yum-utils.noarch 0:1.1.31-46.el7_5
Dependency Installed:
device-mapper-event.x86_64 7:1.02.146-4.el7
device-mapper-event-libs.x86_64 7:1.02.146-4.el7
libaio.x86_64 0:0.3.109-13.el7
libxml2-python.x86_64 0:2.9.1-6.el7_2.3
lvm2-libs.x86_64 7:2.02.177-4.el7
python-chardet.noarch 0:2.2.1-1.el7_1
python-kitchen.noarch 0:1.1.1-5.el7
Complete!
○ Dockerリポジトリ(ステーブル)の設定
(エッジ、テスト版リポジトリの導入については参考サイトへ)
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
読み込んだプラグイン:fastestmirror
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
○ 利用可能なDockerのバージョンの一覧
# yum list docker-ce --showduplicates | sort -r
利用可能なパッケージ
読み込んだプラグイン:fastestmirror
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
Loading mirror speeds from cached hostfile
* updates: ftp.riken.jp
* extras: ftp.riken.jp
* base: ftp.riken.jp
○インストールされるバージョンの確認
# yum info docker-ce
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.riken.jp
* extras: ftp.riken.jp
* updates: ftp.riken.jp
利用可能なパッケージ
名前 : docker-ce
アーキテクチャー : x86_64
バージョン : 18.06.1.ce
リリース : 3.el7
容量 : 41 M
リポジトリー : docker-ce-stable/x86_64
要約 : The open-source application container engine
URL : https://www.docker.com
ライセンス : ASL 2.0
説明 : Docker is an open source project to build, ship and run
: any application as a lightweight container.
:
: Docker containers are both hardware-agnostic and
: platform-agnostic. This means they can run anywhere, from
: your laptop to the largest cloud compute instance and
: everything in between - and they don't require you to use
: a particular language, framework or packaging system. That
: makes them great building blocks for deploying and scaling
: web apps, databases, and backend services without
: depending on a particular stack or provider.
○インストール
# yum install docker-ce
インストール:
docker-ce.x86_64 0:18.06.1.ce-3.el7
依存性関連をインストールしました:
audit-libs-python.x86_64 0:2.8.1-3.el7_5.1
checkpolicy.x86_64 0:2.5-6.el7
container-selinux.noarch 2:2.68-1.el7
libcgroup.x86_64 0:0.41-15.el7
libsemanage-python.x86_64 0:2.5-11.el7
libtool-ltdl.x86_64 0:2.4.2-22.el7_3
policycoreutils-python.x86_64 0:2.5-22.el7
python-IPy.noarch 0:0.75-6.el7
setools-libs.x86_64 0:3.3.8-2.el7
完了しました!
■動作テスト
○Dockerエンジンの起動
# systemctl start docker
もし、エラーが出て起動しない場合は、システムを再起動すると良かった。
○サンプルイメージを取得してコンテナを動作
Docker Hubがホストするhello-worldというイメージからコンテナを作成し、
コンテナを動作させようとしている。
イメージがローカルにまだなければ、Docker Hubから自動的に取得される。
(動作手順は、下記、1〜4に記載されている。)
# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9db2ca6ccae0: Pull complete
Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc
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/engine/userguide/
■動作テスト 2
また、さらに上記のコメントには、Ubuntuイメージから作成したコンテナを動作させて、
試しにそのbashを呼び出してみよと教えてくれているので、その通りやってみた。
コンテナ実行後、下記のように、コンテナ内のbashが表示するプロンプトに含まれる文字列は、
この場合(公式 Ubuntuイメージ)ではコンテナのIDと同一ものだった。
# docker run -it ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
c64513b74145: Pull complete
01b8b12bad90: Pull complete
c5d85cf7a05f: Pull complete
b6b268720157: Pull complete
e12192999ff1: Pull complete
Digest: sha256:aade50db36e1ed96716662cfe748789e154c213a711931c66746c42ce34aa296
Status: Downloaded newer image for ubuntu:latest
root@e0f42e71cf38:/#
root@e0f42e71cf38:/# uname -a
Linux e0f42e71cf38 3.10.0-862.11.6.el7.x86_64 #1 SMP Tue Aug 14 21:49:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
root@e0f42e71cf38:/# free -m
total used free shared buff/cache available
Mem: 1999 194 1256 8 548 1642
Swap: 1906 0 1906
root@e0f42e71cf38:/# pwd
/
root@e0f42e71cf38:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
root@e0f42e71cf38:/# df -h
Filesystem Size Used Avail Use% Mounted on
overlay 16G 1.4G 15G 9% /
tmpfs 64M 0 64M 0% /dev
tmpfs 1000M 0 1000M 0% /sys/fs/cgroup
/dev/vda5 16G 1.4G 15G 9% /etc/hosts
shm 64M 0 64M 0% /dev/shm
tmpfs 1000M 0 1000M 0% /proc/acpi
tmpfs 1000M 0 1000M 0% /proc/scsi
tmpfs 1000M 0 1000M 0% /sys/firmware
root@e0f42e71cf38:/#
○コンテナ動作中のホストのディレクトリの状態
# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/vda5 16G 1.4G 15G 9% /
devtmpfs 990M 0 990M 0% /dev
tmpfs 1000M 0 1000M 0% /dev/shm
tmpfs 1000M 8.7M 992M 1% /run
tmpfs 1000M 0 1000M 0% /sys/fs/cgroup
/dev/vda2 2.0G 33M 2.0G 2% /tmp
/dev/vda1 473M 139M 335M 30% /boot
tmpfs 200M 0 200M 0% /run/user/0
overlay 16G 1.4G 15G 9% /var/lib/docker/overlay2/fc8817131b983e1c3c9984e0802c9a2b1fea1ee4fa9fdffa0d76dc9577265f37/merged
shm 64M 0 64M 0% /var/lib/docker/containers/e0f42e71cf384b40de5d0bc9323e3b65cf01d4bc06418b94c4ad680b5dc53be9/mounts/shm
○動作中のコンテナ一覧
動作中のコンテナのIDなどを確認できる。
# docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS○IDで指定してコンテナを終了
e0f42e71cf38 optimistic_almeida 0.00% 400KiB / 1.953GiB 0.02% 648B / 0B 0B / 0B 1
上記で調べたIDを用いた。
# docker stop e0f42e71cf38
e0f42e71cf38○イメージの差分であるオーバーレイヤーとしてマウントされたディレクトリの内容を表示
.bash_historyファイルが更新されたことがわかる。
# ls /var/lib/docker/overlay2/fc8817131b983e1c3c9984e0802c9a2b1fea1ee4fa9fdffa0d76dc9577265f37/*/* -al
/var/lib/docker/overlay2/fc8817131b983e1c3c9984e0802c9a2b1fea1ee4fa9fdffa0d76dc9577265f37/diff/root:
合計 4
drwx------ 2 root root 27 8月 23 01:23 .
drwxr-xr-x 3 root root 18 8月 22 13:37 ..
-rw------- 1 root root 72 8月 23 01:23 .bash_history
/var/lib/docker/overlay2/fc8817131b983e1c3c9984e0802c9a2b1fea1ee4fa9fdffa0d76dc9577265f37/work/work:
合計 0
d--------- 2 root root 6 8月 23 01:23 .
drwx------ 3 root root 18 8月 22 13:37 ..
○ Ubuntuコンテナを動作させる前のメモリの使用量と動作後の使用量の比較
<前>
total used free shared buff/cache available
Mem: 2.0G 148M 1.3G 8.6M 478M 1.6G
Swap: 1.9G 0B 1.9G
<動作中>
total used free shared buff/cache available
Mem: 1999 168 1257 8 573 1643
Swap: 1906 0 1906
<参考>
・Get Docker CE for CentOS
< https://docs.docker.com/install/linux/docker-ce/centos/ > 2018年8月23日
・Gracefully Stopping Docker Containers
< https://www.ctl.io/developers/blog/post/gracefully-stopping-docker-containers/ > 2018年8月23日
・Why docker has ability to run different linux distribution? [closed]
< https://stackoverflow.com/questions/25444099/why-docker-has-ability-to-run-different-linux-distribution?noredirect=1&lq=1 > 2018年8月23日