LoginSignup
5

More than 3 years have passed since last update.

posted at

updated at

【Docker入門②】『Docker』のセットアップと基本操作

この記事では、《Docker や コンテナ》について、
業務を通して学習した内容をまとめています。

  • 『Docker』のセットアップ
  • 『Docker』の基本操作

こういった疑問についてまとめています。

※本記事は、自分で学習したことのまとめ用として書いています。
尚、解説で誤った点があれば、スローして頂ければ喜んでキャッチしますのでお願い致します。

<前回のお話>
【Docker入門①】そもそも『Docker』とは…?

(参考)サーバーの準備

shells_script_3.jpg

まずは・・・

『Docker』を使用する環境を準備しましょう!

本記事では、詳しく触れませんが…

今回は『CentOS』を前提として、解説していきます。

ですので・・・

VirtualBox』や『VMware』などを利用して、仮想マシンを準備してみて下さい。

※『仮想マシン作成』の記事に関しては、今後まとめる予定です。

(参考)『Docker』のセットアップ

school-2.jpg

yumのリポジトリ設定などを行って、『Docker CE』をインストールしていきます。

Docker CE をインストールするためのリポジトリ設定

ホストOS上に『Docker CE』をインストールする前に、『Docker リポジトリ』のセットアップが必要です。

そのため、まずは・・・

  • yum-utils
  • devicemapper

で必要とされるパッケージをインストールします。

『yum-utils』は、yum-config-managerなどのコマンドが含まれます。

そして・・・

『device-mapper-persistent-data』と『lvm2』は、『devicemapper』の使用に必要です。

devicemapperに関して知りたい方は、下記の記事で丁寧に解説されていますので、参照してみて下さい。
》Dockerのストレージドライバを理解する

$ yum install -y yum-utils device-mapper-persistent-data lvm2

次に・・・

『Docker CE』をインストールするために、『yumリポジトリ』を追加します。

『CentOS 7』では、パッケージ管理ソフトウェアとして『yum』を利用していますが、『Docker』は公式の『yumリポジトリ』を提供していますので、その公式『yumリポジトリ』からインストールすることができます。

そのため・・・

『CentOS 7』に『Docker』の公式『yumリポジトリ』の情報を追加して、リポジトリを使えるようにします。

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

下記コマンドで、リポジトリが追加され、有効化されていることを確認しましょう。

$ yum repolist all | grep -i docker

次に・・・

以下のコマンドで『edgeリポジトリ』を無効化します。

【余談】『Docker CE』の『edge』『stable』について

『Docker CE』のDockerエンジンには、頻繁にリリースされる『edge』と約半年ごとに安定版としてリリースされる『stable』2種類あります。

今回は、安定版の『stable』のみを利用ので、『edgeリポジトリ』を無効にします。

$ yum-config-manager --disable docker-ce-edge

パッケージの最新情報を取得します。

$ yum makecache fast

それでは、インストール可能な『Docker』をリストアップしてみましょう。

『edgeリポジトリ』の有効・無効かで表示が異なるので、気になる方は確認してみてください。

$ yum list docker-ce.x86_64  --showduplicates

そして・・・

お待ちかねの『Docker CE』のインストールです。

$ yum install docker-ce

これで『Docker CE』がインストールできました。

ついでに、以下のコマンドでインストールされているか確認しておきましょう。

$ yum list installed | grep docker-ce

再読込し、設定を反映させます。

新規にユニットファイルを作った際や、/etc/systemd/system/配下のファイルを編集した際にリロードします。

$ systemctl daemon-reload

『Docker』を起動します。

$ systemctl start docker

以下のコマンドでサービス自動起動設定をしておくと、マシンの再起動後も自動で『Docker』が起動します。

$ systemctl enable docker

以上で『Docker』のセットアップは終了です。

次は、『Docker』の基本操作について見ていきましょう。

『Docker』の基本操作

manipulation-1.jpg

ここからは、公開されている『Dockerイメージ』を使用し、下記の4つの基本操作について見ていきましょう。

  1. 公開されている『Dockerイメージ』の取得
  2. それを元にコンテナを起動
  3. 起動の確認ができたら、コンテナの停止
  4. 停止したコンテナの削除

STEP①:『Dockerイメージ』の取得

『Dockerイメージ』の一覧を表示

以下のコマンドで、ローカル環境の『Dockerイメージ』の一覧を確認できます。

$ docker images

現状、ヘッダーのみで、何も表示されないと思います。

『Dockerイメージ』のダウンロード

それでは、『Dockerイメージ』を取得してみましょう。

『Dockerイメージ』は、Docker Hubと呼ばれるオンラインサービスが提供されており、そこでイメージの共有やダウンロードが可能です。

Docker Hubからイメージを取得するには、docker pullコマンドを使用します。

docker pullコマンドの書式は、以下の通りです。

$ docker pull NAME[:TAG]
  • NAME:イメージ名
  • TAG:タグ名(省略した場合はlatest)

今回は最新の『Apache httpd』を含んだイメージを取得しますので、コマンドの引数にhttpdを指定します。

$ docker pull httpd

タグ名にはバージョンを指定することが一般的ですが、タグ名を省略した場合はデフォルトでlatestを指定したことになり、最新版がインストールされます。

『Dockerイメージ』の確認

『httpd イメージ』のダウンロードが完了し、イメージに追加されたことを確認するため、docker imagesコマンドを実行します。

$ docker images

『httpd イメージ』が追加されたことが分かるかと思います。

これで『Dockerイメージ』の取得は完了です。

STEP②:コンテナの起動

以下のコマンドでは、ローカル環境のコンテナの一覧を確認できます。

$ docker ps

まだコンテナの起動は行っていないので、ヘッダーのみしか表示されません。

『httpd イメージ』を使ってコンテナを動かしてみる

イメージからコンテナを作成して起動するには、docker runコマンドを実行します。

docker runコマンドの書式は、次の通りです。

$ docker run [OPTION] NAME[:TAG] [COMMAND]
  • OPTION:オプション
  • NAME:Dockerイメージ名
  • TAG:タグ名(省略した場合はlatest)
  • COMMAND:実行時に上書きしたいコマンド

さっそくdocker runコマンドを実行して、コンテナを作成・起動してみましょう。
(コマンドのオプションについては、次で解説します)

$ docker run --name httpd -p 8080:80 -d httpd
オプション 概要
-d コンテナの実行をバックグラウンドで行うオプション。
仮に、このオプションを指定しなかった場合は、ターミナルのコマンド操作がCtrl+Cを実行するまでコンテナに奪われてしまいます。
–name コンテナ名を指定。
(指定しなかった場合は、自動で名前が付けられます)
-p コンテナのポート番号とローカルのコンピュータのポート番号を紐づけるオプション。
今回実行したコンテナは、80番ポートでhttpdが開始されます。 ただし、80番ポートで設定されているのは『コンテナ』であり、『Docker』を実行しているローカルマシンではありません。
そこで、この-pオプションで、『コンテナ』と『ローカルマシン』のポートを紐づけることで、あたかもローカルマシンでhttpdがサービスを提供しているかのような状態を作ることができます。
今回の例では、ローカルマシンの8080番ポートをコンテナの80番ポートに紐づけています。

これで『httpd コンテナ』の実行が完了しましたので・・・

にアクセスしてみてください。

すると・・・

みなさんおなじみの『It work!』が表示されるはずです。

実行中のコンテナを確認する

次に、実行中のコンテナの状態を確認してみましょう。

本記事に沿って操作をしている場合、現時点で『httpd コンテナ』が実行中かと思うので、docker psコマンドで確認してみましょう。

$ docker ps

実行中のコンテナが1つあることが確認できるかと思います。

STEP③:コンテナの停止

実行中のコンテナを停止したい場合は、docker stopコマンドを使用します。

$ docker stop [CONTAINER]
  • CONTAINER:CONTAINER ID(コンテナID)、NAMES(コンテナ名)

コマンドの引数として、『コンテナID』または『コンテナ名』を指定します。

今回は、起動したコンテナに『httpd』という名前を付けたので…

$ docker stop httpd

として、コンテナを停止させます。

停止したコンテナの確認

コンテナを停止したら、同様にdocker psコマンドで停止したかを確認しましょう。

$ docker ps

実行結果にコンテナが表示されなくなったかと思います。

停止させたコンテナも表示させたい場合は…
docker psコマンドに-aオプションをつけて実行します。

$ docker ps -a

表示された結果の『STATUS』欄にExitedと表示されているのが確認できるかと思います。

STEP④:コンテナの削除

停止中のコンテナを削除せずそのままにしておくと、ゴミが残ったままになり、容量の圧迫にもつながるので…

不要になったコンテナは、削除するようにしましょう。

コンテナを削除する場合は、docker rmコマンドを使用します。

$ docker rm [CONTAINER]
  • CONTAINER:CONTAINER ID(コンテナID)、NAMES(コンテナ名)

今回は、起動したコンテナに『httpd』という名前を付けたので…

$ docker rm httpd

として、コンテナを削除します。

削除したコンテナの確認

コンテナを削除したら、同様にdocker ps -aコマンドで削除されたか確認しましょう。

$ docker ps -a

一覧にコンテナが表示されなくなったかと思います。

まとめ

surfing-1.jpg

最後に、今回ご紹介した『Docker コマンド』についてまとめます。

  • イメージのダウンロード:docker pull
  • イメージの一覧の確認:docker images
  • コンテナの実行:docker run
  • コンテナの一覧確認:docker psdocker ps -a
  • コンテナの削除:docker rm

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
5