Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- NAT
- ripng
- Inter VLAN
- 헤더
- OSI 7 layer
- Etherchannel
- tunneling
- 라우터
- eigrpv2
- ospfv3
- eigrp
- 스위치
- GLBP
- OSPF
- Redistribute
- ipv6
- stp
- CKA
- DHCP
- rip
- 장비
- Chrony
- 명령어
- vrrp
- Vlan
- crontab
- ACL
Archives
- Today
- Total
Net Eng
Docker 이미지 생성 본문
■ Docker CMD를 사용하여 이미지 생성
- docker commit CMD (Container → Image)
→ 용도 : 명령어를 사용한 이미지 제작
# docker commit CONTAINER IMAGE
# docker commit -a "Author' -m 'Message' CONTAINER IMAGE
[참고] 도커 이미지를 만드는 과정
(ㄱ) 베이스 이미지 다운로드
# docker pull ubuntu:18.04
(ㄴ) 컨테이너 기동 & 접속
# docker run -it --name myweb ubuntu:18.04
(ㄷ) 선수 패키지 설치 & 소스 코드 빌드
# apt-get update
# apt-get install default-jdk git
# git clone https://github.com/ID/REPO.git
.....
# ./gradlew build
(ㄹ) 스크립트 생성
# vi /start.sh
-------------------------------------
#!/bin/bash
jar -jar /home/.../login-service.jar
-------------------------------------
# chmod +x /startup.sh
# exit
(ㅁ) 컨테이너를 이미지로 생성
# docker commit -a 'Author' -m 'Message' meweb myweb-image
(ㅂ) 컨테이너 기동 & 확인
# docker run -d --name mynewweb -p 8080:8080 myweb-image
■ Docker export/import CMD
(용도) 컨테이너 분석
□ Docker export CMD (Container → Container.tar)
# docker export myweb > myweb.tar
# docker export myweb -o myweb.tar
# docker export myweb > myweb.tar
# tar xvf myweb.tar -C /app
# docker export myweb | tar xf - -C /app
□ Docker import CMD (Container.tar → Image)
# docker import myweb.tar myweb-image
# docker import http://docker2/myweb.tar myweb-image
$ sudo tar -c . | docker import - myweb-image
[참고] Docker export/import
# docker export myweb | tar xf - -C /myweb
# vi /myweb/* (수정)
# cd /myweb ; tar -c . | docker import - myweb-image
■ Docker save/load CMD
□ Docker save cmd
# docker save -o IMAGE.tar IMAGE
□ Docker load cmd
# docker load -i IMAGE.tar
■ Dockerfile를 사용하여 이미지 생성
# man dockerfile
□ Docker build CMD
# docker build -t app .
# docker build -t app --no-cache .
# docker build -t app -f Dockerfile2 .
# docker build -t app -f Dockerfile2 /root/docker
# docker build -t - . < docker.tar.gz
# cat docker.tar.gz | docker build -t - .
□ Dockerfile
-------------------------------------------------------------------
FROM busybox
FROM busybox:1.0
FROM busybox:1.0@....
-------------------------------------------------------------------
RUN apt-get -y install git
RUN ["apt-get", "-y", "install", "git"]
-------------------------------------------------------------------
CMD nginx -g 'daemon off;'
CMD ["nginx", "-g", "daemon off;"]
-------------------------------------------------------------------
ENTRYPOINT nginx -g 'daemon off;'
ENTRYPOINT ["nginx", "-g", "daemon off;"]
[참고] CMD vs ENTRYPOINT
[참고] ENTRYPOINT + CMD
ENTRYPOINT ["TOP"]
CMD ["-d", "10"]
-------------------------------------------------------------------
WORKDIR /first/second/third
ENV WORKPATH /first/second
WORKDIR $WORKDIR
-------------------------------------------------------------------
ENV ABC=hello
ENV ABC=hello DEF=world
ENV GIH=$ABC
-------------------------------------------------------------------
USER user01
USER user01:user01
-------------------------------------------------------------------
COPY index.html /var/www/html
COPY ./html/ /var/www/html/
ADD src.tar /var/www/html
ADD http://internet/src.tar.gz /var/www/html
ADD home* /mydir/
-------------------------------------------------------------------
LABEL title="webapp"
LABEL author="Mr, Baik"
LABEL version="2.0"
-------------------------------------------------------------------
EXPOSE 80 # => EXPOSE 80/tcp
EXPOSE 80/tcp
EXPOSE 21 20
EXPOSE 53/udp
-------------------------------------------------------------------
VOLUME /var/log
VOLUME /var/log /was
VOLUME ["/var/log"]
VOLUME ["var/log", "/was"]
-------------------------------------------------------------------
■ 모범 사례 (Best Practice)
- 멀티스테이지 빌드
- Base Image 선택 (alpine, busybox)
- Image Layer 줄이기
- RUN apt-get update && \
apt-get -y install apache2 PKG2 PKG2 \
→ Dockerfile 내에서 자주 변경 되는 내용 (RUN …)이 있다면 뒤에 배치한다.
'Cloud > Docker' 카테고리의 다른 글
Docker 컴포즈 (0) | 2024.06.18 |
---|---|
Docker 리소스 제한 (0) | 2024.06.18 |
Docker 컨테이너 운용 (0) | 2024.06.18 |
Docker 네트워크 관리 (0) | 2024.06.18 |
Docker 볼륨 관리 (0) | 2024.06.18 |