CentOS 6.5 にDockerを導入するためのファーストステップ手順を記載しています。Dockerのインストールから、Dockerコンテナのイメージ作成までの内容です。
Dockerインストールと起動
Dockerのインストールは、yumで行います。
$ sudo yum install docker-io
必要なパッケージがインストールされ、Docker導入は完了です。かなり簡単です。
インストールによって、Dockerの自動起動は設定されています。
$ sudo /sbin/chkconfig --list|grep docker docker 0:off 1:off 2:on 3:on 4:on 5:on 6:off $
Dockerを起動します。
$ sudo /etc/init.d/docker start Starting cgconfig service: [ OK ] Starting docker: [ OK ] $
これで、Dockerを使える状態になります。
Docker利用時のアカウント設定
Dockerは「docker」コマンドで利用しますが、ソケットファイルを利用する関係上、一般アカウントでの実行は権限不足となり、「dial unix /var/run/docker.sock: permission denied」が表示されます。
よって、dockerコマンド利用時は、root権限(sudo含む)か、dockerインストール時に登録される「docker」グループのメンバーになる必要があります。
以下の操作では、dockerコマンドを利用する一般アカウントを「docker」グループのメンバーにしています。
dockerコマンドのオプション(状態確認)
Dockerでは、「docker」コマンドのオプション指定で、様々な操作を実行します。
インストール後、状況確認用にすぐに使えるコマンドは以下です。
- $ docker version
- $ docker info
「docker version」の表示結果は下記になります。
$ docker version Client version: 1.3.2 Client API version: 1.15 Go version (client): go1.3.3 Git commit (client): 39fa2fa/1.3.2 OS/Arch (client): linux/amd64 Server version: 1.3.2 Server API version: 1.15 Go version (server): go1.3.3 Git commit (server): 39fa2fa/1.3.2 $
Dockerイメージ
Dockerでは、利用するOSイメージをレジストリからダウンロードして利用します。
インストール後の状態では、利用できるイメージはありません。「docker images」コマンドで確認できます。
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE $
それでは、Dockerレジストリから、CentOS最新版のイメージを取得します。「docker pull」コマンドでダウンロードします。
$ docker pull centos:latest Pulling repository centos 8efe422e6104: Download complete 511136ea3c5a: Download complete 5b12ef8fd570: Download complete Status: Downloaded newer image for centos:latest $
これで、CentOS最新版のイメージをダウンロードできました。「docker images」で確認してみます。
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos centos7 8efe422e6104 10 days ago 224 MB centos latest 8efe422e6104 10 days ago 224 MB centos 7 8efe422e6104 10 days ago 224 MB $
CentOS 7(タグが3種類)がダウンロードされています。
では、次にubuntuもダウンロードしておきます。
$ docker pull ubuntu:latest Pulling repository ubuntu b39b81afc8ca: Download complete 511136ea3c5a: Download complete 53f858aaaf03: Download complete 837339b91538: Download complete 615c102e2290: Download complete Status: Downloaded newer image for ubuntu:latest $
再度「docker images」で確認してみます。
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu 14.04 b39b81afc8ca 11 hours ago 192.7 MB ubuntu 14.04.1 b39b81afc8ca 11 hours ago 192.7 MB ubuntu latest b39b81afc8ca 11 hours ago 192.7 MB ubuntu trusty b39b81afc8ca 11 hours ago 192.7 MB centos 7 8efe422e6104 11 days ago 224 MB centos centos7 8efe422e6104 11 days ago 224 MB centos latest 8efe422e6104 11 days ago 224 MB $
Ubuntuも取得できています。
Dockerコンテナーの作成と実行
それでは、いよいよ、Dockerコンテナーを実行してみたいと思います。「docker run」コマンドで、CentOSイメージを使ってbashを起動します。
$ docker run -it centos /bin/bash [root@06d3c9fc1479 /]# echo $SHELL /bin/bash [root@06d3c9fc1479 /]
rootアカウントで、コンテナーID「06d3c9fc1479」に、bashで接続された事が確認できます。
なお、別のコンソールで「docker ps」コマンドを実行すると、実行中のDockerコンテナーの一覧が表示できます。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 06d3c9fc1479 centos:7 "/bin/bash" 8 seconds ago Up 7 seconds desperate_franklin $
なお、今回のDockerコンテナー実行時に、名前指定をしなかったので、「NAMES」列にはdockerで自動命名された名前が表示されています。
「exit」コマンドで、Dockerコンテナーから抜けると、「docker ps」コマンドの一覧には表示されなくなります。「docker ps -a」コマンドで停止中のコンテナーが表示できます。
コンテナー名の指定、イメージ作成
次は、CentOSイメージから、コンテナー名を指定してみます。コンテナー名は「checksite」としてみます。
$ docker run -it --name checksite centos /bin/bash
別のコンソールから「docker ps」コマンドを確認してみます。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a49158ecba14 centos:7 "/bin/bash" 2 minutes ago Up 2 minutes checksite $
名前が「checksite」になっています。
接続している「checksite」コンテナーに、telnetパッケージをインストールします。
[root@a49158ecba14 /]# yum install telnet
無事インストールできます。
一度、exitで抜けた後に、telnetパッケージをインストールした「checksite」コンテナーから、Dockerイメージを作成してみます。「docker commit」コマンドを利用し、「checksite」コンテナーから、「haruki」アカウントの「checksite」イメージを作成してみます。
$ docker commit checksite haruki/checksite 405ca4a8d6c3442afd66b88c9b12b83533f859b40fc8a8582518535a542e2be9 $
作成結果を、「docker images」コマンドで確認してみます。
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE haruki/checksite latest 405ca4a8d6c3 38 seconds ago 304.6 MB ubuntu 14.04 b39b81afc8ca 11 hours ago 192.7 MB ubuntu 14.04.1 b39b81afc8ca 11 hours ago 192.7 MB ubuntu latest b39b81afc8ca 11 hours ago 192.7 MB ubuntu trusty b39b81afc8ca 11 hours ago 192.7 MB centos 7 8efe422e6104 11 days ago 224 MB centos centos7 8efe422e6104 11 days ago 224 MB centos latest 8efe422e6104 11 days ago 224 MB $
REPOSITORY列で、Dockerイメージ「haruki/checksite」が作成されている事が分かります。
次は、作成したDockerイメージ「haruki/checksite」を起動してみます。
$ docker run -it haruki/checksite /bin/bash [root@973ec2142ad5 /]# which telnet /usr/bin/telnet [root@973ec2142ad5 /]#
先ほどインストールしたtelnetが入っている事が確認できました。
今回はここまでとなります。