티스토리 뷰

 

 

 

EXPOSE

▶ Docker 이미지에서 포트를 알려주는 역할

>> 포트를 지정하는 건 아니다

FROM alpine
# MAINTAINTER kildong<kildong@naver.com>
LABEL arthor="kildong<kildong@naver.com>"
LABEL version="alpine:httpd"
LABEL description="docker file test only"
EXPOSE 8080
RUN apk update
RUN apk add apache2
CMD /usr/sbin/httpd -f /etc/apache2/httpd.conf -DFOREGROUND

 

더보기

[vagrant@docker1 work]$ docker build -t alpine:httpd .

[vagrant@docker1 work]$ docker run -d alpine:httpd

▷ 보이는 것은 8080 / tcp 라고 나오지만, 8080포트로는 실행이 안된다

[vagrant@docker1 work]$ docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                     NAMES
edf51b6c19e5   alpine:httpd   "/bin/sh -c '/usr/sb…"   5 seconds ago   Up 4 seconds   8080/tcp                                  jovial_zhukovsky

 

 

◎ 기본값 포트는 아닐 때에 사용자가 알려주게 하기 위해서 쓰는 것이 EXPOSE

>> 포트 바꾸는 명령어가 필요하다

FROM alpine
# MAINTAINTER kildong<kildong@naver.com>
LABEL arthor="kildong<kildong@naver.com>"
LABEL version="alpine:httpd"
LABEL description="docker file test only"
EXPOSE 8080
RUN apk update
RUN apk add apache2
RUN touch 1.txt
CMD /usr/sbin/httpd -f /etc/apache2/httpd.conf -DFOREGROUND

 

 

 

▶ 실행하면서 바로 컨테이너로 들어가는 방법

반드시 포그라운드 선택

# RUN touch 1.txt 를 생성할 때에 경로 설정 없을시, 만들어지는 위치

# - - rm 삭제하라는 의미이다

# alpine 은 bash 가 없다 ( bash 는 크기가 크고 / sh 는 크기가 작다 )

[vagrant@docker1 work]$ docker run --rm -it alpine:httpd /bin/sh
/ # ls
1.txt  dev    home   media  opt    root   sbin   sys    usr
bin    etc    lib    mnt    proc   run    srv    tmp    var

>> root 밑에 1.txt 가 생성된다

 

 

 

WORKDIR

 

■ WORKDIR 은 모든 작업이 / tmp 에서 실행된다

>> 다시 바뀌기 전까지 / tmp 에서 실행

FROM alpine
# MAINTAINTER kildong<kildong@naver.com>
LABEL arthor="kildong<kildong@naver.com>"
LABEL version="alpine:httpd"
LABEL description="docker file test only"
EXPOSE 8080
RUN apk update
RUN apk add apache2
WORKDIR /tmp
RUN touch 1.txt
CMD /usr/sbin/httpd -f /etc/apache2/httpd.conf -DFOREGROUND

 

● CMD 는 root 권한으로 만들어 진다

>> USER 권한으로 touch {1..2} .txt 가 만들어진다

FROM alpine
# MAINTAINTER kildong<kildong@naver.com>
LABEL arthor="kildong<kildong@naver.com>"
LABEL version="alpine:httpd"
LABEL description="docker file test only"
EXPOSE 8080
RUN apk update
RUN apk add apache2
RUN useradd -m admin
WORKDIR /tmp
USER admin
RUN touch 1.txt
RUN touch 2.txt
CMD /usr/sbin/httpd -f /etc/apache2/httpd.conf -DFOREGROUND

 

▩ 하지만 alpine 에는 useradd 가 없으므로 실행이 안된다

FROM centos:7
RUN useradd -m admin
WORKDIR /tmp
USER admin
RUN touch 1.txt
RUN touch 2.txt
[vagrant@docker1 work]$ docker build -t newimg -f cenfile .

 

▶ 만들어진 소유주가 root 이다

▷ 로그인시, 계정은 admin

[vagrant@docker1 work]$ docker run --rm -it newimg /bin/bash

[admin@59874f63d40b tmp]$ ll
total 4
-rw-r--r--. 1 admin admin   0 Mar  5 06:01 1.txt
-rw-r--r--. 1 admin admin   0 Mar  5 06:01 2.txt
-rwx------. 1 root  root  836 Nov 13  2020 ks-script-DrRL8A
-rw-------. 1 root  root    0 Nov 13  2020 yum.log

 

 

 

○ 간단한 실습

 docker run -e target=google.com 컨테이너 이름

ping google.com 3번만 진행

[ ping -c3 google.com ]
FROM alpine ENTRYPOINT ping -c3 $target

 

▷ 기본값은 google.com / 변수 넣기도 가능하도록

FROM alpine
ENV target=google.com
ENTRYPOINT ping -c3 $target
CMD target

 

'Docker 와 Container' 카테고리의 다른 글

Dockerfile - ARG / COPY / VOLUME  (0) 2024.03.05
Docker image 가 만들어지는 과정  (0) 2024.03.05
Dockerfile - ENV / LABEL  (0) 2024.03.05
Dockerfile - ENTRYPOINT / CMD  (0) 2024.03.05
Docker container >> image / tar 만들기  (0) 2024.03.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
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
글 보관함