最近色々な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