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