LoginSignup
1
0

More than 1 year has passed since last update.

Docker 基本のコマンド

Last updated at Posted at 2022-08-05

Dockerを学習して覚えたコマンドを残しておく

Docker

Dockerの基本
現在ではdocker-composeを使うのが主流

images
# Imageを作成 Dockerfileから作る 
# -t [名前]:タグ [dockerfile-path]で名前をつける
docker image build -t hoge:latest [Deckerfile-path]

# Docker Imageを全て表示
docker images

# Docker Imageを削除
docker rmi [id or name]
container run
# Dockerコンテナを作成して起動
docker run --name <任意の名前> <Image名>

# option
--name [コンテナ名] # コンテナ名を指定
-p ホストのポート番号:コンテナのポート番号 # ポートを設定
-it # コンテナ内部に入る
--rm # コマンドの実行が完了した時、コンテナを破棄
-d # バックグラウンドでコンテナを実行
-v ホストのパス:コンテナのパス # volumeを指定する
-e TEST_ENV=Tee # ENV 環境変数 

# コマンド例
docker run -it --name hoge -v  Ubuntu:20.04

# nginxは/usr/share/nginx/html/にrootのhtmlがある
# Imageでwebserverをinstallしている場合ポートを開ける必要がある
docker run -v /Users/tee/Desktop/test/:/usr/share/nginx/html --name mynginx -p 8080:80 nginx:1.16

docker run -d -p 8080:80 --name hoge hoge
container
# 起動中のコンテナの中でコマンドを実行する
docker exec [id or name] [実行したいコマンド]

# コンテナを確認
docker ps -a

# コンテナを再開
docker start [id or name]

# コンテナを止める
docker down [id or name]

# コンテナを再起動
docker restart [id or name]

# 停止中のコンテナを削除
docker rm [id or name]
一括
# Imageを全て削除
docker image prune

# コンテナを全て削除
docker container prune
# コンテナにホストからファイルをコピー # 逆も可 
docker cp [host-path] [id]:[dorcerのpath]

# ログ表示 # -fでリアルタイム
docker logs

# 起動中のコンテナの中に入る
docker exec [name or id] /bin/bash
# 詳細情報を表示
# ENVを確認したりするのに使う
docker inspect [コンテナ名]

Docker compose

複数のコンテナをまとめて操作する
基本はこちらを使う

コマンド

docker-compose.ymlで管理しているコンテナに対して作用する
現在の階層のdocker-compose.ymlに対して行われる
無い場合は親の階層を探す

# imageを作成する
# DokerfileやGemfileを修正した際なども叩く
docker compose build

# コンテナの立ち上げ
# ymlで指定されたImageかDockerfileを利用して構築
docker compose up -d

# コンテナを停止・削除
docker compose down

# ymlで管理されたコンテナを全て再起動
docker compose restart
# 対象のymlで管理されたコンテナのみ一覧表示
docker compose ps

# ログを表示
docker compose logs
# ymlで管理されたサービスを1つ指定してコマンドを実行
# Imageの構築/コンテナ作成/コマンドの実行を1度で行う
docker compose run <サービス> <コマンド>

# 起動中のコンテナでコマンド実行 shellなどを使える
docker compose exec <サービス> <コマンド>
# dangling(宙ぶらりん)状態のImageを全て削除
docker image prune

Dockerfile

Imageをコード化したもの

RUNとCMDは実行タイミングが違う
# ベースのImage
FROM ubuntu:20.04

# Imageをbuildする時に実行
RUN apt-get update -y && \
    apt-get install -y nginx

# COPY HOSTのファイルをコンテナにコピーする
COPY index.html /var/www/html

# Imageをbuildする段階で環境変数を設定できる
ENV TESTENV="Tee"

# 各種コマンドを実行する際のカレントディレクトリを指定する
# Docker exec で実行する場所を決められる
WORKDIR /path/to/workdir

# Container起動直後に実行
CMD ["nginx", "-g", "daemon off;"]

CMD以外のコマンドはImageをbuildする際に行われる
CMDはContainerが起動した直後に実行される

Image

# rootは/var/www/html
ubuntu:20.04

docker -compose.yml

ymlファイルはスペースで親子関係を表現するファイル形式
設定ファイルでよく使われる

# versionとserviceを登録する
version: "3"
services:
  web:
    build: ./php # dockerfileの相対path
    container_name: "php8"
    ports:
      - "8080:80" 
  db:
    image: mariadb:10.4
    container_name: "db2"
    volume:
      - ./data:/var/lib/mysql # ホスト:Container ホストは相対pathがおすすめ
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0