この記事の目的
dockerの全体像を簡単な例を作成しつつ理解する
dockerの使い方などはなんとなくわかってきたけど、
いまいち全体像がイメージできない…
という方は見てもらえればと思います
作業概要
今回は次の流れでdockerを実施してみます
- dockerfileからimage作成(build、pull)
- imageからコンテナ作成(create)
- コンテナを動かしてみる
- コンテナから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のおおまかな流れが理解したいと思いまとめてみました
間違っている部分があれば教えてください