VirtualBoxのCentOS 7にDocker Community Editionをインストールした

macOS上のVirtualBox上のCentOS 7に、Docker Community Edition (CE)をインストールした。
インストール後、centosとhttpdのDockerイメージからコンテナーを起動させ、基本的なコマンドを試した。

環境は、

macOS Mojave バージョン10.14.1
VirtualBox 5.2.20 r125813 (Qt5.6.3)
CentOS Linux release 7.6.1810 (Core)
docker-ce.x86_64 3:18.09.1-3.el7
docker-ce-cli.x86_64 1:18.09.1-3.el7
containerd.io.x86_64 1.2.2-3.el7

インストールのマニュアル

dockerのサイトに行き、Resources→Docs→Get Docker

遷移したページのSupported platforms→CentOS

Get Docker CE for CentOSというページに飛ぶので、手順に従いインストールした

インストール

必要なパッケージをyumでインストールする。
必要なパッケージは、yum-utils、device-mapper-persistent-data、lvm2。

# yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

yum-config-managerで、stable repositoryを設定。
yum-config-managerは、上記でインストールしたyum-utilsに含まれているらしい。

# yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

下記が表示されたので、追加された様子。


repo saved to /etc/yum.repos.d/docker-ce.repo

下記コマンドで、Docker CE と containerdをインストール

# yum install docker-ce docker-ce-cli containerd.io

インストール中に下記の確認が促されるが、Fingerprint が060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35になっているか確認し、y

https://download.docker.com/linux/centos/gpg から鍵を取得中です。
Importing GPG key 0x621E9F35:
 Userid     : "Docker Release (CE rpm) <docker@docker.com>"
 Fingerprint: 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35
 From       : https://download.docker.com/linux/centos/gpg

インストールされたかの確認

Dockerを起動。

# systemctl start docker

下記コマンドで確認できる。

# docker run hello-world

詳細な説明とともに、下記のようなメッセージが表示される。

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

上記のコマンドでは、下記のようなことが行われている
  • Dockerデーモンが、hello-worldというテストイメージをDocker Hubからダウンロード
  • Dockerデーモンが、ダウンロードしたイメージからコンテナーを作成
  • コンテナーが出力メッセージを生成
  • Dockerデーモンが出力メッセージを返す


コンテナーやイメージの一覧、削除、イメージのダウンロード、コンテナーの名前指定、など

このページに従って、いくつかコマンドを試してみた

Dockerイメージの一覧

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              fce289e99eb9        4 weeks ago         1.84kB

Dockerコンテナーの一覧

# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
a3021d64d043        hello-world         "/hello"            31 minutes ago      Exited (0) 31 minutes ago                       quizzical_poincare

下記コマンドで、それぞれコンテナー、イメージを削除できる。(コンテナーを先に消さないと、イメージを削除できない)
指定する文字列は、IDか名前。
コマンド実行後、上記コマンドを再度実行すると、削除されていることが確認できる。

# docker rm a3021d64d043
# docker rmi fce289e99eb9

pullでイメージのダウンロードだけを実行できる

# docker pull hello-world

runの--nameオプションで、コンテナー名を指定できる。

# docker run --name mytest hello-world

centos

centosイメージをダウンロード。
# docker pull centos

Using default tag: latestと出力されるように、デフォルトではlatestのものがダウンロードされる
このページにcentosイメージでサポートされているtagが一覧されており、tagを指定する場合はcentos:7のようにすればよい

コンテナーを作成(コンテナー名をtestとした)。-iと-tオプションにより、対話的に操作可能になる。

# docker run -i -t --name test centos
[root@d1477dd72add /]#

exitすると、コンテナーが停止してしまうので、下記でデタッチする。
control + pを押してからcontrol + q

attachでコンテナーの操作に戻れる

# docker attach test

exitしてコンテナーが停止した場合は、startで起動でき、attachで再度操作できる。

# docker start test

下記のようにexecでbashを起動させれば、exitしてもコンテナーは起動したままとなる。
execはコンテナーでコマンドを実行するための命令なので、コンテナーでbashプロセスが起動し、そのbashが終了するだけなので、コンテナー自体は停止しないからだと思われる。

# docker exec -i -t test bash
[root@d1477dd72add /]# exit

コンテナーをコマンドで停止する場合は、stop

# docker stop test

cpで、コンテナーとファイルをやり取りできる。

ホストからコンテナーに転送する場合は、

# docker cp test.txt test:/home/

コンテナーからホストに転送する場合は、

# docker cp test:/home/test.txt .

Apache

ApacheのDockerイメージをダウンロード。

# docker pull httpd

コンテナー作成(apache_testという名前にした)。
-p により、ホストの8080がコンテナーの80に転送される。
-d により、コンテナーをバックグラウンドで実行できる。

# docker run -d -i -t --name apache_test -p 8080:80 httpd

これで、ホストの8080にHTTPアクセスすると、It works!と表示された。

コンテナーをbashで操作する場合は、

# docker exec -i -t apache_test bash


コメント

このブログの人気の投稿

PowerShell 6で、Shift_JISのCSVをImport-Csvで読み込んだら文字化けした

Windowsで、特定のユーザーに特定のサービスの再起動を許可する

PowerShellでイベントログを取得する時、「指定した選択条件に一致するイベントが見つかりませんでした。」が煩わしいのでcatchする