目次
イメージ取得とコンテナの基本操作
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 run | Docker 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サーバーを構築したコンテナ側とホスト側でディレクトリの共有を行う方法を解説します。