概要

  • OSの名前空間分けて FreeBSDのjailみたいの作れる仕組みと、それ用のルートファイルシステムイメージを自動でダウンロードして走らせたりする仕組み
    • 名前空間は分けるけどそれぞれにinitが走るわけではない。その点に関してはchrootに近い(jailやOpenVZのようなものを下敷きにして捉えるとDockerの1コンテナ1プロセスというマナーを理解するのに時間がかかるかもしれない)

インストール方法

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo vi /etc/apt/sources.list.d/docker.list
# docker.listの内容
# deb https://apt.dockerproject.org/repo ubuntu-xenial main
  • 以下のようにやるとaptでバージョンが選べるらしい。
    sudo apt-cache madison docker-engine
    sudo apt-get install -y docker-engine=1.12.1-0~xenial
    sudo apt install docker-engine=17.05.0~ce-0~ubuntu-xenial

Docker

gcr のローカル実行

gcloud auth login
gcloud auth configure-docker
gcloud builds submit -t gcr.io/hamko-home/$name # カレントディレクトリをビルドして gcr にアップロード https://cloud.google.com/run/docs/quickstarts/jobs/build-create-shell 
docker pull gcr.io/hamko-home/$name
docker run --rm gcr.io/hamko-home/$name # -rmオプションは、コンテナ終了時に自動的にコンテナを削除してくれます。

Dockerfile

  • dockerのRUNは毎回コンテナを立ち上げてそれを適用してコンテナを保存するということをしている。
  • この時の中間コンテナはキャッシュされているので、Dockerfileに何らかの変更を加える必要がある場合は、重い処理を早いところに入れておけばキャッシュが使われてインストールなどの処理をスキップできる。
  • RUNとCMDの違い
    • RUN - イメージ作成時に実行される(build内部)
    • CMD - コンテナ実行時に実行される(buildされたものをデプロイしている)

トラブルシューティング

  • host error
    • at the physical machine levelなのでどうしようもないやつ。コンテナのサイズ上げても無駄
  • 80 番ポートを開くときに Permission Denied
    • OS の仕様なのでグループに許可をする
$ USER=hamko
$ sudo usermod -aG docker $USER
$ su - $USER
$ sudo systemctl restart docker
# Logout

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-11-11 (金) 12:52:23 (526d)