この記事の目的
dockerの全体像を簡単な例を作成しつつ理解する
dockerの使い方などはなんとなくわかってきたけど、
いまいち全体像がイメージできない…
という方は見てもらえればと思います
作業概要
今回は次の流れでdockerを実施してみます
1. dockerfileからimage作成(build、pull)
2. imageからコンテナ作成(create)
3. コンテナを動かしてみる
4. コンテナからimage作成(commit)
docker基本図
要素について
dockerfile
公開されているdocker imageをそのまま使用するのではなく、
追加の設定などを行ったdocker imageを作成したいときに使用しますimage
コンテナの立ち上げに必要なファイルをまとめてあります
読み込み専用コンテナ
dockerのイメージを元に作成される仮想環境dockerhub
docker 社が提供しているイメージ管理用クラウドサービス
dockerfileからimage作成
dockerfile作成
今回は次のようなdockerfileを作成しました
FROM ubuntu
RUN apt update
WORKDIR /opt/
CMD ["/bin/bash"]
FROMでベースとなるイメージを指定します
この時指定したイメージをpullしていない場合、pullも同時に行ってくれます
dockerfileに記載されているコマンドは、
FROM,RUN,WORKDIRがdocker buildのタイミングで実行、
CMDがdocker startのタイミングで実行されます
image作成
dockerfileからimageを作成する際にはbuildコマンドを使用します
例と同じコマンドを使用する場合、dockerfileのあるフォルダに移動してからコマンドを実施してください
docker build -t test:1.0 .
コマンドの実施後、docker images で確認すると、新しいimageが作成されています
REPOSITORY TAG IMAGE ID CREATED SIZE
test 1.0 cb7375570b67 2 minutes ago 103MB
imageからコンテナ作成
docker imageからコンテナを作成する際にはcreateコマンドを使用します
docker create -it --name testdayo test:1.0
コマンドの実施後、docker ps -a で確認すると、新しいコンテナが作成されています
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9ecd3887bb6e test:1.0 "/bin/bash" 7 seconds ago Created testdayo
コンテナを動かしてみる
作成したコンテナを起動するにはstartコマンドを使用します
docker start -i testdayo
起動し、bashが使用できるようになっていれば成功です
root@9ecd3887bb6e:/opt#
root@9ecd3887bb6e:/opt# pwd
/opt
コンテナからイメージ作成
今回はapacheのインストールを行った、イメージを作成します
apacheのインストール
まずは事前にインストールされていないことを確認します
apache2 -v
bash: apache2: command not found
apache2のインストールを行います
apt install apache2
コマンド実施後、インストールされたことを確認します
apache2 -v
Server version: Apache/2.4.41 (Ubuntu)
Server built: 2021-07-05T07:16:56
exitでbashから抜けます
コンテナからimage作成
apacheをインストールしたコンテナでコミットを実施します
docker commit testdayo test2
イメージが作成されているか確認します
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test2 1.0 01b3cf3ea958 16 seconds ago 226MB
test 1.0 2a7093e5c996 8 days ago 103MB
apacheの起動確認
コンテナを作成し、動かします
docker create -it -p 8080:80 --name testdayo2 test2:1.0
docker start -i testdayo2
apacheを起動し、ブラウザからlocalhost:8080に接続します
/etc/init.d/apache2 start
/etc/init.d/apache2 status
* apache2 is running
画像のような画面がでれば起動ができています
参考 docker docks
終わり
dockerのおおまかな流れが理解したいと思いまとめてみました
間違っている部分があれば教えてください