【Docker】docker desktopの各セッティングの内容（mac）

個人用メモです。

自分のPCにdocker desktopをインストールした後のセッティングについて。

インストール後にいじるのはResourcesのADVANCED。バグが出たらExperimental Featureといったところ。

>（参考）[docker公式 docker desktopの概要](https://matsuand.github.io/docs.docker.jp.onthefly/desktop/)


##目次

1. [General](#1-general)
    2. [Start Docker Desktop when you log in](#1-1-start-docker-desktop-when-you-log-in)
    3. [Include VM in Time Machine backups](#1-2-include-vm-in-time-machine-backups)
    4. [Securely store Docker logins in macOS keychain](#1-3-securely-store-docker-logins-in-macos-keychain)
    5. [Send usage statistics](#1-4-send-usage-statistics)
2. [Resources](#2-resources)
    3. [ADVANCED](#2-1-advanced)
    4. [FILE SHARING](#2-2-file-sharing)
    5. [PROXIES](#2-3-proxies)
    6. [NETWORK](#2-4-network)
3. [Docker Engine](#3-docker-engine)
4. [Experimental Feature](#4-experimental-feature)
5. [Kubernetes](#5-kubernetes)
    6. [Enable Kubernetes](#5-1-enable-kubernetes)
    7. [Deploy Docker Stacks to Kubernetes by default](#5-2-deploy-docker-stacks-to-kubernetes-by-default)
    8. [Show system containers](#5-3-show-system-containers)


<br>
##Preferences
Dockerの設定は５つの項目に分かれている。

1. General
2. Resources
3. Docker Engine
4. Experimental Feature
5. Kubernetes

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/e5839098-7196-d4be-13ea-4183782a945d.png)


<br>
##1. General
Generalの設定項目は４つ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/80ca757d-ea43-98d0-afe8-1f961470c279.png)


###1-1 Start Docker Desktop when you log in
ログイン時に Docker Desktop を起動するかどうか

<br>
###1-2 Include VM in Time Machine backups
仮想マシン（VM）のバックアップに関するオプションを設定かどうか。 デフォルトは無効。

####・Time Machineとは？
Time Machine は、Mac に組み込まれているバックアップ機能。

ここでは、写真や音楽をバックアップするのと同様にdockerのデータもバックアップするかどうかの設定となる。

<br>
###1-3 Securely store Docker logins in macOS keychain

macOSキーチェーンにDockerログイン情報を保存するかどうか。デフォルトオン。オフにできない。

チェックを入れておけば、docker desktop起動時にいちいちログインする手間を省ける。

####・キーチェーンとは？
Macでパスワードを安全に保存するコンテナ。


<br>
###1-4 Send usage statistics
docker改善のため、利用統計の送信するかどうか。

診断情報、クラッシュレポート、利用状況の各情報を送信する。





<br>
##2. Resources
CPU、メモリ、ディスク、プロキシー、ネットワークといったリソースを設定する。以下４つの項目から成る。

1. ADVANCED
2. FILE SHARING
3. PROXIES
4. NETWORK



###2-1 ADVANCED
dockerでPCをどの程度使うかの利用制限をする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/2c27a40d-e4fd-e693-d1ba-cbb2a65747af.png)


####2-1-1 CPUs
どれだけのプロセッサをdockerに割り当てるか。

デフォルトは、ホストマシン上で利用可能なプロセッサー数の半分になっている。


####2-1-2 Memory
dockerに割り当てるメモリ。デフォルトは2GB。


####2-1-3 Swap
dockerに割り当てるスワップファイルサイズ。デフォルトは1GB。

スワップとは物理メモリ以外にHDDなどのディスク領域を仮装メモリとして利用すること。

なので、メモリ要領が足りない（小さい）場合は、swapを多めに割り当てる。


####2-1-4 Disk image size
dockerのイメージやコンテナなどデータを保存する領域。現在使用中の要領も教えてくれる。

以下の場合だと、120GB割り当て、現在28.5GB使用中ということ。

```:例
Disk image size: 120 GB (28.5 GB used)
```


<br>
####2-1-5 Disk image location
docker関連ファイルの保存場所。ディレクトリパスを指定する。




<br>
###2-2 FILE SHARING
ローカルディレクトリとdockerを共有する。

ボリュームをマウントする際に必須。設定がないとエラー、Mounts denied（マウントが拒否されました）やcannot start service（サービスを起動できません）が発生する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/dd5a7adc-efe1-cffd-1ae7-233569a0327d.png)

`-`をクリックすると削除。`+`で追加できる。



<br>
###2-3 PROXIES
macOSのHTTP/HTTPSプロキシ設定をdockerに伝える。
dockerは指定したプロキシ情報を元にコンテナのプル処理を行う。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/10a17981-0124-7cb1-83bf-5a993eb7bf8a.png)

起動中のコンテナに対しては適用できない。

**▼起動中のコンテナに対して実行する場合**

```:例
$ docker run -e HTTP_PROXY=http://proxy.example.com:3128 alpine env

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=b7edf988b2b5
TERM=xterm
HOME=/root
HTTP_PROXY=http://proxy.example.com:3128
```


<br>
###2-4 NETWORK
VPN(仮想プライベートネットワーク)上で動作するようにする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/8d232506-2be4-4128-d87a-ac6f87525c9a.png)





<br>
##3. Docker Engine
dockerデーモンがコンテナを実行する方法をJSONで指定する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/ce4d4fbf-2777-9357-e8c7-35c2e61ee125.png)

・[docker daemonのオプション一覧](https://docs.docker.com/engine/reference/commandline/dockerd/)



<br>
##4. Experimental Feature
将来リリース予定の試験的機能を有効にするかどうか。デフォルトではONになっている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/e0c54ffc-f6f1-85ed-e3a5-c0891ebc19d5.png)

デフォルトONのため、docker desktopをアップデートしたタイミングでコンテナが起動できない、削除したはずのファイルがコンテナ側で消えてないなどの不具合が発生することがある。

その場合は、OFFにするかバージョンを戻す。


<br>
##5. Kubernetes
クバネティスと読む。コンテナ仮想化ツールの運用管理・自動化を行うために開発されたオープンソースソフトウェア。

Kubernetes上に構築した Docker アプリをデプロイするテストができる。

Kubernetesを使うと、**複数コンテナの運用をDockerのみの時よりも効率的にできる**ようになる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/bfb826dc-b4e4-7d57-0372-99c0dd885329.png)


###5-1 Enable Kubernetes
Dockerコンテナーとして起動するスタンドアロンのKubernetesインスタンスをインストールする。

**▼スタンドアロンとは？**
ネットワークに繋がれていない独立したシステム。セキュリティ面でメリットがある。



###5-2 Deploy Docker Stacks to Kubernetes by default
Kubernetesをデフォルトのオーケストレーターとして設定する。

オーケストレーションとは複数システムの調整と自動化の意味。なので、Kubernetesを使って自動化するという意味になる。



###5-3 Show system containers
Kubernetesコンテナーをdocker service ls などのコマンドで表示できるようにする。

デフォルトでは表示されない。