はじめに
以下のような条件をみたしておくと楽だけど、経験なくても問題なし
- 前提条件
- Linuxを触ったことがある
- WSL2を導入済み
Dockerを使えるようになると、仮想マシンと違い軽く実行環境を構築することが可能になる
Dockerの導入
Dockerとはなんぞや
かるーく仮想技術について説明
- 仮想技術には3種類存在する
ホスト型
ハイパーバイザー型
コンテナ型
Dockerはコンテナ型
を利用していることだけは覚えておく
- コンテナ型を使うメリット
- 素早く仮想環境を作成、配布、実行できる
- ほかのプラットフォームと同じ環境を構築しやすい
- 動作が軽い
Linuxコマンドをがっつり使うため、コマンドを覚えていこう!
Dockerのインストール
Dockerの公式サイトからダウンロードできる
公式サイト
また、Windowsの場合、以下条件を満たせばDocker for Windowsをインストールするだけ!
- 64bit
- Windows 7以降
- IntelならVT-x, AMDならAMD-vがCPUでサポートされている
- Virtualizationを有効にしている
Docker toolboxが使えるようになるはずなので、確認しておこう
なお、docker
コマンドはDockerが起動していないと使えないため要注意!!
重要!一部企業ではDocker Desktopは使用できないため、自分でインストールすること! > 詳しくはこちら
事前準備
- まずはDockerとWSLを用意
# dockerのバージョン確認
$ docker --version
$ docker version
また、以下コマンドにて動作状況を確認できる
# dockerの動作状況の確認
$ docker info
Dockerを動かしてみよう
Docker公式のイメージの取得
search
コマンドでDockerの公式が提供しているイメージを取得できる
- Docker hub からイメージを取得できる(公式サイト)
ためしにnginxイメージを検索する
# nginxの検索
$ docker search nginx
検索したらpull
コマンドでイメージを取得する
# イメージの取得
$ docker pull nginx
イメージを取得出来たら表示してみよう
images
コマンドで表示できる
# 取得したイメージの表示
$ docker images
コンテナを生成して起動してみよう
nginxのログを出力するためのファイルをmkdir
コマンドでホスト側に作成する
# ファイルの作成
$ mkdir -p nginx/log
作成したら、コンテナの生成と起動を同時に行うrun
コマンドを使う
$ docker run -d -p 80:80 -v $(pwd)/nginx/log:/var/log/nginx --name webserver nginx
起動が出来たら(http://localhost:80) にアクセスして確認してみよう
>オプション解説
-
-d
はバックグラウンド実行を指定 -
-p 80:80
はホスト側の80番ポートをコンテナ側の80番ポートに転送するように指定- p 8080:80 と指定すれば(http://localhost:8080)でアクセスできるようになる
-
-v
で$(pwd)/nginx/log
をコンテナのディレクトリ/var/log/nginx
としてマウント- なお(pwd)はUnixのシェル機能でカレントディレクトリに置き換えられる
-
--name webserver
は生成するコンテナに名前を付ける -
nginx
は生成に利用するイメージの名前 -
本当は最後(イメージ名の後)に実行するコマンドを指定する点に注意!
- nginxだけ特殊だということを知っておこう
起動して、確認できたならcat
コマンドでログを確認してみよう
cat nginx/log/access.log
- なお、コンテナを削除した時にコンテナ内のファイルも消されてしまう点に注意
-
-v
で保存場所を避難しておけばなんとかなるかも・・・?
-
コンテナ内で作業してみる
exec
コマンドでコンテナ内でコマンド実行できる
# コンテナのコマンドラインに移動
$ docker exec -it webserver /bin/bash
>オプション解説
-
exec
は指定したコンテナで指定したコマンドを実行- このコマンドで接続した場合、
eixt
してもコンテナは起動したままであることに注意!
- このコマンドで接続した場合、
-
-it
はコンテナ側のコマンドの入出力を手元のターミナルに接続 -
webserver
はコンテナ名 -
/bin/bash
が実行するコマンド
一度exit
し、コマンドラインから抜ける
ps
コマンドで実行中のコンテナを確認できる
# 実行中のコンテナ確認
$ docker ps
コンテナを停止する
stop
コマンドを使って停止させる
# コンテナを停止させる
$ docker stop webserver
停止したらps
コマンドで確認してみよう
またps -a
で停止中のコンテナ含めてすべて表示可能
コンテナをイメージ化
commit
コマンドを使ってイメージ化することが可能
※ただし、イメージ化には命名規約が存在するため注意!
<Docker Hubのユーザ名>/イメージ名:[タグ名]
- なお
push
するとDocker hubに行きます- 今回はしない
# Docker imageの作成
$ docker commit webserver webserver:0.0
作成されたイメージはimages
コマンドで確認可能
# イメージの確認
$ docker images
ただし-v
で作成したボリュームはcommit
でのイメージ化対象外である点に注意!
コンテナを起動する
run
コマンドでは生成と起動を同時に行うため、新しく作られてしまう
start
コマンドで既存のコンテナを起動させる
# コンテナの起動
$ docker start webserver
起動できたかどうかはps
コマンドで確認する
コンテナの削除
削除する前にコンテナを停止してあげよう(いきなり削除も可能)
stop
コマンドで停止可能
# コンテナの停止
$ docker stop webserver
rm
コマンドでコンテナを削除できる
# コンテナの削除
$ docker rm webserver
ps -a
コマンドで削除されたか確認する
イメージの削除
rmi
コマンドでイメージの削除が可能
削除の際にタグを指定しなければならないが、省略した場合latest
と同じになる
$ docker rmi webserver:0.0
$ docker rmi nginx
削除されたらimages
コマンドで確認
参考サイト
-
Docker公式リファレンス
-
Dockerのサーチ検索(実例あり)