Tech Horse Club

技術ブログ×競馬予測

【Docker】初めてのDocker(インストールとチュートリアル)

今回はDockerについてです。なんとなく得体の知れないサービスと手をつけていなかったのですが、今回、折角自宅にCentOS7のサーバを構築したので、改めてちゃんと勉強することにしました。

参考文献

下記の本を参考にして進めていきます。

環境

Dockerインストール

いきなりですが、上記の本からインストール方法が少し変わっています。Docker CE(無償エディション)・Docker EE(エンタープライズエディション)と2種類のエディションが用意されるようになりましたので、無償版のDocker CEをインストールしましょう。Docker公式ドキュメントのGet Docker CE for CentOS の手順に沿って進めていきます。

必要なパッケージをインストール
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
・・・
完了しました!
レポジトリを追加
$ sudo 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
安定版(stable)をインストール
$ sudo yum install docker-ce
・・・
完了しました!
dockerサービスを起動する
$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: https://docs.docker.com
$ sudo systemctl start docker
$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since 月 2017-10-23 08:40:29 JST; 28s ago
 ・・・
hello worldする
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
5b0f327be733: Pull complete 
Digest: ・・・
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

公式サイトの手順通りに進めていったところ、特に問題なくインストール作業は完了しました。一次情報にあたることの大切さを痛感します。それにしても、プロキシの無い環境って素晴らしい…! これだけだと面白くないので、解説書に沿って、もう少しチュートリアルを進めます。

コンテナーを起動してbashに接続する

Docker Hubからリポジトリを検索
# docker search enakai00
NAME                                     DESCRIPTION                               STARS               OFFICIAL            AUTOMATED
enakai00/jupyter_tensorflow                                                        3                                       
enakai00/web                                                                       0                                       
enakai00/fedora                          Sample fedora repository for dockerbon.   0
・・・
リポジトリをダウンロード
# docker pull -a enakai00/centos
centos6: Pulling from enakai00/centos
a3ed95caeb02: Pull complete 
dfabbb82181a: Pull complete 
・・・
リポジトリの内容を確認
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              05a3bd381fc2        5 weeks ago         1.84kB
enakai00/centos     centos6             b8c94c5d2d7c        2 years ago         203MB
enakai00/centos     centos7             3bd78cf8ed76        2 years ago         172MB
enakai00/centos     latest              3bd78cf8ed76        2 years ago         172MB
コンテナの起動

-iオプションは、コンテナで実行したコマンドの標準入出力に接続して、対話的に操作出来るようにします。-tオプションはコンテナに擬似tty端末を割り当てます。--nameは起動するコンテナに名前をつけます。

# docker run -it --name centos01 enakai00/centos:centos6 /bin/bash
[root@dcb7341d3bfc /]# 
[root@dcb7341d3bfc /]# df -h
Filesystem            Size  Used Avail Use% Mounted on
rootfs                 14G  1.5G   12G  11% /
overlay                14G  1.5G   12G  11% /
tmpfs                  64M     0   64M   0% /dev
・・・

無事に起動したコンテナに接続する事ができました。ネットワークの仕組みなど、まだまだ奥が深そうなので、継続的に学んでいきます。