はじめに
以下のような条件をみたしておくと楽だけど、経験なくても問題なし
- 前提条件
- 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のサーチ検索(実例あり)



