# Dockerインストール
## 参考文献
https://docs.docker.com/install/linux/docker-ce/ubuntu/
## ゴミ削除
sudo apt-get remove -y docker
sudo apt-get remove -y docker-engine
sudo apt-get remove -y docker.io
sudo apt-get remove -y containerd
sudo apt-get remove -y runc
## 依存関係インストール
sudo apt-get install -y ca-certificates
sudo apt-get install -y curl
sudo apt-get install -y gnupg
sudo apt-get install -y lsb-release
## インストール
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" >> /etc/apt/sources.list.d/docker.list'
sudo apt-get update
sudo apt-get install -y docker-ce
sudo apt-get install -y docker-ce-cli
sudo apt-get install -y containerd.io
sudo apt-get install -y docker-compose-plugin
## 動作確認
### Windows11&WSLの場合
sudo service docker start
sudo docker container run --rm hello-world
### それ以外の場合
sudo docker container run --rm hello-world
## sudoなしでdocker使いたい場合
sudo usermod -aG docker $USER
## バージョン確認
docker --version
docker compose version
# docker-image
## イメージ一覧
sudo docker image ls -a
sudo docker images -a
## コンテナからイメージ作成
sudo docker container commit コンテナID イメージ名:タグ名
sudo docker commit コンテナID イメージ名:タグ名
## Dockerfileからイメージ作成
sudo docker image build -f ./Dockerfile -t イメージ名:タグ名 .
sudo docker build -f ./Dockerfile -t イメージ名:タグ名 .
## イメージ削除
sudo docker image rm イメージID
sudo docker rmi イメージID
# docker-container
## コンテナ一覧
sudo docker container ls -a
sudo docker ps -a
## コンテナ情報
sudo docker container inspect コンテナID
sudo docker inspect コンテナID
## コンテナ起動
sudo docker container start コンテナID
sudo docker start コンテナID
## コンテナ停止
sudo docker container stop コンテナID
sudo docker stop コンテナID
## コンテナ削除
sudo docker container rm コンテナID
sudo docker rm コンテナID
# docker-network
## ネットワーク一覧
sudo docker network ls
## ネットワーク作成
sudo docker network create --subnet "10.5.0.0/16" --attachable ネットワーク名
## ネットワーク削除
sudo docker network rm ネットワークID
# docker-volume
## ストレージ一覧
sudo docker volume ls
## ストレージ作成
sudo docker volume create
## ストレージ削除
sudo docker volume rm
## 未使用データ削除
sudo docker volume prune
# docker共通
## ディスク使用量確認
sudo docker system df
## 未使用データ削除
sudo docker system prune
## リソースの使用状況確認
sudo docker container stats -a
sudo docker stats -a
## ログ確認
sudo docker container logs -t コンテナID
sudo docker logs -t コンテナID
## ログ
/var/lib/docker/containers/コンテナID/コンテナID-json
# イメージからコンテナ起動
sudo docker container run -it --name コンテナ名 -p ホストのポート番号:コンテナのポート番号 イメージ名:タグ名 ${SHELL}
sudo docker run -it --name コンテナ名 -p ホストのポート番号:コンテナのポート番号 イメージ名:タグ名 ${SHELL}
## コンテナから離脱
### コンテナ終了
exit
### コンテナ維持
「Ctrl+P」→「Ctrl+Q」
## コンテナに再接続
sudo docker container attach コンテナID
sudo docker attach コンテナID
# イメージからコンテナをバックグラウンド起動
sudo docker container run -itd --name コンテナ名 -p ホストのポート番号:コンテナのポート番号 イメージ名:タグ名
sudo docker run -itd --name コンテナ名 -p ホストのポート番号:コンテナのポート番号 イメージ名:タグ名
## イメージからコンテナをバックグラウンド起動かつ終了時自動削除
sudo docker container run -itd --rm --name コンテナ名 -p ホストのポート番号:コンテナのポート番号 イメージ名:タグ名
sudo docker run -itd --rm --name コンテナ名 -p ホストのポート番号:コンテナのポート番号 イメージ名:タグ名
## コンテナに接続
sudo docker container exec -it コンテナID ${SHELL}
sudo docker exec -it コンテナID ${SHELL}
# コンテナレジストリサーバー
## 認証情報
$HOME/.docker/config.json
## イメージへのタグ付け
sudo docker image tag イメージ名:タグ名 コンテナレジストリサーバー/イメージ名:タグ名
sudo docker tag イメージ名:タグ名 コンテナレジストリサーバー/イメージ名:タグ名
## イメージpull
sudo docker image pull コンテナレジストリサーバー/イメージ名:タグ名
sudo docker pull コンテナレジストリサーバー/イメージ名:タグ名
## イメージpush
sudo docker image push コンテナレジストリサーバー/イメージ名:タグ名
sudo docker push コンテナレジストリサーバー/イメージ名:タグ名
# DockerComposeでコンテナ起動
sudo docker compose -f ./compose.yaml up -d
## 状態確認
sudo docker compose ps -a
## コンテナ停止
sudo docker compose stop
## コンテナ削除
sudo docker compose rm
## 全削除(イメージ、コンテナ、ネットワーク)
sudo docker compose down --rmi all
## 参考文献
https://docs.docker.com/install/linux/docker-ce/ubuntu/
## ゴミ削除
sudo apt-get remove -y docker
sudo apt-get remove -y docker-engine
sudo apt-get remove -y docker.io
sudo apt-get remove -y containerd
sudo apt-get remove -y runc
## 依存関係インストール
sudo apt-get install -y ca-certificates
sudo apt-get install -y curl
sudo apt-get install -y gnupg
sudo apt-get install -y lsb-release
## インストール
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" >> /etc/apt/sources.list.d/docker.list'
sudo apt-get update
sudo apt-get install -y docker-ce
sudo apt-get install -y docker-ce-cli
sudo apt-get install -y containerd.io
sudo apt-get install -y docker-compose-plugin
## 動作確認
### Windows11&WSLの場合
sudo service docker start
sudo docker container run --rm hello-world
### それ以外の場合
sudo docker container run --rm hello-world
## sudoなしでdocker使いたい場合
sudo usermod -aG docker $USER
## バージョン確認
docker --version
docker compose version
# docker-image
## イメージ一覧
sudo docker image ls -a
sudo docker images -a
## コンテナからイメージ作成
sudo docker container commit コンテナID イメージ名:タグ名
sudo docker commit コンテナID イメージ名:タグ名
## Dockerfileからイメージ作成
sudo docker image build -f ./Dockerfile -t イメージ名:タグ名 .
sudo docker build -f ./Dockerfile -t イメージ名:タグ名 .
## イメージ削除
sudo docker image rm イメージID
sudo docker rmi イメージID
# docker-container
## コンテナ一覧
sudo docker container ls -a
sudo docker ps -a
## コンテナ情報
sudo docker container inspect コンテナID
sudo docker inspect コンテナID
## コンテナ起動
sudo docker container start コンテナID
sudo docker start コンテナID
## コンテナ停止
sudo docker container stop コンテナID
sudo docker stop コンテナID
## コンテナ削除
sudo docker container rm コンテナID
sudo docker rm コンテナID
# docker-network
## ネットワーク一覧
sudo docker network ls
## ネットワーク作成
sudo docker network create --subnet "10.5.0.0/16" --attachable ネットワーク名
## ネットワーク削除
sudo docker network rm ネットワークID
# docker-volume
## ストレージ一覧
sudo docker volume ls
## ストレージ作成
sudo docker volume create
## ストレージ削除
sudo docker volume rm
## 未使用データ削除
sudo docker volume prune
# docker共通
## ディスク使用量確認
sudo docker system df
## 未使用データ削除
sudo docker system prune
## リソースの使用状況確認
sudo docker container stats -a
sudo docker stats -a
## ログ確認
sudo docker container logs -t コンテナID
sudo docker logs -t コンテナID
## ログ
/var/lib/docker/containers/コンテナID/コンテナID-json
# イメージからコンテナ起動
sudo docker container run -it --name コンテナ名 -p ホストのポート番号:コンテナのポート番号 イメージ名:タグ名 ${SHELL}
sudo docker run -it --name コンテナ名 -p ホストのポート番号:コンテナのポート番号 イメージ名:タグ名 ${SHELL}
## コンテナから離脱
### コンテナ終了
exit
### コンテナ維持
「Ctrl+P」→「Ctrl+Q」
## コンテナに再接続
sudo docker container attach コンテナID
sudo docker attach コンテナID
# イメージからコンテナをバックグラウンド起動
sudo docker container run -itd --name コンテナ名 -p ホストのポート番号:コンテナのポート番号 イメージ名:タグ名
sudo docker run -itd --name コンテナ名 -p ホストのポート番号:コンテナのポート番号 イメージ名:タグ名
## イメージからコンテナをバックグラウンド起動かつ終了時自動削除
sudo docker container run -itd --rm --name コンテナ名 -p ホストのポート番号:コンテナのポート番号 イメージ名:タグ名
sudo docker run -itd --rm --name コンテナ名 -p ホストのポート番号:コンテナのポート番号 イメージ名:タグ名
## コンテナに接続
sudo docker container exec -it コンテナID ${SHELL}
sudo docker exec -it コンテナID ${SHELL}
# コンテナレジストリサーバー
## 認証情報
$HOME/.docker/config.json
## イメージへのタグ付け
sudo docker image tag イメージ名:タグ名 コンテナレジストリサーバー/イメージ名:タグ名
sudo docker tag イメージ名:タグ名 コンテナレジストリサーバー/イメージ名:タグ名
## イメージpull
sudo docker image pull コンテナレジストリサーバー/イメージ名:タグ名
sudo docker pull コンテナレジストリサーバー/イメージ名:タグ名
## イメージpush
sudo docker image push コンテナレジストリサーバー/イメージ名:タグ名
sudo docker push コンテナレジストリサーバー/イメージ名:タグ名
# DockerComposeでコンテナ起動
sudo docker compose -f ./compose.yaml up -d
## 状態確認
sudo docker compose ps -a
## コンテナ停止
sudo docker compose stop
## コンテナ削除
sudo docker compose rm
## 全削除(イメージ、コンテナ、ネットワーク)
sudo docker compose down --rmi all