티스토리 뷰
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 |