티스토리 뷰

# 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
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함