【Docker】Dockerをはじめよう①
Dockerを勉強しようと思っても、仕組みを勉強するだけではよくわからないと思うので、とりあえず使いながら覚えようという記事を目指します。ちなみに、Dockerの環境は一から構築するのではなく、GCP環境でDockerが使用できる環境をデプロイします。
- この記事でやること
- GCPでDocker環境をデプロイ
- Dockerfileの作成
- docker buildコマンドでDockerイメージをビルド
- そのイメージをDockerHubにpushする
- まとめ
この記事でやること
GCPでDockerを使用できる環境をデプロイします。次にDockerHubにあるnginxのイメージを使用してWebサーバを構築します。
やること一覧
- GCPでDocker環境をデプロイ
- Dockerfileの作成
- docker buildコマンドでDockerイメージをビルド
- そのイメージをDockerHubにdocker push
今回実行するコマンドのイメージを載せます。
GCPでDocker環境をデプロイ
GCPでは、Compute EngineからVMインスタンスを作成し、ブートイメージにContainer-Optimized OS を選択します。
これだけです。sshでアクセスするための手順は書きませんので、いい感じにアクセスできるようにしてください。
Dockerfileの作成
コマンドは何でも良いですが、ファイル名をDockerfileとしてファイルを作成してください。そして、下記を記述します。
FROM nginx RUN echo "build" CMD echo "run"
FROM でどのイメージを基にするか指定します。ここで、ローカルにイメージを持っていなくとも、勝手にbuild時にダウンロードしてくれます。RUN/CMDの違いは下記です。
- RUN - イメージ作成時に実行される
- CMD - コンテナ実行時に実行される
docker buildコマンドでDockerイメージをビルド
Dockerfileを~/nginxディレクトリ内に作成しました。buildはDockerfileと同じディレクトリで実行するので、ディレクトリを移動してください。
build実行(イメージを作成)する前に、今あるイメージ確認しておきましょう。今は何もありませんね。
xxxx@container ~/nginx $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE
Dockerfileを使用してイメージを作成します。-t でtag名を指定します。<リポジトリ名>:<tag名>
xxxx@container ~/nginx $ docker build -t nginx:1 .
buildが無事完了したら、またイメージファイルを見てみましょう。2つ新しいイメージがあります。tagがlatestなのがDockerHubから取得してきた最新のイメージです。tagが1になっているのが、今回作成したイメージです。
xxxx@container ~/nginx $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx 1 fef899467da0 10 seconds ago 109MB nginx latest f68d6e55e065 2 days ago 109MB
そのイメージをDockerHubにpushする
DockerHubにブラウザからログインし、リポジトリを作成します。今回はtestrepoというリポジトリを作成しました。ここにpushしていきます。
この作成したイメージをDockerHubにpushするのですが、ローカルにリポジトリchittai/testrepoを作成する必要があるので、作成します。
xxxx@container ~/nginx $ docker tag fef899467da0 chittai/testrepo:testimage
コマンド実行後にイメージ一覧を確認します。chittai/testrepoが増えていますね。
REPOSITORY TAG IMAGE ID CREATED SIZE nginx 1 fef899467da0 19 minutes ago 109MB chittai/testrepo testimage fef899467da0 19 minutes ago 109MB nginx latest f68d6e55e065 2 days ago 109MB
次に、DockerHubにログインします。ここまでできればpushの準備は完了です。
xxxx@container ~/nginx $ docker login
このコマンドでpushするのですが、完了したらブラウザからも確認してみましょう。
xxxx@container ~/nginx $ docker push chittai/testrepo:testimage
Tagの欄にtestimageができてますね。
まとめ
今回実行したコマンドのイメージを再掲します。