LoginSignup
2
2

More than 5 years have passed since last update.

ざっくりしすぎなDocker

Posted at

ざっくり自分向けメモ。

Dockerfileを書く→ビルドをするとイメージが出来上がる→イメージを元にコンテナを立ち上げる。

Dockerfile

Dockerfileを作ることでイメージを自作できる。

FROMにベースとなるイメージ名書く。
RUNはイメージをビルドするときにコンテナに実行させるコマンドを書く。
'CMD'はコンテナが起動したあとにコンテナに実行させるコマンドを書く。
COPYADDはホストからファイルを取り込むことができる。

もちろんコレだけじゃないけど、僕はコレくらいでもの足りる程度のことしかしてないのでコレだけ。

Dockerfile
# DockerHubにあるubuntuイメージを元にする
FROM ubuntu

# コンテナのなかでコマンド実行
RUN apt-get -y update && apt-get install -y python3-pip python3-dev vim

# flaskが使いたいので
RUN pip3 install flask

# ホストにあるpythonのスクリプトを持ってくる
COPY src/ /opt/

# コンテナでFlaskを使ってるPythonのやつを動かす
CMD python3 /opt/app.py

build

$ docker build -t <イメージ名> <Dockerfileのあるパス>

# 作業ディレクトリにあるなら...
$ docker build -t <イメージ名> .

-tオプションをつけることでイメージに任意の名前をつけることができる。
名前つけないとわかりにくいしつけるべきだと思う。

ビルドして得られたイメージは/var/lib/dockerとかそのへんのシステムのとこに置かれている。
イメージのパスは把握してなくてもよさそう。

作成・取得したイメージはdocker imagesコマンドで確認できる。
名前つけないとといい加減に与えられた英数字のIDを使う羽目になってメッチャめんどくさいので名前つけような。

ちなみに

-fオプションでDockerfileの名前を指定できる。

$ docker build -t <イメージ名> -f <Dockerfileの名前> <Dockerfileのあるパス>

run

さて、イメージも作れたしコンテナ起動すっかぁ〜!
docker runコマンドでコンテナを作成する。

$ docker run -it --name <コンテナ名> <イメージ名>

-iオプションはコンテナの入力にホストの入力を繋いでくれる。
-tオプションはコンテナのターミナルをホストのターミナルに繋いでくれる。

作られたコンテナもイメージと同じようにシステムのディレクトリに保存される。
コンテナは名前がかぶると「名前かぶっとるんやが?」とコンテナを上書きせずにキレる。

同名のコンテナを再度作るときは削除した後にdocker runをする必要がある。

消したり、一覧見たり

# コンテナの様子をみる(-aオプションで動いていないやつも表示)
$ docker ps -a

# コンテナ削除
$ docker rm <コンテナ名>

オプション系

--rm

docker rmでわざわざ消すのめんどっちーってときは--rmオプションをつけることで回避できる。

$ docker run -it --name <コンテナ名> --rm <イメージ名>

-d

フォアグラウンドに来んなや!!って思うときは-dオプションをつける。(デタッチ)

$ docker run -itd --name <コンテナ名> <イメージ名>

デタッチしたやつにつなぎたいときはコレを唱える。

$ docker exec -i -t <コンテナ名> bash

-p

-pオプションでホストとコンテナ内のポートを繋げられる。

$ docker run -itd -p <ホストのポート>:<コンテナのポート> --name <コンテナ名> <イメージ名>

コンテナのなかで動かしてるFlask製webページにアクセスする

# コンテナをうごかす
$ docker run -itd -p 30000:80 --name <コンテナ名> --rm <イメージ名>

で、ホストのブラウザとかでlocalhost:30000にアクセス。

参考にしたサイト

さくらのナレッジ Docker入門
Dockerのイメージファイルの格納場所
ねここくぶろぐ Dockerイメージ、コンテナの場所
Dockerfileを極めて、Dockerマスターになろう!
Dockerコンテナのシェルの中に入る
Docker ドキュメント日本語化プロジェクト

2
2
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
2
2