DockerFile 을 이용하여 나만의 Docker Image 만들기
DockerFile Build 사용법(커뮤니티 블로그 만들기)
2022년 NHN Cloud 무료 교육일정 : https://doc.skill.or.kr/2022-NHN-Cloud-Education
2022년 NHN Cloud 행사/프로모션 정보 공유 : https://doc.skill.or.kr/2022-NHN-Cloud-Event-Promotion
1. 먼저 알아 두기
1.1 DockerFile 이란?
DockerFile 은 코드의 형태로 인프라를 구성하는 방법을 텍스트 형식으로 저장해 놓은 파일이며 docker build 를 사용하여 자신만의 이미지를 만들 수 있다.
1.2 Docker Build 란?
DockerFile 및 컨텍스트로부터 이미지를 빌드하는 Docker 명령
1.3 Docker-Compose 란?
Compose는 멀티 컨테이너 도커 애플리케이션을 정의하고 실행하는 도구이다. YAML 파일을 사용하여 애플리케이션의 서비스를 구성하며 하나의 명령을 가지고 모든 컨테이너의 생성 및 시작 프로세스를 수행한다.
2. DockerFile을 이용하여 만들어 보자!!!
2.1 서비스 설계 구성
DataBase Server
WEB/WAS Service
Docker Hub Base Image
mariadb:10.4.18
ubuntu:20.04
OS
Ubuntu 20.04.2 LTS
Ubuntu 20.04.2 LTS
Service
Mariadb 10.4.18
Nginx 1.18.0
Tomcat 9.0.45
Developer
OpenJDK 1.8.x
Maven 3.8.1
NodeJS 14.16.1
Dev Source
USE Github
Service Port
3306
80, 8080
2.2 아키텍처 물리 설계 구성도
대규모 3-Tier 구성 : 로드 발란스를 이용하여 3-Tier 구성을 확장하는 구성 방식. 웹 시스템의 사용자가 많은 엔터프라이즈 어플리케이션일 경우 대부분 대규모 3-Tier 구성을 이용하고 있다.
2.3 Database(Mariadb:10.4.18) Docker Image 만들기
소스 파일은 Github 에서 참고 하시기 바랍니다.
2.4 Nginx & Tomcat(ubuntu:20.04) Docker Image 만들기
소스 파일은 Github 에서 참고 하시기 바랍니다.
2.5 DockerFile Buil 하기 후 Docker Hub 에 업로드 하기
Step1. docker loign
Step2. 작성 한 DockerFile 에서 빌드 하기
• docker build -t tomcat_mariadb:mariadb .
• docker images ## 로컬에 저장된 Docker Images 확인
Step3. 로컬에 만든 이미지 실행 및 확인
• docker run –d tomcat_mariadb:mariadb
Step4. Docker Hub 이미지 업로드
• docker tag tomcat_mariadb:mariadb bchwang/tomcat_mariadb:mariadb
• docker push bchwang/tomcat_mariadb:mariadb
Step5. Docker Hub 에 등록된 이미지 확인
• Docker Hub 에 개인 개정으로 로그인 후 Docker Image 및 Tag 확인
2.6 Docker-Compose 를 이용하여 실행 하기
2.6.1 Local 에서 Build Image 를 이용하여 docker-compose.yml 만들기
소스 파일은 Github 에서 참고 하시기 바랍니다.
2.6.2 Docker Hub Image 를 이용하여 docker-compose.yml 만들기
3. NHN Cloud 를 이용한 Kubernetes 서비스를 구축 방법
3.1 커뮤니티 블로그 서비스 Yaml 설정 하기
NHN Cloud 를 이용하여 커뮤니티 블로그 서비스를 Kubernetes 로 구축 하는 방법을 소개해 드립니다.
아래의 내용을 따라 하시거나 GitHub 의 소스 파일을 참고 시기 바랍니다.
3.2 NameSpace Yaml
3.3 Mariadb Yaml
3.4. Mariadb Service Yaml
3.5 Nginx & Tomcat Service Yaml
3.6 Nginx & Tomcat Yaml
아래의 내용 중 hostAliases 의 ip 정보가 mariadb 의 IP 정보를 입력 하여야 함.
Mariadb 를 실행 한 후에
kuberctl get pod -n project
로 나온 IP 값을 입력 하면 됨.
소스 파일은 Github 에서 참고 하시기 바랍니다.
3.7 커뮤니티 블로그 서비스 Yaml 실행 하기
3.8 공인 IP로 접속 한 화면
4. GitHub 정보 및 커뮤니티 블로그 소개
4.1 개발 환경
Ubuntu/20.x (OS)
mariadb/10.4.18 (DB Service)
tomcat/9.0.45 (WAS Service)
nginx/1.18.0 (WEB Service)
OpenJDK/1.8.x
Maven/3.8.1
NodeJS/14.6.1
4.2 NHN Cloud Kubernetes & Docker 사용해 보기
A. DockerFile 을 이용하여 Docker Images 만들기(Tomcat, Mariadb)
Dockerfile 을 이용하여 Mariadb 이미지 만들기
Dockerfile Build 방법(mariadb Image)
Dockerfile 을 이용하여 nginx_tomcat 이미지 만들기
Dockerfile Build 하는 방법(nginx_tomcat Image)
Docker Hub push 하는 방법
B. Build 된 Tomcat, Mariadb Images 실행 하기
docker images 확인 하기
Local Image 로 실행 하기
docker Hub Image 로 실행 하기
C. Docker-Compose 사용하기
Local Images 로 실행 하기
Docker Hub 에 Push 한 Images 로 실행 하기
D. NHN Cloud Kubernetes 로 사용하기
NHN Cloud 회원 가입 및 Console 로그인 : http://toast.com
NHN Cloud Console 에 Kubernetes Manager Instance 생성
NHN Cloud Console 에서 Kubernetes 생성
NHN Cloud Console 에서 SSH 접속 설정
NHN Cloud 에서 생성된 Instance(Kube-manager) 접속 방법 및 Kubernetes 연결 방법
NHN Cloud 에서 Kubernetes 를 이용하여 서비스 사용하기
TIPs.1 DockerFile 기본 형식 자세히 알아 보기
TIPs 1.1 DockerFile 기본 형식
Command
Description
FROM
베이스 이미지 지정
RUN
명령어 실행
CMD
데몬 실행
LABEL
라벨 설정
EXPOSE
포트 설정
ENV
환경 변수 설정
ADD
파일 추가
COPY
파일 복사
USER
사용자 설정
WORKDIR
작업 디렉토리 지정
VOLUME
볼륨 마운트
ENTRYPOINT
데몬 실행
ONBUILD
빌드 후 실행 명
TIPs 1.2 Docker Build 기본 형식
Name, Shorthand
Default
Description
--add-host
Add a custom host-to-IP mapping (host:ip)
--build-arg
Set build-time variables
--cache-from
Images to consider as cache sources
--cgroup-parent
Optional parent cgroup for the container
--compress
Compress the build context using gzip
--cpu-period
Limit the CPU CFS (Completely Fair Scheduler) period
--cpu-quota
Limit the CPU CFS (Completely Fair Scheduler) quota
--cpu-shares , -c
CPU shares (relative weight)
--cpuset-cpus
CPUs in which to allow execution (0-3, 0,1)
--cpuset-mems
MEMs in which to allow execution (0-3, 0,1)
--disable-content-trust
true
Skip image verification
--file , -f
Name of the Dockerfile (Default is ‘PATH/Dockerfile’)
--force-rm
Always remove intermediate containers
--iidfile
Write the image ID to the file
--isolation
Container isolation technology
--label
Set metadata for an image
--memory , -m
Memory limit
--memory-swap
Swap limit equal to memory plus swap: ‘-1’ to enable unlimited swap
--network
API 1.25+
Set the networking mode for the RUN instructions during build
--no-cache
Do not use cache when building the image
--platform
experimental (daemon)API 1.32+
Set platform if server is multi-platform capable
--pull
Always attempt to pull a newer version of the image
--quiet , -q
Suppress the build output and print image ID on success
--rm
true
Remove intermediate containers after a successful build
--security-opt
Security options
--shm-size
Size of /dev/shm
--squash
experimental (daemon)API 1.25+
Squash newly built layers into a single new layer
--stream
experimental (daemon)API 1.31+
Stream attaches to server to negotiate build context
--tag , -t
Name and optionally a tag in the ‘name:tag’ format
--target
Set the target build stage to build.
--ulimit
Ulimit options
TIPs 1.3 Docker-Compose 기본 형식
Command
Description
build
Build or rebuild services
config
Validate and view the Compose file
create
Create services
down
Stop and remove resources
events
Receive real time events from containers
exec
Execute a command in a running container
help
Get help on a command
images
List images
kill
Kill containers
logs
View output from containers
pause
Pause services
port
Print the public port for a port binding
ps
List containers
pull
Pull service images
push
Push service images
restart
Restart services
rm
Remove stopped containers
run
Run a one-off command
scale
Set number of containers for a service
start
Start services
stop
Stop services
top
Display the running processes
unpause
Unpause services
up
Create and start containers
version
Show version information and quit
Name, Shorthand
Description
-f, --file FILE
Specify an alternate compose file (default: docker-compose.yml)
-p, --project-name NAME
Specify an alternate project name (default: directory name)
--profile NAME
Specify a profile to enable
-c, --context NAME
Specify a context name
--verbose
Show more output
--log-level LEVEL
Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
--ansi (never|always|auto)
Control when to print ANSI control characters
--no-ansi
Do not print ANSI control characters (DEPRECATED)
-v, --version
Print version and exit
-H, --host HOST
Daemon socket to connect to
--tls
Use TLS; implied by --tlsverify
--tlscacert CA_PATH
Trust certs signed only by this CA
--tlscert CLIENT_CERT_PATH
Path to TLS certificate file
--tlskey TLS_KEY_PATH
Path to TLS key file
--tlsverify
Use TLS and verify the remote
--skip-hostname-check
Don't check the daemon's hostname against the name specified in the client certificate
--project-directory PATH
Specify an alternate working directory (default: the path of the Compose file)
--compatibility
If set, Compose will attempt to convert keys in v3 files to their non-Swarm equivalent (DEPRECATED)
--env-file PATH
Specify an alternate environment file
2022년 NHN Cloud 무료 교육일정 : https://doc.skill.or.kr/2022-NHN-Cloud-Education
2022년 NHN Cloud 행사/프로모션 정보 공유 : https://doc.skill.or.kr/2022-NHN-Cloud-Event-Promotion
Last updated