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에 다운받고, 해당 소스 코드를 기반으로 알고 있는 임의의 빌드 방법 중 하나를 선택하여 도커 이미지로 빌드하시오.

 

 

 

참고