티스토리 뷰

** 소스코드는 https://ora01000@gitlab.com/ora01000/custom-apache.git 에서 받을 수 있습니다.




centos 베이스 이미지와 yum 을 이용하여 apache 웹서버가 동작하는 커스텀 도커 이미지를 생성해보고자 한다.


베이스 이미지는 기본적으로 OS 이미지이며 필요한 유틸리티가 설치되어 있어도 상관없다.


포스팅에서는 centos 이미지에 net-tools와 httpd 패키지를 설치할 것이다.


rhel 베이스 이미지를 사용하지 않는것은 rhel에서 yum으로 설치할 경우 subscription manager가 활성화되어야 하기 때문이다.



만약 rpm 패키지로 설치를 하겠다면 rhel 이미지를 사용해도 무방하나 설치 rpm 크기만큼 이미지가 커질 것이고 dependency가 복잡할 경우 많은 rpm 패키지를 설치해야 하는 번거로움이 생긴다.




Base Image


로컬 도커 데몬에 centos 이미지를 받아 놓는다(선택). 미리 받아놓지 않을 경우 나중에 Dockerfile을 작성할 때 전체 레지스트리 경로를 주면 된다


$ docker search centos


** 미리 받아놓지 않을 경우 Dockerfile에서 아래와 같이 FROM 절을 작성


FROM [레지스트리경로]/centos:centos6




$ docker pull centos:latest



OS 베이스 이미지는 다른 이미지와는 다르게 레이어가 하나만 존재한다



Dockerfile


아주 간단하게 마치 리눅스에서 yum install 을 사용하여 아파치를 구성하듯이 만들어 보았다.


## making custom apache

## 2017.04.17 by Yun Insu ora01000@time-gate.com



FROM centos:centos6


MAINTAINER ora01000@time-gate.com


RUN yum -y install httpd && \

    yum -y install httpd-tools && \

    yum clean all


expose 80


CMD ["httpd", "-D FOREGROUND"]


주의!

CMD에서 명령어와 인자값을 줄 때 반드시 쌍따옴표(")를 써야함, 단일 따옴표를 쓰면 프로세스가 종료되어 버림


Dockerfile 명령어


FROM : 베이스 이미지

MAINTAINER : 

RUN :

EXPOSE :

CMD :

ENTRYPOINT :

ONBUILD :



build.sh


도커 빌드를 수행하는 스크립트이다.


docker build -t tg/apache:latest .



빌드 수행 결과


일반적인 yum install 할 때와 동일한 결과가 출력된다.


Sending build context to Docker daemon 73.22 kB

Step 1/5 : FROM centos:centos6

 ---> 8315978ceaaa

Step 2/5 : MAINTAINER ora01000@time-gate.com

 ---> Running in 79aa21f93522

 ---> 9fff56fd6e10

Removing intermediate container 79aa21f93522

Step 3/5 : RUN yum -y install httpd &&     yum -y install httpd-tools &&     yum clean all

 ---> Running in 7f264c50c57e

Loaded plugins: fastestmirror, ovl

Setting up Install Process

Resolving Dependencies

--> Running transaction check

---> Package httpd.x86_64 0:2.2.15-59.el6.centos will be installed

--> Processing Dependency: httpd-tools = 2.2.15-59.el6.centos for package: httpd-2.2.15-59.el6.centos.x86_64

--> Processing Dependency: system-logos >= 7.92.1-1 for package: httpd-2.2.15-59.el6.centos.x86_64

--> Processing Dependency: initscripts >= 8.36 for package: httpd-2.2.15-59.el6.centos.x86_64

--> Processing Dependency: apr-util-ldap for package: httpd-2.2.15-59.el6.centos.x86_64

--> Processing Dependency: /etc/mime.types for package: httpd-2.2.15-59.el6.centos.x86_64

--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.2.15-59.el6.centos.x86_64

--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.2.15-59.el6.centos.x86_64

--> Running transaction check

---> Package apr.x86_64 0:1.3.9-5.el6_2 will be installed

---> Package apr-util.x86_64 0:1.3.9-3.el6_0.1 will be installed

---> Package apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 will be installed

---> Package httpd-tools.x86_64 0:2.2.15-59.el6.centos will be installed

---> Package initscripts.x86_64 0:9.03.58-1.el6.centos will be installed

--> Processing Dependency: util-linux-ng >= 2.16 for package: initscripts-9.03.58-1.el6.centos.x86_64

--> Processing Dependency: udev >= 125-1 for package: initscripts-9.03.58-1.el6.centos.x86_64

--> Processing Dependency: sysvinit-tools >= 2.87-6 for package: initscripts-9.03.58-1.el6.centos.x86_64

--> Processing Dependency: plymouth for package: initscripts-9.03.58-1.el6.centos.x86_64

--> Processing Dependency: /sbin/pidof for package: initscripts-9.03.58-1.el6.centos.x86_64

--> Processing Dependency: /sbin/ip for package: initscripts-9.03.58-1.el6.centos.x86_64

--> Processing Dependency: /sbin/blkid for package: initscripts-9.03.58-1.el6.centos.x86_64

--> Processing Dependency: /sbin/arping for package: initscripts-9.03.58-1.el6.centos.x86_64

---> Package mailcap.noarch 0:2.1.31-2.el6 will be installed

---> Package redhat-logos.noarch 0:60.0.14-12.el6.centos will be installed

--> Running transaction check

---> Package iproute.x86_64 0:2.6.32-54.el6 will be installed

--> Processing Dependency: iptables >= 1.4.5 for package: iproute-2.6.32-54.el6.x86_64

--> Processing Dependency: libxtables.so.4()(64bit) for package: iproute-2.6.32-54.el6.x86_64

---> Package iputils.x86_64 0:20071127-24.el6 will be installed

---> Package plymouth.x86_64 0:0.8.3-29.el6.centos will be installed

--> Processing Dependency: plymouth-core-libs = 0.8.3-29.el6.centos for package: plymouth-0.8.3-29.el6.centos.x86_64

--> Processing Dependency: libdrm_radeon.so.1()(64bit) for package: plymouth-0.8.3-29.el6.centos.x86_64

--> Processing Dependency: libdrm_nouveau.so.1()(64bit) for package: plymouth-0.8.3-29.el6.centos.x86_64

--> Processing Dependency: libdrm_intel.so.1()(64bit) for package: plymouth-0.8.3-29.el6.centos.x86_64

--> Processing Dependency: libdrm.so.2()(64bit) for package: plymouth-0.8.3-29.el6.centos.x86_64

---> Package sysvinit-tools.x86_64 0:2.87-6.dsf.el6 will be installed

---> Package udev.x86_64 0:147-2.73.el6_8.2 will be installed

--> Processing Dependency: hwdata for package: udev-147-2.73.el6_8.2.x86_64

---> Package util-linux-ng.x86_64 0:2.17.2-12.28.el6 will be installed

--> Processing Dependency: libuuid = 2.17.2-12.28.el6 for package: util-linux-ng-2.17.2-12.28.el6.x86_64

--> Processing Dependency: libblkid = 2.17.2-12.28.el6 for package: util-linux-ng-2.17.2-12.28.el6.x86_64

--> Running transaction check

---> Package hwdata.noarch 0:0.233-18.1.el6 will be installed

---> Package iptables.x86_64 0:1.4.7-16.el6 will be installed

--> Processing Dependency: policycoreutils for package: iptables-1.4.7-16.el6.x86_64

---> Package libblkid.x86_64 0:2.17.2-12.24.el6 will be updated

---> Package libblkid.x86_64 0:2.17.2-12.28.el6 will be an update

---> Package libdrm.x86_64 0:2.4.65-2.el6 will be installed

--> Processing Dependency: libpciaccess.so.0()(64bit) for package: libdrm-2.4.65-2.el6.x86_64

---> Package libuuid.x86_64 0:2.17.2-12.24.el6 will be updated

---> Package libuuid.x86_64 0:2.17.2-12.28.el6 will be an update

---> Package plymouth-core-libs.x86_64 0:0.8.3-27.el6.centos.1 will be updated

---> Package plymouth-core-libs.x86_64 0:0.8.3-29.el6.centos will be an update

--> Running transaction check

---> Package libpciaccess.x86_64 0:0.13.4-1.el6 will be installed

---> Package policycoreutils.x86_64 0:2.0.83-30.1.el6_8 will be installed

--> Processing Dependency: libdbus-glib-1.so.2()(64bit) for package: policycoreutils-2.0.83-30.1.el6_8.x86_64

--> Running transaction check

---> Package dbus-glib.x86_64 0:0.86-6.el6 will be installed

--> Finished Dependency Resolution


Dependencies Resolved


================================================================================

 Package                 Arch        Version                    Repository

                                                                           Size

================================================================================

Installing:

 httpd                   x86_64      2.2.15-59.el6.centos       base      834 k

Installing for dependencies:

 apr                     x86_64      1.3.9-5.el6_2              base      123 k

 apr-util                x86_64      1.3.9-3.el6_0.1            base       87 k

 apr-util-ldap           x86_64      1.3.9-3.el6_0.1            base       15 k

 dbus-glib               x86_64      0.86-6.el6                 base      170 k

 httpd-tools             x86_64      2.2.15-59.el6.centos       base       79 k

 hwdata                  noarch      0.233-18.1.el6             base      1.3 M

 initscripts             x86_64      9.03.58-1.el6.centos       base      949 k

 iproute                 x86_64      2.6.32-54.el6              base      389 k

 iptables                x86_64      1.4.7-16.el6               base      254 k

 iputils                 x86_64      20071127-24.el6            base      121 k

 libdrm                  x86_64      2.4.65-2.el6               base      136 k

 libpciaccess            x86_64      0.13.4-1.el6               base       24 k

 mailcap                 noarch      2.1.31-2.el6               base       27 k

 plymouth                x86_64      0.8.3-29.el6.centos        base       89 k

 policycoreutils         x86_64      2.0.83-30.1.el6_8          base      663 k

 redhat-logos            noarch      60.0.14-12.el6.centos      base       15 M

 sysvinit-tools          x86_64      2.87-6.dsf.el6             base       60 k

 udev                    x86_64      147-2.73.el6_8.2           base      358 k

 util-linux-ng           x86_64      2.17.2-12.28.el6           base      1.6 M

Updating for dependencies:

 libblkid                x86_64      2.17.2-12.28.el6           base      118 k

 libuuid                 x86_64      2.17.2-12.28.el6           base       71 k

 plymouth-core-libs      x86_64      0.8.3-29.el6.centos        base       88 k


Transaction Summary

================================================================================

Install      20 Package(s)

Upgrade       3 Package(s)


Total download size: 22 M

Downloading Packages:




--------------------------------------------------------------------------------

Total                                           290 kB/s |  22 MB     01:17

warning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY

Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

Importing GPG key 0xC105B9DE:

 Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>

 Package: centos-release-6-8.el6.centos.12.3.x86_64 (@CentOS/6.8)

 From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Running Transaction

  Updating   : libuuid-2.17.2-12.28.el6.x86_64                             1/26

  Installing : apr-1.3.9-5.el6_2.x86_64                                    2/26

  Installing : apr-util-1.3.9-3.el6_0.1.x86_64                             3/26

  Installing : hwdata-0.233-18.1.el6.noarch                                4/26

  Installing : redhat-logos-60.0.14-12.el6.centos.noarch                   5/26

  Installing : sysvinit-tools-2.87-6.dsf.el6.x86_64                        6/26

  Installing : libpciaccess-0.13.4-1.el6.x86_64                            7/26

  Installing : apr-util-ldap-1.3.9-3.el6_0.1.x86_64                        8/26

  Installing : httpd-tools-2.2.15-59.el6.centos.x86_64                     9/26

  Updating   : libblkid-2.17.2-12.28.el6.x86_64                           10/26

  Installing : mailcap-2.1.31-2.el6.noarch                                11/26

  Updating   : plymouth-core-libs-0.8.3-29.el6.centos.x86_64              12/26

  Installing : dbus-glib-0.86-6.el6.x86_64                                13/26

  Installing : policycoreutils-2.0.83-30.1.el6_8.x86_64                   14/26

  Installing : iptables-1.4.7-16.el6.x86_64                               15/26

  Installing : iproute-2.6.32-54.el6.x86_64                               16/26

  Installing : libdrm-2.4.65-2.el6.x86_64                                 17/26

  Installing : iputils-20071127-24.el6.x86_64                             18/26

  Installing : plymouth-0.8.3-29.el6.centos.x86_64                        19/26

  Installing : util-linux-ng-2.17.2-12.28.el6.x86_64                      20/26

install-info: No such file or directory for /usr/share/info/ipc.info

  Installing : initscripts-9.03.58-1.el6.centos.x86_64                    21/26

  Installing : udev-147-2.73.el6_8.2.x86_64                               22/26

  Installing : httpd-2.2.15-59.el6.centos.x86_64                          23/26

  Cleanup    : libblkid-2.17.2-12.24.el6.x86_64                           24/26

  Cleanup    : libuuid-2.17.2-12.24.el6.x86_64                            25/26

  Cleanup    : plymouth-core-libs-0.8.3-27.el6.centos.1.x86_64            26/26

  Verifying  : udev-147-2.73.el6_8.2.x86_64                                1/26

  Verifying  : apr-util-ldap-1.3.9-3.el6_0.1.x86_64                        2/26

  Verifying  : libpciaccess-0.13.4-1.el6.x86_64                            3/26

  Verifying  : plymouth-0.8.3-29.el6.centos.x86_64                         4/26

  Verifying  : iptables-1.4.7-16.el6.x86_64                                5/26

  Verifying  : httpd-tools-2.2.15-59.el6.centos.x86_64                     6/26

  Verifying  : sysvinit-tools-2.87-6.dsf.el6.x86_64                        7/26

  Verifying  : iproute-2.6.32-54.el6.x86_64                                8/26

  Verifying  : dbus-glib-0.86-6.el6.x86_64                                 9/26

  Verifying  : apr-util-1.3.9-3.el6_0.1.x86_64                            10/26

  Verifying  : libuuid-2.17.2-12.28.el6.x86_64                            11/26

  Verifying  : util-linux-ng-2.17.2-12.28.el6.x86_64                      12/26

  Verifying  : plymouth-core-libs-0.8.3-29.el6.centos.x86_64              13/26

  Verifying  : apr-1.3.9-5.el6_2.x86_64                                   14/26

  Verifying  : redhat-logos-60.0.14-12.el6.centos.noarch                  15/26

  Verifying  : iputils-20071127-24.el6.x86_64                             16/26

  Verifying  : initscripts-9.03.58-1.el6.centos.x86_64                    17/26

  Verifying  : mailcap-2.1.31-2.el6.noarch                                18/26

  Verifying  : libblkid-2.17.2-12.28.el6.x86_64                           19/26

  Verifying  : libdrm-2.4.65-2.el6.x86_64                                 20/26

  Verifying  : policycoreutils-2.0.83-30.1.el6_8.x86_64                   21/26

  Verifying  : httpd-2.2.15-59.el6.centos.x86_64                          22/26

  Verifying  : hwdata-0.233-18.1.el6.noarch                               23/26

  Verifying  : libuuid-2.17.2-12.24.el6.x86_64                            24/26

  Verifying  : libblkid-2.17.2-12.24.el6.x86_64                           25/26

  Verifying  : plymouth-core-libs-0.8.3-27.el6.centos.1.x86_64            26/26


Installed:

  httpd.x86_64 0:2.2.15-59.el6.centos


Dependency Installed:

  apr.x86_64 0:1.3.9-5.el6_2

  apr-util.x86_64 0:1.3.9-3.el6_0.1

  apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1

  dbus-glib.x86_64 0:0.86-6.el6

  httpd-tools.x86_64 0:2.2.15-59.el6.centos

  hwdata.noarch 0:0.233-18.1.el6

  initscripts.x86_64 0:9.03.58-1.el6.centos

  iproute.x86_64 0:2.6.32-54.el6

  iptables.x86_64 0:1.4.7-16.el6

  iputils.x86_64 0:20071127-24.el6

  libdrm.x86_64 0:2.4.65-2.el6

  libpciaccess.x86_64 0:0.13.4-1.el6

  mailcap.noarch 0:2.1.31-2.el6

  plymouth.x86_64 0:0.8.3-29.el6.centos

  policycoreutils.x86_64 0:2.0.83-30.1.el6_8

  redhat-logos.noarch 0:60.0.14-12.el6.centos

  sysvinit-tools.x86_64 0:2.87-6.dsf.el6

  udev.x86_64 0:147-2.73.el6_8.2

  util-linux-ng.x86_64 0:2.17.2-12.28.el6


Dependency Updated:

  libblkid.x86_64 0:2.17.2-12.28.el6

  libuuid.x86_64 0:2.17.2-12.28.el6

  plymouth-core-libs.x86_64 0:0.8.3-29.el6.centos


Complete!

Loaded plugins: fastestmirror, ovl

Setting up Install Process

Determining fastest mirrors

 * base: mirror.oasis.onnetcorp.com

 * extras: mirror.oasis.onnetcorp.com

 * updates: mirror.oasis.onnetcorp.com

Package httpd-tools-2.2.15-59.el6.centos.x86_64 already installed and latest version

Nothing to do

Loaded plugins: fastestmirror, ovl

Cleaning repos: base extras updates

Cleaning up Everything

Cleaning up list of fastest mirrors

 ---> c2c79e048a7e

Removing intermediate container 7f264c50c57e

Step 4/5 : EXPOSE 80

 ---> Running in 3a45bde25883

 ---> 148048cf66f8

Removing intermediate container 3a45bde25883

Step 5/5 : CMD ["httpd", "-DFOREGROUND"]

 ---> Running in f0ecc55c330b

 ---> 34bb8f02d7a2

Removing intermediate container f0ecc55c330b

Successfully built 34bb8f02d7a2



run.sh


생성된 이미지는 build.sh에 명시된 것처럼  tg/apache:latest 라는 이름으로 생성된다.


docker run -d --name custom-apache -p 8888:80 tg/apache:latest



옵션

 -d : 데몬으로 구동

 --name : 컨테이너 식별자 지정. 주지 않을 경우 랜덤한 이름으로 생성된다.

 -p : 포트 링크. 앞자리는 로컬 PC, 뒷자리는 컨테이너의 포트이다. 즉, 로컬PC 8888 포트와 컨테이너의 80 포트를 링크한다.





도커 컨테이너 확인


docker ps -a




접속 화면






웹 컨텐츠 등록


1. 도커 빌드시 컨텐츠 복사


웹서버에서 서비스할 정적 컨텐츠를 담은 디렉토리를 생성하고 아래와 같이 Dockerfile을 아래와 같이 수정한다. ./htdocs에는 index.html을 하나 추가하였다. index.html은 타임게이트 홈페이지의 대문페이지를 활용하였다.


Dockerfile_add_contents


## making custom apache

## 2017.04.17 by Yun Insu ora01000@time-gate.com



FROM centos:centos6


MAINTAINER ora01000@time-gate.com


RUN yum -y install httpd && \

    yum -y install httpd-tools && \

    yum clean all


expose 80


## Add web contents


ADD ./htdocs /var/www/html


CMD ["httpd", "-DFOREGROUND"]




build_htdocs.sh


docker build --force-rm -f ./Dockerfile_add_contents -t tg/apache:latest .



실행화면



2. 볼륨 연계


로컬 호스트의 파일시스템을 컨테이너에서 마운트하여 사용할 수 있다. 아래와 같이 docker run 명령에서 -v 옵션으로 마운트한다.


run_volume.sh


docker run -d --name custom-apache -p 8888:80 -v /Users/ora01000/Desktop/00.업무자료/20.솔루션/01.OpenShift/01.DockerFile/custom-apache/htdocs:/var/www/html tg/apache:latest



로컬 파일시스템 마운트


-v [로컬파일시스템경로]:[컨테이너마운트포인트]



컨테이너에 마운트하고자 하는 경로가 이미 존재할 경우 기존의 파일시스템은 그대로 유지하고 새로운 파일시스템을 덮어 쓴다. 만약 덮어쓴 파일시스템을 제거하면 이전 파일시스템에 접근가능하다.


gitlab에 있으니 받아서 직접 테스트 해보기 바란다.





'RedHat OpenShift > 기술문서' 카테고리의 다른 글

[설치] Openshift Version UP (3.3 -> 3.4)  (0) 2017.04.25
[도커] WEB-WAS 프록시 연결  (0) 2017.04.20
[구성] WEB pod/WAS pod 연동  (0) 2017.04.12
[Workshop] openshift 1일차  (0) 2017.04.05
API Gateway 와 3scale  (0) 2017.03.08
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함