はじめてのDockerでなんだかよくわからない時のリンク集

# ログを見たい
```bash
# ビルドとか起動とかのログが見たい
$ docker logs -f {サービス名(サービス名をつけないと全部)}
```

# インストール
- [CentOSとUbuntuにDockerをインストールする方法 - Qiita](https://qiita.com/ponsuke0531/items/58910bd51f22b04a50c3)
- [Windows に Docker Desktop をインストール &mdash; Docker-docs-ja 19.03 ドキュメント](https://docs.docker.jp/docker-for-windows/install.html)
- [Docker DesktopをMacにインストールする方法 - ponsuke_tarou’s blog](https://ponsuke-tarou.hatenablog.com/entry/2020/10/29/222027)

# docker-compose.ymlの書き方

```yml
# すぐに忘れるポートの書き順
ports:
  - "{ホストのポート}:{コンテナのポート}"
```

- [Compose file version 3 reference | Docker Documentation](https://docs.docker.com/compose/compose-file/)
- [docker-compose.ymlの書き方について解説してみた - Qiita](https://qiita.com/yuta-ushijima/items/d3d98177e1b28f736f04)
- [Docker Compose - docker-compose.yml リファレンス - Qiita](https://qiita.com/zembutsu/items/9e9d80e05e36e882caaa#volumes)

# コンテナを○○したい
```bash
# ビルドして起動したい : コンテナが既に存在していたら再作成しない(--no-recreate)
$ docker-compose up -d --no-recreate --build
# ビルドして起動したい : 特定のサービスだけ
$ docker-compose up -d --build {サービス名}
# 全部起動したい
$ docker-compose up -d
# 既存のコンテナを全部起動したい
$ docker-compose start

# docker-composeでコンテナのログを見たい
$ docker-compose logs | grep {コンテナ名}

# 再起動したい
docker restart {コンテナID or コンテナ名}

# 停止したい
$ docker-compose stop {サービス名}
$ docker stop {コンテナID or コンテナ名}
# 全部停止したい
$ docker-compose stop

# 削除したい
$ docker-compose rm -f {サービス名}
$ docker rm {コンテナID or コンテナ名}

# 関連付けられたボリュームごと削除したい
$ docker rm -v {コンテナID or コンテナ名}
```

- [up &mdash; Docker-docs-ja 17.06.Beta ドキュメント](http://docs.docker.jp/compose/reference/up.html)
- [rm &mdash; Docker-docs-ja 17.06.Beta ドキュメント](http://docs.docker.jp/engine/reference/commandline/rm.html)
- [dockerの起動、停止、再起動 - Qiita](https://qiita.com/tanakin_prog/items/6e6219a62e7a05eb22c2)
- [Dockerのコンテナを削除する方法 - Qiita](https://qiita.com/ponsuke0531/items/b32c0ce490207cae824f)


## コンテナを作りたい
- [自分のコンテナだけ作り直す方法 - Qiita](https://qiita.com/ponsuke0531/items/960b1da7e1656c5d6ce3)
- [Dockerで使っているコンテナを作り直す方法 - Qiita](https://qiita.com/ponsuke0531/items/9336172e812e7271a966)
- [DockerfileでPATHを通す時はRUNではなくENVを使おう - Qiita](https://qiita.com/TakashiOshikawa/items/2b8974c242a7054e0be5)
- [Dockerのベースサイズを変更する方法 - Qiita](https://qiita.com/ponsuke0531/items/d59201490d93758a4298)
- [MySQLのコンテナを作る方法 - Qiita](https://qiita.com/ponsuke0531/items/cbd5f3fe9461792c2279)
- [Visual Studio CodeとDockerを使ってでVue.jsをやってみる - ponsuke_tarou’s blog](https://ponsuke-tarou.hatenablog.com/entry/2022/02/28/171429)

## コンテナの情報を見たい
```bash
# 停止しているコンテナも含めて全コンテナを表示する
$ docker ps -a
CONTAINER ID          IMAGE                COMMAND                 CREATED                       STATUS                 PORTS               NAMES
{コンテナIDの最初の12桁}{コンテナの元イメージ}{起動時に与えられたコマンド}{コンテナの作成日から経過した時間}{起動または停止してから経過した時間}{バインドしているポート}{コンテナの名前} 

# サイズ付きで停止しているコンテナも含めて全コンテナを表示する
$ docker ps -a -s
CONTAINER ID    IMAGE   COMMAND       CREATED       STATUS       PORTS       NAMES       SIZE

# コンテナの数や利用サイズを確認したい
$ docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              4                   1                   5.064GB             4.588GB (90%)
Containers          1                   1                   188MB               0B (0%)
Local Volumes       4                   1                   0B                  0B
Build Cache         0                   0                   0B                  0B
```

- [コンテナの内部IPアドレスを確認する方法](https://qiita.com/ponsuke0531/items/7e8e5081993a30afdc4a)
- [docker psでコンテナリストを表示・取得する | Unskilled?](https://unskilled.site/docker-ps%E3%81%A7%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%83%AA%E3%82%B9%E3%83%88%E3%82%92%E8%A1%A8%E7%A4%BA%E3%83%BB%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B/)




# コンテナのログを見たい

```bash
# ログを見たい
$ docker logs {コンテナID}
# ログを流しながら見たい
$ docker logs -f 0c849eff1bd7
```

- [logs &mdash; Docker-docs-ja 19.03 ドキュメント](http://docs.docker.jp/v19.03/engine/reference/commandline/logs.html)






# ホストで○○したい

```bash
# 使っていないコンテナ・イメージ(-a)・ボリューム(--volumes)を確認メッセージなし(-f)で削除したい
$ docker system prune -a -f --volumes
# ホストからコンテナ内にファイルをコピーしたい
$ docker cp {ホストでのファイルパス} {コンテナID}:{コンテナ内のコピー先パス}
# コンテナ内からホストにファイルをコピーしたい
$ docker cp {コンテナID}:{コンテナ内のファイルパス} {ホストでのコピー先パス}
```

- [ホストからコンテナに接続する方法](https://qiita.com/ponsuke0531/items/653f6d7600482b681858)
- [docker system prune | Docker Documentation](https://docs.docker.com/engine/reference/commandline/system_prune/)
- [docker system df と docker system prune を使ってみた - Qiita](https://qiita.com/foursue/items/ffe8fdfaa67902706b8b)
- [Dockerでホストとコンテナ間でのファイルコピー - Qiita](https://qiita.com/gologo13/items/7e4e404af80377b48fd5)

## イメージを○○したい
- [既存のDockerコンテナのイメージを出力する方法 - Qiita](https://qiita.com/ponsuke0531/items/16c8a63f8f990e119ff3)
- [Docker Hub](https://hub.docker.com/search?q=&type=image)
- `restart` : docker自動再起動の設定。OS起動時にコンテナを起動するのに便利
    - [Restart policies (--restart) | Docker run reference | Docker Documentation](https://docs.docker.com/engine/reference/run/#restart-policies---restart)

|restart|意味|
|:--|:--|
|no|自動起動しない(デフォルト)。|
|on-failure[:max-retries]|コンテナが0以外の終了ステータスで終了した場合に再起動。必要に応じて、再起動の再試行回数を制限できる。|
|always|常にコンテナを再起動します。コンテナは、状態に関係なくデーモンの起動時に常に起動する。<br/>OS起動時にコンテナを起動したい場合はこれを指定する。|
|unless-stopped|Dockerデーモンが停止する前にコンテナが停止状態になった場合を除き、終了ステータス (デーモンの起動時を含む) に関係なく、常にコンテナを再起動する。|

# 外部から〇〇したい
- [コンテナ上のTomcatに外部のブラウザからアクセスする方法](https://qiita.com/ponsuke0531/items/f75650d697a5b5329da8)


# 困った
- [コンテナ上のChromeの動きが悪い時](https://qiita.com/ponsuke0531/items/a96105a17a5c63612478)
- [driver failed programming external connectivity on endpoint](https://qiita.com/ponsuke0531/items/f3490f571b5eee16ea87)
- [MavenでCould not transfer artifact xx:xx:pom:x.x from/to local (file:/path/to/../repo): /home/path/.m2/repository/xx/xx/x.x/xx-x.x.pom.part.lock (Permission denied)](https://qiita.com/ponsuke0531/items/bae4b0ef57c4afcd4b7b)
- [Tomcatを起動したらPort 8080 required by Tomcat v6.0 Server at localhost is already in use.](https://qiita.com/ponsuke0531/items/1cf9117d6379efa41035)
- [login failed for display 0 - Qiita](https://qiita.com/ponsuke0531/items/a6884dcffaea9e037a4e)
- [no space left on device - Qiita](https://qiita.com/ponsuke0531/items/edf2eee638202aa7f61f)
- [MySQLのコンテナを作成したのに再起動し続ける - Qiita](https://qiita.com/ponsuke0531/items/973b4beecd99ba23ce66)
- [文字列をARGに設定したらよくわからない値になった - Qiita](https://qiita.com/ponsuke0531/items/586152ba5a1fc0d3e38c)
- [ERROR: No such service: - Qiita](https://qiita.com/ponsuke0531/items/f8a3c6b953f0bccfb387)
- [Failed to create bus connection: No such file or directory - Qiita](https://qiita.com/ponsuke0531/items/c640fdafc744c5f55c6b)
- [既に進行中のコンソールセッションがあるため、リモートコンピューター上の他のコンソールセッションに接続できませんでした。 - Qiita](https://qiita.com/ponsuke0531/items/0f0d826d94a3d5e8998d)