티스토리 뷰
** 소스코드는 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
- 캠핑
- 필름시뮬레이션
- 전붙이기
- 브런치
- 연대앞
- 예전사진
- XF14
- 논뷰
- SAVOR
- Classic Chrome
- 신촌
- 55mm
- 수지
- m42 135mm
- xf14mm
- 퍼플라떼
- velvia
- m42
- XF23
- XT3
- mf
- 매거진스탠딩
- 황용식
- 손주등장
- m42 55mm
- 23mm
- 보문호수
- 야경
- xt3 #MMCA #국립현대미술관
- XF23mm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |