Pocket

CentOS上にDockerを導入する方法(ファーストステップ)

  • add this entry to hatena bookmark

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が入っている事が確認できました。

今回はここまでとなります。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

チェックサイト RSS Feed読者登録はいかがでしょうか?RSS配信中です。