###### tags: `Docker学習` # Docker学習 1st 初期状態 ```dockerfile:Dockerfile FROM ruby:2.1 ``` ## どのように Dockerfile を作成していくか `docker build . -t nginx-server` とすると、 `nginx-server` という名前でコンテナイメージを作成される。 `docker run -it nginx-server bash` とすると、コンテナの中に入ることができる。 コンテナの中に入って`apt install` 等を実行して少しずつイメージを作成するためのコマンドを貯めていく。 `docker run`で打ってみて実験できたコードを少しずつ、`Dockerfile`に書き加えていく。 `RUN`を実行するたびに、イメージとして保存される。もしも、`RUN`の内容を書き換えるとまたそこから実行される。 そのため、実験しているうちは、`RUN`を複数書いていっても良い。Gitにpushする時には、複数の`RUN`をまとめると良い。 なぜ、`RUN`するかというと、`RUN`ごとにイメージが作成されるので、`apt update`するとキャッシュがコンテナの中に保存される。それだと、`docker push`するときに不要な領域を使ってしまって無駄である。 `apt update` と `apt clear` を同じ`RUN`で行うことによって、イメージの容量を減らすことができる。 複数のコマンドをつなげるには`¥`を用いる。 ```dockerfile RUN set -x ¥ apt update ``` `docker images` で `docker build`で作成したイメージの一覧を確認できる。 `<none>` となるっているイメージはビルドに失敗したビルドイメージです。適宜削除してください。 ## 裏技 `set -x` をコマンドの前に`RUN` の先頭に書くことで、どの部分でエラーになったかがわかりやすくなります。 ## 設問 ### 問1 `build -t` `build -t` の `-t` は何を表していますか。 `docker images` で見比べてみましょう。 ### 問2 `run -it` `docker run -it` の `-it` はそれぞれ何を表していますか。 ### 問3 `nginx`インストール `ruby:2.1`のイメージに追加で `nginx`をインストールしてください。 ### 問4 複数の`RUN`をまとめる 複数の`RUN`をまとめて見ましょう。 ### 問5 `RUN`をまとめた状態で書き換え 複数の`RUN`をまとめた上で、`vim`をインストールしたDockerfileを作成してみよう。 `docker build`するとどうなりますか? ### 問6 `apt update` で作成されるキャッシュを削除しましょう `/var/lib/apt/lists` を消してください。 イメージサイズが変わっているはずです。 削除前と後の容量を比較して見ましょう。 ### 問7 複数のDockerfile Nginx のコンテナ、ruby のコンテナそれぞれで、別のイメージにしたいのですが、同じフォルダに複数のDockerfileを配置したい場合、どのようなオプションを`docker build`に指定しますか。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up