CentOS7でDockerを使う

環境

  • CentOS7 最小構成インストール
  • HDD 300GB
  • Mem 2GB
  • NIC 1

インストール手順

パッケージをアップデートしておく # yum update

SELinuxを無効化

# vi /etc/selinux/config

- SELINUX=enforcing
+ SELINUX=disabled

起動時のコンソールログを表示させる設定

# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.org
# vi /boot/grub2/grub.cfg

- linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64 root=UUID=dd4521d9-ca1c-462b-b353-2ba57bf4fc61 ro vconsole.keymap=us crashkernel=auto  vconsole.font=latarcyrheb-sun16 rhgb quiet LANG=ja_JP.UTF-8
+ linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64 root=UUID=dd4521d9-ca1c-462b-b353-2ba57bf4fc61 ro vconsole.keymap=us crashkernel=auto  vconsole.font=latarcyrheb-sun16 LANG=en_US.UTF-8

- linux16 /boot/vmlinuz-0-rescue-6764668114ff4741a8994286ae140fdd root=UUID=dd4521d9-ca1c-462b-b353-2ba57bf4fc61 ro vconsole.keymap=us crashkernel=auto  vconsole.font=latarcyrheb-sun16 rhgb quiet
+ linux16 /boot/vmlinuz-0-rescue-6764668114ff4741a8994286ae140fdd root=UUID=dd4521d9-ca1c-462b-b353-2ba57bf4fc61 ro vconsole.keymap=us crashkernel=auto  vconsole.font=latarcyrheb-sun16

ホスト名を設定

# echo alice > /etc/hostname

再起動

# shutdown -r now

CentOS 7はDockerがベースリポジトリに含まれている

# yum search docker
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
============================= N/S matched: docker ==============================
cockpit-docker.x86_64 : Cockpit user interface for Docker containers
docker-logrotate.x86_64 : cron job to run logrotate on docker containers
docker-python.x86_64 : An API client for docker written in Python
docker-registry.noarch : Registry server for Docker
docker-registry.x86_64 : Registry server for Docker
docker-selinux.x86_64 : SELinux policies for Docker
docker.x86_64 : Automates deployment of containerized applications
docker-devel.x86_64 : A golang registry for global request variables (source
                    : libraries)
docker-unit-test.x86_64 : Automates deployment of containerized applications -
                        : for running unit tests

  Name and summary matches only, use "search all" for everything.

Dockerをインストール

# yum install docker

インストールされたDockerのバージョン

# rpm -qa | grep docker
docker-selinux-1.7.1-115.el7.x86_64
docker-1.7.1-115.el7.x86_64

Dockerサービスを有効化する。DockerパッケージにSystemdのユニットファイルが同梱されているので、これを利用する。

# rpm -ql docker-0.11.1-22.el7.centos.x86_64 | grep systemd

# systemctl enable docker.service
ln -s '/usr/lib/systemd/system/docker.service' '/etc/systemd/system/multi-user.target.wants/docker.service'

# systemctl list-unit-files | grep docker
docker-storage-setup.service              disabled
docker.service                            enabled

上記により、再起動後に有効化される、以下で手動起動

# systemctl start docker.service

Dockerの情報を確認

# docker version
Client version: 1.7.1
Client API version: 1.19
Package Version (client): docker-1.7.1-115.el7.x86_64
Go version (client): go1.4.2
Git commit (client): 446ad9b/1.7.1
OS/Arch (client): linux/amd64
Server version: 1.7.1
Server API version: 1.19
Package Version (server): docker-1.7.1-115.el7.x86_64
Go version (server): go1.4.2
Git commit (server): 446ad9b/1.7.1
OS/Arch (server): linux/amd64

試しにDockerイメージ(Ubuntu)をダウンロード

# docker pull ubuntu

しばらくすると、イメージが利用可能になる、以下でダウンロードしたイメージを確認

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.io/ubuntu    latest              91e54dfb1179        4 weeks ago         188.3 MB

コンテナの起動

# docker run -i -t docker.io/ubuntu /bin/bash

接続したコンテナでubuntuのバージョンを確認すると、14.04でした

root@0a278956b2ca:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"

コンテナを停止したいときは「Ctl+C」

Dockerコンテナのデタッチ・アタッチ

起動したDockerコンテナ上でexitするとコンテナは停止してしまいます。練習もかねてDockerコンテナのデタッチ→アタッチ→exitによるコンテナ停止という手順を試してみます。

Dockerコンテナを終了せずに抜ける(デタッチする)には、Ctrl+p Ctrl+qを入力します。

root@0a278956b2ca:/# (ここでCtrl+p Ctrl+qを入力)$

docker psコマンドで稼働しているコンテナを確認できます。

# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
9cf71dd83894        ubuntu:14.10        /bin/bash           9 minutes ago       Up 9 minutes                            backstabbing_rosalind0

コンテナにアタッチしてみます。

# docker attach 9cf71dd83894
root@9cf71dd83894:/#

無事にアタッチでできました。後はexitでコンテナを終了します。

root@9cf71dd83894:/# exit
exit
# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

export/import

私の手元ではまだ試していませんが、イメージファイルのexport/importも可能です。 以下の手順でexport/importを行います。

docker export <コンテナID>
docker export 14773ff9e93c > myweb.tar    # コマンド例
docker import [リポジトリTAG]
docker import < - myweb:rel1 < myweb.tar  # コマンド例

ローカルストレージのアタッチ

こちらも私の手元では試していませんが、Runコマンドの"-v"オプションでホストのディレクトリをアタッチ可能です。

# docker run -t -i -v <local_dir>:<container dir>:<rw|ro> centos /bin/bash
# docker run -d -p 5000:5000 -v /home/hoge/data:/tmp/data centos  # コマンド例
# /home/data/dataは、共有ストレージ(NFS)やディスクミラー(DRBD)、分散ストレージ(Ceph-fs)等を利用して自分でミラーリングします。

コンテナの容量を拡張する

Dockerはデフォルトでは各コンテナに10GBの(仮想)ディスクを割り当てます。

root@f11ce26056c0:/# df -h
Filesystem                                                                                     Size  Used Avail Use% Mounted on
/dev/mapper/docker-253:4-560-f11ce26056c0e577077f2ae622212982e4d6de43dc04f9e948454b9856f8fc87  9.8G  245M  9.0G   3% /
tmpfs                                                                                         1001M     0 1001M   0% /dev
shm                                                                                             64M     0   64M   0% /dev/shm
tmpfs                                                                                         1001M     0 1001M   0% /run/secrets
/dev/mapper/centos-var                                                                         2.9G  726M  2.1G  27% /etc/hosts
tmpfs                                                                                         1001M     0 1001M   0% /proc/kcore
tmpfs                                                                                         1001M     0 1001M   0% /proc/timer_stats

拡張する場合は以下

参照元

http://furandon-pig.hatenablog.com/entry/2014/07/29/082607