3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-02-19

この記事では、《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
3
5
0

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
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?