TSUBOCK★LABO-ツボックラボ-

とあるセキュリティエンジニアの技術メモブログ

MENU

Dockerコマンドでよく使うコマンドをまとめてみた

f:id:panda-loves-smile:20200618001926p:plain

最近色々なOSSの検証を行うので、Dockerfileが提供されているものはDockerで構築を行っています。Dockerもちゃんと使い始めたのが去年とかなので、ちゃんとDockerコマンドを覚え切れておらず、検索することが多いので、自分の備忘録がてら残しておきたいと思います。(随時更新予定!)

事前準備

Dockerコマンドを使うためにまずはDockerのインストールについて記載します。

Dockerのインストール

Ubuntuにインストール

Ubuntuへのインストールはaptコマンドで実行します。最初にaptコマンドのupdateをしておきます。

$ sudo apt update && sudo apt upgrade -y

前提としてインストールするソフトウェアをインストールします。

$ sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

docker公式のGPG公開鍵をインストールします。

$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

公開鍵が改竄されていないことの証明のため、フィンガープリントを確認しておきます。

$ sudo apt-key fingerprint 0EBFCD88

aptのrepositoryを追加します。

$ sudo add-apt-repository \
      "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
      stable"

docker-ceをインストールします。

$ sudo apt update
$ sudo apt install -y docker-ce docker-ce-cli containerd.io

docker --versionを実行して、インストールされたDockerのバージョンが返ってくればインストールされていることが確認できます。

$ sudo docker --version 

CentOSにインストール

CentOSへのインストールはyumコマンドで実行します。最初にyumコマンドの最新化をしておきます。

$ sudo yum update && sudo yum upgrade -y

古いバージョンのDockerまたはdocker-engineがインストール済みの場合は関連する依存パッケージと合わせて一緒にアンインストールをしましょう。

$ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

公式安定版のyumリポジトリを取得します。

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Docker CEをインストールします。

$ sudo yum install -y docker-ce docker-ce-cli containerd.io

docker --versionを実行して、インストールされたDockerのバージョンが返ってくればインストールされていることが確認できます。

$ sudo docker --version 

MacOSにインストール

MacOSへのインストールはhomebrewを導入済みであれば、brew installが楽ちんです。

$ brew install docker
$ brew cask install docker

docker --versionを実行して、インストールされたDockerのバージョンが返ってくればインストールされていることが確認できます。

$ sudo docker --version 

Dockerサービスの起動

Ubuntuでの起動

Ubuntu上でのサービス起動はserviceコマンドを使用します。

$ sudo service docker start

CentOSでの起動

CentOS上でのサービス起動はsystemctlコマンドを使用します。

$ sudo systemctl start docker

また、OS起動時にDockerが自動起動する設定を入れる場合は下記のコマンドを実行します。

$ sudo systemctl enable docker

MacOSでの起動

Lanchepad から Docker のアイコンを選択するか、Terminalから下記を実行します。

$ open /Applications/Docker.app

任意のアカウントを管理者権限なしでDockerコマンド実行できるように設定を行う

Ubuntu/CentOS共通のコマンド。dockerのusergroupに追加するコマンド。下記を使用することで任意のアカウントから管理者権限なしでもDockerコマンドが実行できる。

$ sudo usermod -aG docker <アカウント名>

Dockerコマンド

Dockerコンテナイメージ一覧を確認する

$ docker images

Docker Hubにあるイメージを検索

$ docker search <イメージ名> | more

Docker Hubや他のレジストリからDockerコンテナを取得する

$ docker pull <イメージ名>

Dockerコンテナを作成し、起動する。

$ docker run <イメージIDまたはイメージ名>

Dockerコンテナの作成と起動をバックグラウンドで処理する。

$ docker run -d <イメージIDまたはイメージ名>

Dockerコンテナを起動する

$ docker start <コンテナIDまたはコンテナ名>

Dockerコンテナを停止する

$ docker stop <コンテナIDまたはコンテナ名>

Dockerコンテナを再起動する

$ docker restart <コンテナIDまたはコンテナ名>

起動中のDockerコンテナを確認する

$ docker ps

指定した条件を満たしたコンテナだけを確認する

 $ docker ps -f <条件>

ローカルで起動されたDockerコンテナを全て表示する

$ docker ps -a

起動中のDockerコンテナを落とす

$ docker kill <コンテナIDまたはコンテナ名>

ローカルに保存されているコンテナを削除

$ docker rm <コンテナIDまたはコンテナ名>

ローカルに保存されているコンテナイメージを削除

$ docker rmi <イメージIDまたはイメージ名>

ローカルの任意のディレクトリにあるDockerfileからDockerコンテナを作成する

$ docker build -f <ファイルパス>

Docker コンテナの中に入る

$ docker run -it <コンテナIDまたはコンテナ名> /bin/bash

ホスト側からコンテナ内のコマンドを実行する。

$ docker exec <コンテナIDまたはコンテナ名> <実行したいコマンド>

ホスト側の任意のディレクトリをコンテナ内の任意のディレクトリと共有できるようにコンテナを起動する

$ docker run -it -v <ホスト側任意ディレクトリ>:<コンテナ内任意ディレクトリ> <イメージIDまたはイメージ名> bash

ホスト側の任意Portへの通信をコンテナの任意Portへ転送できるようにコンテナを起動する

$ docker run -it -p <ホスト側Port>:<コンテナ側Port> <イメージIDまたはイメージ名> bash

ホスト側の任意のディレクトリのファイルをコンテナ内の任意のディレクトリへコピーする

$ docker cp <ホスト側のコピー元ファイルパス> <コンテナIDまたはコンテナ名>:<コンテナ内のコピー先ファイルパス>

コンテナ内の任意のディレクトリのファイルをホスト側の任意のディレクトリにコピーする

$ docker cp <コンテナIDまたはコンテナ名>:<コンテナ内のコピー元ファイルパス> <ホスト側のコピー先ファイルパス> 

CPU使用率やメモリ使用量などを確認する。

$ docker stats

全てのローカルコンテナを削除する。

$ docker rm $(docker ps -aq)

Dockerのコンテナログを確認する。

$ docker logs <コンテナIDまたはコンテナ名>

コンテナに割り当てられた内部IPアドレスを確認する。

# コンテナ内に入って
$ hostname -i

参考:Docker ドキュメント日本語化プロジェクト