티스토리 뷰
# CMD 컨테이너 올라갈 때 실행하는 명령어
# 비대화식으로 하지 않으면 - y 부분에서 멈출 수도 있다
FROM ubuntu:18.04
RUN apt-get update
RUN apt-get install nginx -y
CMD ["nginx","-g","daemon off;"]
[vagrant@docker1 work]$ docker build -t dockimg:1.0 -f dockerfile .
▶ 이미지 생성
[vagrant@docker1 work]$ docker image ls dockimg
REPOSITORY TAG IMAGE ID CREATED SIZE
dockimg 1.0 ad047a14f706 11 seconds ago 169MB
▶ 포트 포워딩으로 컨테이너 올린다
[vagrant@docker1 work]$ docker run -d --name dock1 -p 8080:80 dockimg:1.0
[vagrant@docker1 work]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7b0d68ccda3c dockimg:1.0 "nginx -g 'daemon of…" 3 seconds ago Up 2 seconds 0.0.0.0:8080->80/tcp, :::8080->80/tcp dock1
▷ 자동으로 포트번호 가능
[vagrant@docker1 work]$ docker run -d -p :80 dockimg:1.0
# 중요한건 접속할 때에 Host IP : 포트번호 이다
최대한 작게 image 만들기
◎ alpine 은 작은 linux
>> 가볍기 때문에 효율적
>> alpine 은 셀을 실행할 뿐인 docker 이미지 이므로,
>> 셀 스크립트가 존재하지 않는다
>>> 따라서 /usr/sbin/httpd -f /etc/apache2/httpd.conf 로 실행한다
cmd 뒤에는 shell-script.sh 를 입력하는데,
shell-script.sh 는
useradd user1
httpd -D FOREGROUND
mysqld 등등 실행한다
▷ dockerfile 생성
FROM alpine
RUN apk update
RUN apk add apache2
CMD /usr/sbin/httpd -f /etc/apache2/httpd.conf -DFOREGROUND
# alpine 은 apk 로 패키지 다운로드한다
# tag 에는 숫자가 아니라 문자도 온다
[vagrant@docker1 work]$ docker build -t alpine:httpd .
>> 컨테이너 올리기
[vagrant@docker1 work]$ docker run -d --name alpine-httpd -p :80 alpine:httpd
[vagrant@docker1 work]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bfbe9282e944 alpine:httpd "/bin/sh -c '/usr/sb…" 2 seconds ago Up 1 second 0.0.0.0:32769->80/tcp, :::32769->80/tcp alpine-httpd
변수 설정
▶ ENV 는 변수가 와야된다
FROM alpine
ENV var1=100
ENV var2=200
CMD echo "var1: $var1 var2: $var2 var3: $var3"
[vagrant@docker1 work]$ docker build -t test2 -f test2 .
▷ $ var 3 은 없지만, 오류없이 출력만 안된다
[vagrant@docker1 work]$ docker run test2
var1: 100 var2: 200 var3:
▷ - - env 로 변수 넣기 가능하다
[vagrant@docker1 work]$ docker run --env var3=300 test2
var1: 100 var2: 200 var3: 300
▷ 커맨드 변수가 더 우선순위를 가진다
>> var1=100 인데 커맨드의 400 이 출력된다
[vagrant@docker1 work]$ docker run --env var1=400 test2
var1: 400 var2: 200 var3:
▶ LABEL 사용
>> LABEL 다음은 Key = Value 형식만 지켜주면 된다
FROM alpine
# MAINTAINTER kildong<kildong@naver.com>
LABEL arthor="kildong<kildong@naver.com>"
LABEL version="alpine:httpd"
LABEL description="docker file test only"
RUN apk update
RUN apk add apache2
CMD /usr/sbin/httpd -f /etc/apache2/httpd.conf -DFOREGROUND
▷ 컨테이너 실행했을 때에 meta data 로 LABEL 이 안보인다
[vagrant@docker1 work]$ docker run -d --name myapache -p :80 alpine:httpd
[vagrant@docker1 work]$ docker container inspect alpine-httpd | grep kildong
[vagrant@docker1 work]$
▷ image 의 meta data 로는 LABEL 이 확인 가능하다
[vagrant@docker1 work]$ docker image inspect alpine:httpd |grep kildong
"arthor": "kildong<kildong@naver.com>",
'Docker 와 Container' 카테고리의 다른 글
Docker image 가 만들어지는 과정 (0) | 2024.03.05 |
---|---|
Dockerfile - EXPOSE / WORKDIR (0) | 2024.03.05 |
Dockerfile - ENTRYPOINT / CMD (0) | 2024.03.05 |
Docker container >> image / tar 만들기 (0) | 2024.03.05 |
Docker Network (0) | 2024.03.04 |