たくあんポリポリ

勉強したことを載せていきます。最近、技術系の記事はZennに書いています。(https://zenn.dev/chittai)

【Docker】Dockerをはじめよう①

Dockerを勉強しようと思っても、仕組みを勉強するだけではよくわからないと思うので、とりあえず使いながら覚えようという記事を目指します。ちなみに、Dockerの環境は一から構築するのではなく、GCP環境でDockerが使用できる環境をデプロイします。

この記事でやること

GCPでDockerを使用できる環境をデプロイします。次にDockerHubにあるnginxのイメージを使用してWebサーバを構築します。

やること一覧

  1. GCPでDocker環境をデプロイ
  2. Dockerfileの作成
  3. docker buildコマンドでDockerイメージをビルド
  4. そのイメージをDockerHubにdocker push

今回実行するコマンドのイメージを載せます。

f:id:c_taquna:20190708005156j:plain:w400

GCPでDocker環境をデプロイ

GCPでは、Compute EngineからVMインスタンスを作成し、ブートイメージにContainer-Optimized OS を選択します。

cloud.google.com

f:id:c_taquna:20190707235007j:plain:w400

f:id:c_taquna:20190707234959j:plain:w400

f:id:c_taquna:20190707235003j:plain:w400

これだけです。sshでアクセスするための手順は書きませんので、いい感じにアクセスできるようにしてください。

f:id:c_taquna:20190707235527j:plain:w400

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していきます。

f:id:c_taquna:20190708003134j:plain:w400

この作成したイメージを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ができてますね。

f:id:c_taquna:20190708003903j:plain:w400

まとめ

今回実行したコマンドのイメージを再掲します。 f:id:c_taquna:20190708005156j:plain:w500