DockerFileを使用してDockerImageを作成

最新版のCentos7のimageを取得して、apacheをプリインストールしたカスタムイメージを作成

https://hub.docker.com/_/centos/

$ sudo docker pull centos:centos7.5.1804
$ sudo docker images | grep centos7.5.1804
centos centos7.5.1804 49f7960eb7e4 8 weeks ago 200MB

$ sudo mkdir /root/httpd
$ cd /root/httpd
$ sudo vi Dockerfile
以下入力

FROM centos:centos7.5.1804
MAINTAINER test-admin
ENV container docker
RUN yum -y update
RUN yum -y install httpd
RUN yum -y install iproute
RUN echo “Apache Installed” >> /var/www/html/index.html
RUN systemctl enable httpd
EXPOSE 80

Dockerfileからイメージを作成
$ sudo docker build -f ./Dockerfile -t centos:c75httpd01 –no-cache=true .
※「–no-cache」はビルド時にキャッシュを無効化したいときに指定するデフォルトはfalse

イメージが作成されたことを確認
$ sudo docker images | grep c75httpd01
centos c75httpd01 c2144f762c85 23 seconds ago 538MB

コンテナを起動
$ sudo docker run -d –privileged –name web001 -i -t -p 80:80 centos:c75httpd01 /sbin/init
※runのオプションは以下の通り
-d      バックグラウンドで起動する
–privileged  デフォルトではDockerコンテナ内のリソース操作ができないため、権限付与する
-p      外部からアクセスする際のポートを指定する
/sbin/init    コンテナ内にある/sbin/initを実行する(/sbin/initはsystemdのリンク)

起動されたことを確認
$ sudo docker ps -a | grep web001
1f8271ee05b1 centos:c75httpd01 “/sbin/init” 24 seconds ago Up 23 seconds 0.0.0.0:80->80/tcp web001

コンテナ内にログイン
$ sudo docker exec -i -t web001 /bin/bash
1f8271ee05b1 centos:c75httpd01 “/sbin/init” 24 seconds ago Up 23 seconds 0.0.0.0:80->80/tcp web001
※「exec -it」でコンテナ内に/bin/bashでログインできる

コンテナ内の設定を確認
#systemctl status httpd | grep active
Active: active (running) since Fri 2018-08-03 15:16:20 UTC; 9min ago

# ip a | grep inet
inet 127.0.0.1/8 scope host lo
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0

ホスト側から172.17.0.2に対してアクセスする
$curl http://172.17.0.2/index.html
Apache Installed

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です