1. はじめに
Dockerコマンドについての自分への備忘録としてまとめてみました。ご参考になれば幸いです。
参考:コマンドラインリファレンス
参考:Docker入門 Dockerコンテナのステータスを調べてみよう
2. Dockerコマンド
コマンドライン
// docker一括実行(docker pull & docker create & docker startを一括実行)
$ docker run hello-world
// dockerイメージ取得(イメージはコンテナの素)
$ docker pull alpine
// dockerイメージ一覧表示
$ docker image ls
// dockerコンテナ生成
$ docker create -it alpine
// dockerコンテナ一覧表示
$ docker container ls -a
// dockerコンテナ起動
$ docker start [CONTAINER ID]
// dockerコンテナ停止
$ docker stop [CONTAINER ID]
// dockerコンテナOSへログイン
$ docker run -it alpine bin/sh
// dockerコンテナOSからログアウト
CTRL + P + Q
// dockerコンテナ削除
docker rm [CONTAINER ID]
// dockerコンテナリネーム
$ docker rename [OLD CONTAINER NAME ] [NEW CONTAINER NAME]
// dockerイメージの削除
docker rmi [IMAGE ID]
// dockerイメージ一括削除
$ docker image prune
// dockerログ確認
$ docker logs [CONTAINER ID]
3.Dockerコンテナサンプル&動作確認
hello-world
- 動作確認:実行結果の一部に「Hello from Docker!」が出力される。
- 終了すると --rm オプションをつけているのでコンテナは削除される。
コマンドライン
$ docker run --rm hello-world
WEBサーバ(nginx)
- 動作確認:起動後、ブラウザからhttp://localhost:8080にアクセスして「Welcome to nginx!」が出力されていればOK。
- 終了すると --rm オプションをつけているのでコンテナは削除される。
コマンドライン
$ docker run -it --rm -p 8080:80 nginx:latest
php7.0-apache
コマンドライン
$ docker run -d -p 8080:80 --name php7apa php:7.0-apache
#ログイン
$ docker exec -it php7apa2 bash
WEBサーバ(httpd:alpine)
- 動作確認:起動後、ブラウザからhttp://<サーバのIPアドレス>:8080にアクセスして「It works!」が出力されていればOK。
- 停止すると --rm オプションをつけているのでコンテナは削除される。
コマンドライン
// デタッチド・モードとしてバックグラウンドでコンテナを実行
$ docker run -d -p 8080:80 --name docker-httpd --rm httpd:alpine
// コンテナプロセス確認
$ docker ps
// 停止
$ docker kill docker-httpd
4. Dockerデーモンコマンド
コマンドライン
// dockerデーモン起動
$ sudo service docker start
// dockerデーモンステータス確認
$ sudo service docker status
// dockerデーモン停止
$ sudo service docker stop
5. WSL(Windows Subsystem for Linux)でDocker利用する際のメモ
- Windows Subsystem for Linux(Hyper-Vなし)でDockerを動かす
- WSL環境でDockerが動作しなくなった
- WSL(Windows Subsystem for Linux)は「管理者として実行」する
- 以下の魔法のコマンドでDockerを起動する
コマンドプロンプト(Dockerデーモンが起動していない時に実行する)
$ sudo cgroupfs-mount && sudo service docker start
- WSL(Windows Subsystem for Linux)側のみでDockerコマンドを利用し、PowerShell(パワーシェル)側ではDockerコマンドを利用しない
6. WSL(Windows Subsystem for Linux)でdocker-compose利用する際のメモ
※2019年3月2日時点の結論:
おそらくWidnows10Pro WSL では、まだdocker-composeは利用できない。
- WSLでdockerのインストールからdocker-composeまで動かす
- Windows Subsystem for Linux + Docker for Windows を使えるようにするまでメモ
- Dockerでpullやrunを行ったときイメージダウンロードができなくなった問題の解決法
- dockerをWindows10 HomeのWSL (Windows Subsystem for Linux)で動かしてみた
7.docker-composeコマンド
- 複数のdockerコンテナをまとめて起動したい場合は、docker-compose.ymlファイルを定義し、docker-composeコマンドを利用する。
コマンドライン
// docker-compose.ymlのビルド
$ docker-compose build
$ docker-compose up –d
// docker-composeの起動
$ docker-compose start
// docker-composeの一覧表示
$ docker-compose ps
// docker-composeの停止
$ docker-compose stop
// docker-composeの再起動
$ docker-compose restart
// コンテナの削除
$ docker-compose down
// コンテナの削除&イメージの削除
$ docker-compose down --rmi all
// docker-composeログの確認
$ docker-compose logs
8.docker-compose.ymlサンプル&動作確認
hello-world
- 動作確認:実行結果の一部に「Hello from Docker!」が出力される。
docker-compose.yml
version: "2"
services:
app:
image: hello-world
コマンドライン
$ sudo docker-compose up
9. Dockerチュートリアル
10. docker-composeチュートリアル
11. Dockerイメージダウンロードサイト
12. docker login
- dockerコマンド実行時に認証エラーが発生した場合は、
docker login
コマンドを用いて認証をおこなう。この際、メールアドレスではなくてユーザ名を用いてログインする必要があると思われる。 - docker login での Sign in について
Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/latest: unauthorized: incorrect username or password.
13. AWS Cloud9環境でdocker-composeコマンドを使えるようにする
-
AWSアカウントをお持ちでdocker-composeを試したいのでしたら、Windows WSLやMac OS Xでdocker-composeコマンドが利用できる環境を整えるよりもお手軽にdocker-composeコマンドが使えるようになると思います。
-
取得してくるdocker-composeのバージョンやインストールコマンドはリリース一覧から確認できます。
コマンドライン
// 作業フォルダに移動
$ cd ~/environment
// curlコマンドでdocker-composeを取得
$ sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
// docker-composeコマンドに実行権限を付与
$ sudo chmod +x /usr/local/bin/docker-compose
// docker-compose.ymlを作成する
// touch docker-compose.yml で空ファイルを作成して
// vi docker-compose.yml でviエディタでdocker-compose.ymlを編集&保存
// docker-compose upコマンドでdocker-compose.yml定義を実行
$ docker-compose up
14. おわりに
参考になれば幸いです。
2019/02/24 TAKAHIRO NISHIZONO
15. 参考:Docker Compose入門
wordpress
docker-compose.yml
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
コマンドライン
// 起動(バックグラウンド(デタッチド・モード))
$ sudo docker-compose up -d
// WordPressにアクセス
// ブラウザで、http://localhost:8080 を開く。
// 停止
$ sudo docker-compose stop
// 起動
$ sudo docker-compose start
// 停止・終了&削除
$ sudo docker-compose down -v
WEBサーバ(httpd:alpine)
コマンドライン
// ホームディレクトリに移動
$ cd
// プロジェクトディレクトリを作成
$ mkdir docker-httpd
// プロジェクトディレクトリに移動
$ cd docker-httpd
// docker-compose.ymlファイルを作成
$ vi docker-compose.yml
docker-compose.yml
version: '3'
services:
web:
build: .
ports:
- "8080:80"
コマンドライン
// Dockerfileファイルを作成
$ vi Dockerfile
Dockerfile
FROM httpd:alpine
コマンドライン
// ビルド
$ docker-compose build
// プロジェクトを起動(バックグラウンド(デタッチド・モード))
$ sudo docker-compose up -d
// プロセスを確認
$ docker-compose ps
// httpdにアクセス
// ブラウザで、http://<サーバのIPアドレス>:8080 を開く。
// プロジェクトを停止
$ docker-compose stop
// 再び起動
$ docker-compose start
// コンテナ内にログイン(webサービスに対しbashプロセスを起動)
$ docker-compose exec web /bin/bash
// コンテナ内からログアウト
bash-5.0# exit
// コンテナの停止・終了&プロジェクトの削除
$ sudo docker-compose down -v
コマンドライン
// index.htmlファイルの作成
$ echo '<h1>Hello World</h1>' > index.html
// Dockerfileファイルの再編集
$ vi Dockerfile
Dockerfile
FROM httpd:alpine
COPY ./index.html /usr/local/apache2/htdocs/index.html
コマンドライン
// ビルド&プロジェクトを起動(バックグラウンド(デタッチド・モード))
$ docker-compose up -d --build
// プロセスを確認
$ docker-compose ps
// httpdにアクセス
// ブラウザで、http://<サーバのIPアドレス>:8080 を開く。
// コンテナの停止・終了&プロジェクトの削除
$ sudo docker-compose down -v