LoginSignup
1
5

More than 1 year has passed since last update.

Dockerを動かしてみた

Last updated at Posted at 2019-02-19

2つの教材でdockerを学習しました。
ドットインストール Docker入門
本田有呼さん著 「Dockerのことが全くわからず現場で形見の狭い思いをしているプログラマー向けの本」

Dockerとは

コンテナ型のアプリケーション実行環境のことです。
2013年に公開されてから爆発的に普及しました。

仮想化技術は長年、VirtualBoxなどが主流でした。
しかし、これらには次のようなデメリットがあります。
・導入や運用が大変
・動作が重い

ホストとなるOSの中で、更に独立したOSを動かしているイメージなので、重くなります。

これがDockerなら、「コンテナ」という単位でOSをそのまま動かせて、カーネルをホストのOSと共有できます。
* カーネル:OSの根幹

・軽い
・早い
・運用しやすい
とメリットがたくさんなので広まりました。

Dockerの仕組み

Docker ファイル

Dockerイメージを作るための元ネタのことです。
Dockerイメージにテキストで命令します。
ビルドすることで、Dockerイメージが出来上がります。

Docker イメージ

コンテナを作るための雛形です。
どんなOSにどんなアプリを搭載してどんな動作をするか、などの情報が入っています。
雛形さえ作ってしまえば、同じ内容のコンテナを量産できます。

Docker コンテナ

Dockerイメージを生成することで出来上がります。
コンテナには実行中・停止・破棄の3つの状態があります。

Dockerの作業の流れ

①Dockerファイルに必要な記述をする
②ビルドしてDockerイメージが出来上がる
③実行してコンテナが生成される

Docker コマンド

  • FROM
    Dockerイメージのベースとなるイメージを指定します。
    指定したイメージはDocker Hubというポスティングサービスからダウンロードされるんです。
FROM ubuntu:14.04
#FROM イメージ名:タグ
  • RUN
    Dockerイメージをビルドするときに、コンテナの中で実行するコマンドをそのまま指定します。
RUN echo 'Hello World!'
  • COPY
    ローカルホストPCのリソースをコンテナにコピーします。
COPY main.go /tmp/work/
# COPY コピーするリソース/コピー先のパス
  • CMD
    コンテナの実行時に、コンテナ起動時の最初の1回だけ実行するプロセスを指定します。

  • EXPOSE
    コンテナを外部公開するときのポートを指定します。

外部公開するときには、Webサーバを使います。
よく使われるのがNginx(エンジンエックス)というものです。
高速かつ軽量に動きます。
localhost:8080
で起動できます。

Dockerイメージのコマンドとオプション

Dockerイメージの操作は

docker image 操作 オプション

で基本的に行います。
ここでは、操作とそれぞれの操作で使うオプションを見ていきます。

  • build
    Dockerファイルからdockerイメージをビルドします。

docker image build -t helloworld:1.0 .

−tオプションはDockerイメージの名前とタグ名を指定するために必要です。
同じフォルダにDockerファイルがあるなら、パスの表記を.とできます。

*その他のオプション
  • -f
    Dockerファイルの名前を違う名前で使用できるようにします。
docker image build -f my Dockerfile -t helloworld:1.0 .
  • --pull
    DockerファイルのFROMに指定されているイメージを毎回Docker Hubから取得する場合に”true”を表示します。
    一度取得したイメージはローカルpcに保存されているため、このオプションでtrueを確かめないと、過去に取得していなイメージを再利用してビルドされてしまいます。
docker image build --pull=true -t helloworld:1.0 .
  • ls
    ローカルPCに保存されているDockerイメージを一覧表示する
    linuxコマンドでもよく使いますね!
docker image ls
  • pull
    Docker Hubで提供されているDockerイメージをダウンロードします。
docker image pull イメージ名:タグ名
  • rm
    ローカルPCに保存されているDockerイメージを削除します。
    rm=removeですね!
docker image rm イメージ名

コンフリクトエラーが出た場合、-fオプションをつけてください。

  • prune
    不要なDockerイメージをまとめて削除します。

Dockerコンテナのコマンドとオプション

コンテナの操作の基本は⇣です。

docker container run オプション名 イメージ名:タグ名

runコマンドで重要なオプションをいくつか紹介します。

  • --name
    コンテナ名を定義します。

  • -i と -t
    「Ctrl+C」に同じ。
    セットで使う必要があるので、"-i -t"と書きます。

  • -d
    コンテナをバックグラウンドで動かします。
    Webサーバなどでコンテナを動かすときに使います。

  • -p
    ポートフォワードするためのコマンドです。

docker container run -p 9999:8080

⇑なら、9999ポートのアクセスを8080ポートにフォワードする、という意味です。
* フォワード:転送の

  • --rm
    コンテナの終了時にそのコンテナを削除します。
    一度きりしか使わないコンテナで使用します。

  • stop
    コンテナを停止します。

docker container stop コンテナ名
  • restart
    コンテナを再実行します。
    stopで停止したコンテナは破棄しない限り再実行できます。

これまでのコマンドをまとめて実行してみる

Dockerファイルの内容

# ベースをubuntuにする
FROM ubuntu:18.10

# Nginxのインストール
RUN apt-get -y update && apt-get -y upgrade
RUN apt-get -y install nginx

# ポートの指定
EXPOSE 80

#rootフォルダへリソースのコピー
COPY index.html /var/www/html/

#Nginxの起動
CMD ["nginx","-g","daemon off;"]

index.html (Webに表示する内容)

<h1>この記事を読んでくださりありがとうございます!</h1>

表示する内容は何でも良いです。
2つのファイルは同じ場所に置いてください。

それでは、命令を出していきます。

まず、cdでファイルを保存した場所まで移動します。

移動したら、Dockerイメージをビルドします。

docker image build -t hello:1.0

次に、コンテナを動かします。

docker container run -i -t --rm -p 9999:80 hello:1.0

最後にブラウザでhttp://localhost:9999/にアクセスします。

そうすれば、

範囲を選択_003.png

このように表示される。
ちなみに、本はamazonのkindleでめちゃくちゃ安いので、買ってみてもいいと思います。

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5