LoginSignup
2
1

More than 3 years have passed since last update.

Docker勉強メモ③ Dockerfileを作ってDockerイメージ作成からコンテナ起動までやってみる

Last updated at Posted at 2020-03-23

はじめに

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

ホストで以下のサイトが開けば成功

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1