Help us understand the problem. What is going on with this article?

Dockerコマンドを使いこなそう

はじめに

Dockerコマンドの操作方法を復習していきます。
Docker環境がまだ無い方は以下の記事を参照してみてください。

参考:今話題のDocker + Rails + Circle CI + Terraform構成を試したいんじゃ!

コマンド

確認系

docker ps

コンテナの状態確認
-a をつけることで停止中のコンテナも表示できる

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
e8f5056d7bf4        hello-world         "/hello"            3 hours ago         Exited (0) 3 hours ago                       ecstatic_snyder

docker images

ローカルにあるイメージファイルの一覧

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              fce289e99eb9        11 months ago       1.84kB

docker info

Dockerの状態を確認
ダッシュボード的存在

[root@localhost docker]# docker info
Client:
 Debug Mode: false

Server:
 Containers: 1
  Running: 0
  Paused: 0
  Stopped: 1
 Images: 2
 Server Version: 19.03.5
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 <略>

操作系

docker start/stop

コンテナの起動/停止

###コンテナの起動
# docker start <コンテナ名>

###コンテナの停止
# docker stop <コンテナ名>

docker pull

Dockerイメージのダウンロード

(例)CentOS7のイメージダウンロード
# docker pull centos:7

docker run

コンテナ起動

# docker run -it -d -p <ホスト側ポート>:<コンテナ側ポート> -v <ホスト側ディレクトリ>:<コンテナ側ディレクトリ> --name <コンテナ名> <Dockerイメージ名>

run オプション

オプション 説明
--name コンテナ名を指定 docker run --name "test" centos
-d バッググラウンド実行 docker run -d centos
-it コンソールに結果を出力 docker run -it --name "test" centos /bin/cal
-p host:cont ポートフォワーディング docker run -d -p 8080:80 httpd
--add-host ホスト名とIPを指定 docker run -it --add-host=test.com:192.168.1.1 centos
--dns DNSサーバを指定 docker run --dns=192.168.1.1 httpd
--mac-address MACアドレスを指定 docker run -it --mac-address="92:d0..." centos
--cpu-shares CPU配分 (全体で1024) docker run --cpu-shares=512 centos
--memory メモリの上限 docker run --memory=512m centos
-v ディレクトリの共有 docker run -v /c/Users/src:/var/www/html httpd
-e 環境変数を設定 docker run -it -e foo=bar centos /bin/bash
--env-file 環境変数リストから設定 docker run -it --env-file=env_list centos /bin/bash
-w 作業ディレクトリを指定 docker run -it -w=/tmp/work centos /bin/bash

docker cp

コンテナ-ホスト間のファイルコピー

###コンテナ→ホストへのファイルコピー
# docker cp <コンテナ名>:<コンテナ内のコピー元ファイル> <ホスト側のコピー先ディレクトリ>

###ホスト→コンテナへのファイルコピー
# docker cp <ホスト側のファイル> <コンテナ名>:<コンテナ内のコピー先ディレクトリ>

docker exec

コンテナへのログイン

(例)『tomcat』コンテナへログイン
[root@localhost docker]# docker exec -it tomcat bash
[root@e01ba3d18e31 /]#

docker commit

コンテナからdockerイメージの作成

# docker commit <コンテナ名> <作成するDockerイメージ名>

docker rm(i)

コンテナ(dockerイメージ)の削除

###コンテナの削除
# docker rm (-f) <コンテナ名>

###dockerイメージの削除
# docker rmi (-f) <dockeriイメージファイル名>

今日はここまで

新しく覚えたコマンドは追記していきます。

gggnt
IT業界3年目で現在はオンプレ環境のインフラ構築を行っています。 最近はaws、Docker、Ansible、CIに興味があります。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away