はじめに
Docker勉強メモ
- Docker勉強メモ① DockerインストールからHelloWorld
- Docker勉強メモ② Dockerイメージ作ってみる
- Docker勉強メモ③ Dockerfileを作ってDockerイメージ作成からコンテナ起動までやってみる ←ココ
- Docker勉強メモ④ コンテナ間通信
- Docker勉強メモ⑤ ネットワーク通信
やること
Dockerファイルを作ってDockerイメージを作成する
参考
Docker入門(第四回)~Dockerfileについて~
手順概要
centosのDockerイメージをDockerHubから取得
tomcatのtar.gzをコピーしたcentosDockeイメージを作成( -> tomcat:7)
tomcat:7 を使いDockerイメージを作るDockerfileを作る
DockerfileでDockerイメージをビルド
ビルドしたDokcerイメージでコンテナ起動
おさらい
centos7 (ami-045f38c93733dd48d)にDockerインストール
ホスト
$ sudo yum-config-manager --enable Extra
$ sudo yum install container-selinux
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ ll /etc/yum.repos.d/
$ sudo yum install docker-ce
$ sudo yum list installed | grep docker-ce
$ sudo systemctl start docker
$ sudo systemctl status docker
centosのDockerイメージをpull
ホスト
$ docker pull centos:7
$ mkdir -p /root/tomcat-container/logs
$ docker run -it -d -p 18080:8080 -v /root/tomcat-container/logs:/share/logs --name tomcat centos:7
1.準備
1-1.Dockerファイルを作る
Dockerfileを作成する
nanoを使いたのでインストール
yum install nano
Dockerfileを作る
mkdir cent-tomcat
cd cent-tomcat
touch Dockerfile
sudo nano Dockerfile
Dockerfileの中身
Dockerfile
FROM centos:7
RUN yum install -y java
ADD files/apache-tomcat-9.0.31.tar.gz /opt/
CMD [ "/opt/apache-tomcat-9.0.31/bin/catalina.sh", "run" ]
1-2.apacheファイルを用意する
Dockerファイルと同じ階層に files
フォルダを作成し、apacheファイルを格納する
ファイル構造はこーなる
ホスト
[centos@ip-172-31-0-62 cent-tomcat]$ tree
.
├── Dockerfile
└── files
└── apache-tomcat-9.0.31.tar.gz
2.Dockerファイルを私用して、Dockerイメージ作成
$ cd <Dockerfileが存在するディレクトリ>
$ docker build -t tomcat:1 .
$ docker images
Dockerイメージが作成されていれば成功
[centos@ip-172-31-5-50 cent-tomact]$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 1 1a24f3cd25e8 17 seconds ago 502MB
centos 7 5e35e350aded 3 months ago 203MB
ベースにしたcentosのイメージも作成された
※余談※
ベースにしたcentosのDockerイメージだけ削除はできない。依存関係があるんだ、へぇー
[centos@ip-172-31-5-50 cent-tomact]$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 1 44f9a4e385f1 About a minute ago 502MB
centos 7 5e35e350aded 3 months ago 203MB
[centos@ip-172-31-5-50 cent-tomact]$ sudo docker rmi 5e35e350aded
Error response from daemon: conflict: unable to delete 5e35e350aded (cannot be forced) - image has dependent child images
コンテナ起動する
ホスト
$ docker run -it -d --name tomcat-1 -p 18083:8080 tomcat:1
ホスト
[centos@ip-172-31-0-62 cent-tomcat]$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e9814858bec8 tomcat:1 "/opt/apache-tomcat-…" 7 seconds ago Up 6 seconds 0.0.0.0:18083->8080/tcp tomcat-1
94d9fd8f516a centos:7 "/bin/bash" 2 hours ago Exited (137) About an hour ago tomcat
ホスト
$ docker exec -it tomat-1 bash
ホストで以下のサイトが開けば成功