Points & Lines

【Docker入門 】① dockerイメージ取得とコンテナの基本操作

イメージ取得とコンテナの基本操作

Dockerを使用したローカル開発環境の構築方法を解説していきます。
Mac OSでの解説ですが、Windowsの場合でも操作方法は基本的に同じです。

環境: Mac 10.13.6、 Docker version 19.03.5

Docker Desktopのインストール

まずはDocker DesktopというアプリをPCにインストールします。

Docker Desktopのインストール、セットアップが完了したら、
ターミナルからdockerコマンドが使用出来るようになっているはずです。

dockerバージョン確認コマンド

$ docker --version
Docker version 19.03.5, build 633a0ea

基本的なdockerコマンド

docker pull イメージ名:タグ名Docker imageを取得する
docker images保有しているDocker imageの一覧を表示する
docker runDocker imageからコンテナを作成する
docker exec -it コンテナ名 bash起動中のコンテナへログインする
docker ps起動中のコンテナ一覧を表示する
docker ps -a(起動していないものも含め)コンテナ一覧を表示する
docker stop コンテナ名起動しているコンテナを停止する
docker start コンテナ名コンテナを起動する
docker rm コンテナ名停止中のコンテナを削除する
docker cp ファイルパス コンテナ名 : ディレクトリパスホスト側に存在するファイルをコンテナへコピーする

dockerイメージを取得してコンテナを作成・起動する

dockerイメージはdocker hubという公式サイトからdocker pullコマンドを使ってダウンロードします。

dockerイメージとは…
ホスト上に立ち上げる仮想環境の元となるファイルのこと
dockerコンテナとは…
dockerイメージとはから作成した仮想環境の実体のこと
(ひとつのdockerイメージから複数のコンテナを作成することができる)

CentOSのdockerイメージを取得する

docker hubのこちらのページよりCentOSのdockerイメージを取得する事が出来ます。

ページの右側の列から、docker pullコマンドを簡単にコピー出来るようになっています。

「Tags」のタブをクリックし、下へスクロールすると過去のバージョンが選択出来るようになります。

CentOS 7を選択

$ docker pull centos:centos7

docker pullコマンドで指定するイメージ名の後ろを:コロンで区切りバージョンを指定します。(タグという)

:latestを明示すると※最新版がインストール出来るようです。
※指定なしが最新でない場合もあるようですので要注意

(ダウンロード完了後)
docker imagesコマンドを実行して保有しているdockerイメージの一覧を表示して確認する。

$ docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
centos                   centos7             5e35e350aded        3 months ago        203MB

コンテナの作成

取得したCentOS7のdockerイメージからコンテナを作成して起動します。

docker run コマンドを実行して、コンテナの作成と起動を行う

docker run -p 80:80 -d --privileged --name mycentos7 centos:centos7 /sbin/init

「イメージ:タグ」 の形式でDockerイメージを指定します。
→ 「centos:centos7」

docker runコマンドの各オプションについて
name オプション
作成するコンテナに任意の名前を付ける
-p オプション
「 -p (ホストのポート番号):(作成するコンテナのポート番号)」

コンテナにwebサーバーを構築する際に必要となります。
上記の例ではホストへの80番ポート(httpリクエスト)アクセスをコンテナ内部の80番ポートへ転送出来るようになります。

-d オプション
オプションコンテナをバックグラウンド(detached mode)で実行する
(基本的にこれを推奨)
privileged オプション, /sbin/init の指定
CentOS 7のsystemctlコマンドを使用する為に必要となります。

エラー
docker: Error response from daemon: Ports are not available: port is already allocated.
→ ホストで起動している他のサービスとポート番号が競合しています。
(Macの場合は内臓のApache等)
該当のサービスを終了するか、競合しないポート番号をオプションへ指定します。
-p 81:80

docker psコマンドで作成したコンテナが起動している事を確認する

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES
2752ea3cc744        centos:centos7      "/sbin/init"        5 seconds ago       Up 4 seconds        0.0.0.0:80->80/tcp   mycentos7
起動中のコンテナ一覧に表示されない場合

docker run実行時の何らかのエラーで起動は出来なかったが、
コンテナ自体の作成はされている場合があります。
その場合、
docker ps -aコマンドで作成されている事を確認し、
docker startコマンドでもう一度起動する事が出来ます。

$ docker start mycentos7

コンテナへログインする

docker execコマンドで起動中のコンテナへログインします。
-itオプションとコマンドを受け付ける/bin/bashの記述は必須です。
(/bin/bash → bashでも可)

docker exec -it cent7test /bin/bash

プロンプトが以下のように切り替わればコンテナへログイン完了です。

[root@088641cc0d65 /]#

次回はwebサーバーを構築したコンテナ側とホスト側でディレクトリの共有を行う方法を解説します。

Follow me!

モバイルバージョンを終了