DevOps
[Docker] 컨테이너 이미지 만들기
cumo
2025. 3. 31. 12:38
1. 기본 방법으로 빌드
기존 자바 코드로 이미지를 빌드
java 설정
#1 cd ~/_Book_k8infra/ch4/4.3.1/ #책의 코드파일 접속
#2 dnf -y install java-1.8.0-openjdk-devel -y # java 설치
#3 chmod 700 mvnw &&./mvnw clean packeage #maven 빌드 명령 실행
컨테이너 이미지 빌드
#다른 이름의 동일한 공간을 사용하는 링크 이미지
docker build -t basic-img
docker build -t basic-img:1.0 -t basic-img:2.0 .
#Dockerfile 수정
#같은 이름이지만 다른 이미지가 생성이 됨.
sed -i 's/Application/Development/' Dockerfile
docker build -t basic-img:3.0 .
빌드 삭제
docker rm -f basic-run
basic-run
docker rmi -f $(docker images -q basic-img)
]
컨테이너 용량 줄이기
컨테이너 내 용량 확인 후 줄이기
cd ~/_Book_k8sInfra/ch4/4.3.2
ls
#DockerFIle
FROM gcr.io/distroless/java:8
LABEL description="Echo IP Java Application"
EXPOSE 60432
COPY ./target/app-in-host.jar /opt/app-in-image.jar
WORKDIR /opt
ENTRYPOINT [ "java", "-jar", "app-in-image.jar" ]
docker build -t 4glimage
docker run
레지스트리 등록 및 이미지 다운
현재 내 home 디렉터리의 Dockerfile을 통해 내부에서 컨테이너를 구성하고
이미지를 업로드 hub에 업로드 한뒤에 컨테이너를 실행하고자 한다.
docker build -t 4glcon #dockerfile을 통한 이미지 생성
이미지 다운로드 및 컨테이너 생성
docker pull [이미지주소]
docker run -d --restart always -p 60434 --name 4gltest [이미지 주소]
ansible - wordpress
services:
wordpress:
image: wordpress:latest
ports:
- 80:80
environment:
- WORDPRESS_DB_HOST=database
- WORDPRESS_DB_USER=wpuser
- WORDPRESS_DB_PASSWORD=1234
- WORDPRESS_DB_NAME=wpdb
depends_on:
- database
database:
image: mariadb:latest
command: '--default-authentication-plugin=mysql_native_password'
volumes:
- dbdata:/var/lib/mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=1234
- MYSQL_DATABASE=wpdb
- MYSQL_USER=wpuser
- MYSQL_PASSWORD=1234
expose:
- "3306"
volumes:
dbdata:
실습
각 서버 초기화 후, Server A를 앤서블 서버, Server B를 앤서블 노드로 삼아 다음을 작업하시오.
단, 플레이북으로 해당 작업들이 일괄 실행되도록 만드시오.
1. Server B에 docker compose가 설치되도록 하고, wordpress 이미지와 mariadb 이미지를 사용하여 docker compose 플러그인을 통해 연결된 형태의 어플리케이션을 구축하시오.
2. 제공된 자바 소스 코드를 Server B의 /root에 다운받고, 해당 소스 코드를 기반으로 알고 있는 임의의 빌드 방법 중 하나를 선택하여 도커 이미지로 빌드하시오.
참고