初めてのDocker
「Docker For Mac」をインストールしました。Dockerに慣れたい。
Dockerがインストールできてるか確認
Dockerのバージョンを確認するコマンドを叩いてみる。
$ docker --version Docker version 17.09.0-ce, build afdb6d4 $ docker-compose --version docker-compose version 1.16.1, build 6d1ac21 $ docker-machine --version docker-machine version 0.12.2, build 9371605
Dockerを立ち上げてみる
$ docker run -d -p 80:80 --name webserver nginx Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx bc95e04b23c0: Pull complete a21d9ee25fc3: Pull complete 9bda7d5afd39: Pull complete Digest: sha256:9fca103a62af6db7f188ac3376c60927db41f88b8d2354bf02d2290a672dc425 Status: Downloaded newer image for nginx:latest dea5724a26729aef7518baf2a285c31e64f5e472b6826994a7229873f2b790e9
http://localhost/でアクセスして画面が表示できればOK。
docker psでコンテナが起動してるのがわかる。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dea5724a2672 nginx "nginx -g 'daemon ..." 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp webserver
Docker
コンテナの操作
コンテナの起動
$docker run hello-world
docker run
は指定したイメージからコンテナを起動するコマンド。書式はdocker run <イメージ名> <コンテナで起動するコマンド>
。
ローカルに指定したイメージがない場合は、Docker hubからダウンロードして、コンテナを起動してくれる。
runコマンドに-itをつけると対話的に作業ができる。
$ docker run -it alpine bin/sh / # ls bin dev etc home lib media mnt proc root run sbin srv sys tmp usr var
コンテナを起動せずにイメージだけ取得するためにはdocker pull
コマンドを使う。
$ docker pull alpine
imagesコマンドで取得済みのイメージ一覧を確認できる。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 40960efd7b8f 3 weeks ago 108MB alpine latest 053cde6e8953 3 weeks ago 3.97MB
起動中のコンテナの確認
psコマンドで起動中のコンテナを確認できる。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ee63487cb246 alpine "bin/sh" 35 seconds ago Up 34 seconds admiring_snyder
コンテナの停止・再開
stopコマンドでコンテナを停止する。指定するコンテナIDはpsコマンドで確認します。
$ docker stop ee63487cb246 ee63487cb246
startコマンドで再開する。
$ docker start ee63487cb246 ee63487cb246
startコマンドを実行しただけでは、コンテナの操作ができるようにはならない。attachコマンドでターミナルからコンテナにアタッチできるようにします。
$ docker attach ee63487cb246 / # ls bin etc lib mnt root sbin sys usr dev home media proc run srv tmp var
コンテナを完全に終了させるためには、コンテナにアタッチした状態でCtrl+C
を実行します。もしくは、stopコマンドでコンテナを停止させて、rm
で削除することで終了させることもできます。
$ docker stop ee63487cb246 ee63487cb246 $ docker rm ee63487cb246 ee63487cb246
コンテナを削除するとstartコマンドで再開はできなくなります。
DockerFile
Dockerデーモンがイメージを作成する際に実行するコマンドをまとめたファイル。ベースとなるイメージに対して追加する操作が書かれている。
docker build
で、DockerFileに書かれているコマンドを実行し、イメージを構築する。
書式
# コメント 命令 引数
ベースとなるイメージを指定するために、1行目の命令はFROM
にすること。
命令 | 書式 | 実行内容 |
---|---|---|
FROM | FROM <イメージ> FROM <イメージ>:<タグ> FROM <イメージ>@ |
ベースイメージを指定する。複数のFROMを指定できる。 |
MAINTAINER | MAINTAINER <名前> | 生成するイメージのAuthor (作者)フィールドを指定する。 |
RUN | RUN <コマンド> RUN ["実行バイナリ", "パラメータ1", "パラメータ2"] |
指定したコマンドを実行する。 |
CMD | CMD ["実行バイナリ", "パラメータ1", "パラメータ2"] CMD ["パラメータ1", "パラメータ2"] CMD <コマンド> |
コンテナ起動時に実行するコマンド。docker runの引数を上書く。 |
LABEL | LABEL |
イメージにメタデータを追加する。 |
EXPOSE | EXPOSE |
コンテナが使用するポートを指定する。 |
ENV | ENV ENV |
環境変数をセットする。 |
ADD | ADD <ソース>... <送信先> ADD ["<ソース>", ... "<送信先>"] |
ファイル、ディレクトリを追加する。 |
COPY | COPY <ソース>... <送信先> COPY ["<ソース>",... "<送信先>"] |
ファイル、ディレクトリをコピーする。 |
ENTRYPOINT | ENTRYPOINT ["実行可能なもの", "パラメータ1", "パラメータ2"] ENTRYPOINT コマンド パラメータ1 パラメータ2 |
コンテナ起動時に実行するコマンド。docker run 引数 の後にENTRYPOINTで指定したコマンドを追加する。 |
VOLUME | VOLUME ["/data"] | マウントポイントを作成する。 |
USER | USER daemon | 実行ユーザを指定する。 |
WORKDIR | WORKDIR /path/to/workdir | 作業ディレクトリを指定する。 |
ARG | ARG <名前>[=<デフォルト値>] | docker build コマンドで使う変数を定義する。 |
Docker Compose
ローカルホスト上で複数コンテナを起動するツール。
- アプリケーションの環境をDockerFileに定義する。
- アプリケーションを構成する各サービスをdocker-compose.ymlに定義する。
docker-compose up
を実行すると、Compose がアプリケーション全体を起動・実行する。