前置き
- Dockerを知らない人からスタートしてDockerを導入するまでに最低限必要そうな知識を集めてみました
- 指摘があればコメントにお願いします
- 「こういう視点の記事も入れたほうがいいんじゃないの」とか
- 監視等は後日Kubernetesの記事としてまとめるつもりです
- そういうのってスタンドアロンのDockerであまり必要にならないと思うので
入門編
もしVM・仮想化がわからなければ読む
-
仮想マシンとは?よく聞く"仮想化" "仮想マシン"の基礎知識と特徴を解説
- 仮想化の概念をつかむのには良いが、次の点に留意
- この記事で解説されているのはDockerが流行る前のホスト型・ハイパーバイザ型と呼ばれる仮想化技術
- Dockerの用いているコンテナ型仮想化との違いは次の記事で出てくる
- 仮想化の概念をつかむのには良いが、次の点に留意
dockerとは何かをつかむ
dockerを触ってみる
構築(自分の環境に合わせて記事を選ぶ)
- macOSでDocker環境構築
-
Docker for Windows をインストールしCentOSを起動するまでの手順をまとめる
- Windows 10 Professional か Enterprise 64-bit でないとできない
- VirtualBox等は動かなくなる
-
VirtualBox+Vagrantで楽々Docker環境構築(Windows)
- Windowsで上の記事の条件を満たせない場合はこっち
- Windows上に仮想マシンを立て、仮想マシンにLinuxをインストールして、 そのLinux上でDockerを使う
- 記事内にDocker toolboxへの言及があるがDocker toolboxは廃止された
- 最も簡単なDockerの公式セットアップ方法(CentOS/Ubuntu)
構築の補足
- プロキシ環境の場合
- Docker Desktop(Docker for Windows, Docker for Mac) の場合は設定画面でプロキシを入れる
- Linuxの場合は設定ファイルに書く。
動かしてみる
- Dockerでプログラマが最低限知るべきことが、最速でわかるチュートリアル
-
Docker入門(第一回)~Dockerとは何か、何が良いのか~
- Dockerを動かすのは第二回から
補足
- 手元の環境が記事と違う方法で構築したものかもしれないが、基本的に問題なく記事のコマンドを実行できるはず
コマンド集
Dockerfileの書き方
ログの見方
-
docker logsコマンドの使い方(実例付)CE対応
- コンテナの中のログを見る方法
- Dockerデーモンの設定とトラブルシューティング
- Docker本体のログ確認
- この公式Doc の和訳
- OSのログを読む
- 稀にDockerがカーネルパニックを起こすので見ておく
- Ubuntuだと
/var/log/kern.log
- (記事見つからなかったので誰かいいのがあれば教えてください)
トラブルシュート
- Docker本体が起動してるか確認
- Linuxホストの場合:
systemctl status docker
- Docker for Windows/Mac の場合はGUIで確認
- Linuxホストの場合:
- [Docker]docker inspcetコマンドでコンテナの情報を確認する
- docker topを使用して、コンテナで実行しているプロセスを確認する
- troubleshooting-container-networking
Dockerの仕組み
-
Docker の基本学習 ~ Docker のネットワーク
- 記事自体は古いが、Dockerの仕組みとしては今も変わってないはず
-
いまさらDockerに入門したので分かりやすくまとめます
- Dockerの仕組みとDockerのコマンド解説
- Docker の Data Volume まわりを整理する
- dockerの基礎(仕組みなど)
-
Docker内部で利用されているLinuxカーネルの機能 (namespace/cgroups)
- C言語でシステムコールを呼び出してコンテナ分離機能を実際に試している
- –cap-dropオプションを使ったDockerコンテナの安全性を高める工夫
ランタイム(runC)とその差し替え
-
はじめてのrunC
- DockerのデフォルトではrunCが使われる
-
runC vs. cc-runtime vs. kata-runtime?コンテナランタイムの内部構造と性能比較
- 読むにはkubernetesの知識も少し必要
-
gVisorを使ってdockerコンテナをより安全に利用する
- カーネル分離できる
-
nvidia-docker2を試してみる
- GPUが使えるDockerコンテナが作れるようになる
ベストプラクティス・本番環境
- Google、コンテナ作成の7つのベストプラクティスを公開
- Dockerコンテナを本番環境で使うためのセキュリティ設定
- 事例から考えるDockerの本番利用に必要なこと
- Docker Bench for Securityを触った(1. Dockerホストの設定編)
レジストリ
備考
- プライベートレジストリを使う場合は次の2点を気を付ける
- insecure-registry
- プライベートレジストリをhttpにする場合や、信頼できるhttpsの証明書を用意できない場合に必要な設定
- 最近のUbuntu(15.04以降)でDockerの--insecure-registryの設定
- no_proxy
- proxy環境下だとno_proxy設定を入れないとプライベートレジストリへのアクセスにproxyを見に行ってしまう
- insecure-registry
バックアップリストア
- システム次第なので参考程度に
- Kubernetesを使うのであればPVでストレージを使い、ストレージ側をバックアップする手もある
-
Dockerコンテナを移行してみる【成功編】
- データボリュームでやる
-
PostgreSQL コンテナの backup / restore をする
- コンテナ内のバックアップリストアコマンドを使う(Postgresの例)
-
Dockerコンテナを移行してみる【成功編】