この記事では、《Docker や コンテナ》について、
業務を通して学習した内容をまとめています。
- 『Docker』のセットアップ
- 『Docker』の基本操作
こういった疑問についてまとめています。
※本記事は、自分で学習したことのまとめ用として書いています。
尚、解説で誤った点があれば、スローして頂ければ喜んでキャッチしますのでお願い致します。
<前回のお話>
【Docker入門①】そもそも『Docker』とは…?
##(参考)サーバーの準備
まずは・・・
『Docker』を使用する環境を準備しましょう!
本記事では、詳しく触れませんが…
今回は『CentOS』を前提として、解説していきます。
ですので・・・
『VirtualBox』や『VMware』などを利用して、仮想マシンを準備してみて下さい。
※『仮想マシン作成』の記事に関しては、今後まとめる予定です。
##(参考)『Docker』のセットアップ
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』の基本操作
ここからは、公開されている『Dockerイメージ』を使用し、下記の4つの基本操作について見ていきましょう。
- 公開されている『Dockerイメージ』の取得
- それを元にコンテナを起動
- 起動の確認ができたら、コンテナの停止
- 停止したコンテナの削除
###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
一覧にコンテナが表示されなくなったかと思います。
##まとめ
最後に、今回ご紹介した『Docker コマンド』についてまとめます。
- イメージのダウンロード:
docker pull
- イメージの一覧の確認:
docker images
- コンテナの実行:
docker run
- コンテナの一覧確認:
docker ps
、docker ps -a
- コンテナの削除:
docker rm