前準備
# インストール
brew install --cask docker
# 再インストール
brew reinstall --cask docker
# ポートの使用確認
lsof -i:8080
# LISTENとして使用しているportを確認
lsof -i -P | grep "LISTEN"
# ポートの80にアクセス
curl http://localhost:80
# NginxのConfigファイルを見つける
find / -type d -name nginx | xargs grep -r html
# 使われているポートを殺す
sudo lsof -t -i tcp:8000 | xargs kill -9
イメージ
# イメージの一覧を表示
docker images
# イメージの取得
docker pull nginx
# イメージの履歴を確認する
docker history nginx
# Dockerfileをビルドしてイメージの作成
docker build -t mycontainer:first .
docker hub
# イメージ作成
docker build -t <image_name> .
# tagの設定
docker tag <IMAGE_ID> <user_name>/<image_name>:<version>
# hubにpushする
docker push <user_name>/<image_name>:<version>
コンテナ
# 作動中のコンテナ一覧表示
docker ps
# 作動中のコンテナをリアルタイムで表示
watch "docker ps"
# ヘッダを表示しない。よりスッキリした画面になる
watch -t "docker ps"
# 時間間隔指定
watch -n 1 "docker ps"
# 停止中のコンテナもすべて表示
docker ps --all
docker ps -a
# コンテナの起動
# docker run [オプション] イメージ[:タグ|@ダイジェスト値] [コマンド] [引数...]
# -p {コンテナのポート:ホストのポート} # コンテナのポートをホスト側に公開する
docker run --name {name} -p 80:80 {REPOSITORY/TAG}
# コンテナをバックグラウンドで起動
## バックグラウンドで起動する(Detachする)ので、inputができない、outputが表示されなくなる。
docker run --name nginx -p 80:80 --detach nginx
docker run --name nginx -p 80:80 -d nginx
# コンテナを起動させ続ける
docker run --name {name} -it -p 80:80 -d {REPOSITORY/TAG}
# 作動中のコンテナを停止する
docker stop CONTAINTER_ID
# 停止中のコンテナを再起動する
docker start CONTAINTER_ID
# コンテナのログを表示する
docker logs CONTAINER_ID
# 作動中のコンテナの中にシェルで入る
## - exec
## - Run a command in a running container
## - exec -i (--interactive)
## - Keep STDIN open even if not attached
## - exec -t (--tty)
## - Allocate a pseudo-TTY
## execution 実行、 interactive 対話形式、 tty テレタイプライター => terminalのこと
docker exec -it CONTAINER_ID bash
# コンテナにホストからファイルをコピー
docker run -d --volume $(pwd):/home nginx
# 公式イメージをタグ指定して、build
docker pull nginx:1.18-alpine
# runして入る
docker run -it <コンテナ名(IDじゃだめ)> sh
# しばらくsudo
sudo -i
消去系
# Dockerが使用するシステム容量の確認
docker system df
# Build cahcheの消去
docker builder prune
# イメージの消去
docker rmi IMAGE_ID
# 使っていないイメージ,ボリューム,ネットワーク等すべてを消去する
docker system prune -a --volumes
# 止まったコンテナを消去
dokcer rm CONTAINER_ID
# 停止したコンテナを一括消去
docker container prune
# すべてのコンテナを停止
docker stop $(docker ps -aq)
# すべてのコンテナを消去
docker rm $(docker ps -aq)
docker-compose
docker-composeとdockerコマンドの対応
docker run --name nginx \
--env="env_key=env_value" \
-p 80:80 \
--volume $(pwd):/usr/share/nginx/html \
nginx
docker-compose.yml
version: "3.7"
services:
nginx:
image: nginx:latest
container_name: docker_compose_nginx
environment:
- env_key=env_value
ports:
- "80:80"
volumes:
- ${PWD}:/usr/share/nginx/html:ro
# 起動
docker-compose --file docker-compose.yaml up
# 停止
docker-compose -f docker-compose.yaml down
# ログを監視 (followオプションでリアルタイム監視ができるようになります。)
docker-compose -f docker-compose.yaml logs --follow
# ログを見る
docker-compose logs コンテナ名
# Composeで立ち上げたコンテナにアクセスする。
docker-compose exec postgres bash
一部のコンテナだけ新しくする
docker-compose rm -fs backend
docker rmi development_backend
docker-compose up backend