3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker 備忘録

Last updated at Posted at 2018-07-03
  • ドキュメント Docker Documentation
  • image とは: ファイルシステム。変化しない。
  • container とは: 実行中の image。

image の操作

docker pull # image のダウンロード
docker run hello-world # hello-world image から container を生成して実行する

docker image ls # image のリスト
docker image rm # image の削除

docker image history (image) # image の作成履歴
docker image tag bb584af21a3a propella/docker-kujira:latest # image に名前をつける。
docker image push propella/docker-kujira # image をアップロードする。

image の指定方法

書式 IMAGE[:TAG|@DIGEST]

  • NAME (REPOSITORY)
    • 例: docker run --rm hello-world
      • ローカルに無ければ dockerhub から library/hello-world:latest をダウンロードする。
    • なぜか docker image ls では REPOSITORY と呼ばれる
  • TAG
    • 例: docker run --rm hello-world:linux
      • : の後ろを TAG と呼ぶ。
      • ローカルに無ければ dockerhub から library/hello-world:linux をダウンロードする。
  • DIGEST
    • DIGEST を使うと image を特定出来る。
    • DIGEST は docker image ls --digests で表示する。
    • 例: docker run --rm hello-world@sha256:3e1764d0f546ceac4565547df2ac4907fe46f007ea229fd7ef2718514bcec35d
  • IMAGE ID
    • 例: docker run --rm e38bc07ac18e

コンテナの操作

docker container ls # running 中の container を表示
docker container ls -a # 停止している container を含めて表示
docker container rm # container の削除
docker container stop # container 開始
docker container start # container 停止
docker container rm $(docker container ls -a -q) # 全 container を削除
docker container exec # 実行中の container でコマンド実行
    例: docker container exec -it db bash

docker run のオプション

  • -i: STDIN を開く
  • -t: pseudo-TTY を割り当てる
    • 例: docker run -it propella/docker-kujira bash
  • --rm: 実行後コンテナ削除
  • -u: 実行ユーザを指定
  • -e: 環境変数を指定
  • -w: 実行ディレクトリを指定
  • -v: ホスト位置:コンテナ位置 でホストのディレクトリをコンテナから見えるようにする。
docker run -it -v ホストのパス:コンテナのパス (image) bash

Dockerfile

自分で image を作るには Dockerfile という名前のファイルを作る。

FROM alpine

RUN apk --update add git openssh make gcc libc-dev ncurses-dev && \
    git clone https://github.com/mtoyoda/sl.git && \
    cd sl && \
    make

CMD ["./sl/sl"]

カレントディレクトリの Dockerfile から sl という名前の image を作る。

docker build -t sl .

実行。この場合アプリが curses を使っているので -it オプションをつける。

docker run --rm -it sl

Dockerfile に FROM を複数回指定すると image が複数個出来る。最初の image でビルドをして、次の image にコピーするような使い方をする。コピー対象を指定するためには FROM AS 書式を使う。

FROM alpine AS build-environment
...

FROM alpine AS SERVER
COPY --from=build-environment src dst

のような使い方をする

Network 設定

docker network ls # 表示 標準で bridge ネットワークが使われる
docker run -itd --name=networktest ubuntu
docker network inspect bridge # bridge ネットワークの表示
docker network create -d bridge my-bridge-network # ネットワークの作成
docker run -d --net=my-bridge-network --name db training/postgres # postgres image を my-bridge-network に繋げて実行
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' db # container の IP アドレスを表示
docker network connect my-bridge-network # web ネットワークに繋げる

Docker registry

あとで

参考

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?