오늘은 도커파일을 이용한 이미지 빌드와 사설 저장소를 이용한 이미지 푸쉬, 컨테이너 동작을 실습해보았다.
VMware에 ubuntu20.04.iso 설치 NAT 대역으로 211.183.3.0/24 사용하였다.
curl -fsSL https://get.docker.com -o get-docker.sh // 도커 설치 스크립트 다운로드
sh get-docker.sh
systemctl enable --now docker
git clone https://github.com/oolralra/simple_sb // 스프링부트 샘플 코드 다운로드
rm -rf target/springbootApp.jar
apt-get -y install openjdk-8-jdk
java -version // 1.8.0 확인
apt-get -y install maven
mvn package
vim Dockerfile
!
FROM openjk:8 #베이스이미지
ADD target/springbootApp.jar springbootApp.jar #호스트의 파일을 컨테이너 이미지 안으로 삽입, 소스 대상
ENTRYPOINT ["java", "-jar", "springbootApp.jar"] #컨테이너가 실행될때 동작시킬 명령
!
docker build -t chaerinkang/sb:1.0 .
docker run -dp 7979:8085 --name sbapp chaerinkang/sb:1.0
Dockerfile을 활용한 빌드 이미지로 정상적인 스트링부트 애플리케이션 컨테이너 동작을 확인하였다.
이제는 사설 저장소(private-registry)를 이용하여 빌드하고 푸쉬, 풀로 컨테이넌 동작까지 확인 해볼 예정이다.
docker rm -f sbapp
docker run -d --restart=always -p 5000:5000 -v /registry:/var/lib/registry/docker/registry/v2 --name reg registry:latest // 사설저장소
docker run -d --restart=always -p 5001:8080 --name reg_web --link reg -e REGISTRY_URL=http://211.183.3.200:5000/v2 -e REGISTRY_NAME=211.183.3.200:5000 hyper/docker-registry-web // 사설저장소를 웹으로 확인할 수 있는 컨테이너
docker tag oolralra/sb:1.0 211.183.3.200:5000/sb:1.0 // 기존 이미지가 존재한다면 태그를 새로 만든다
docker build -t 211.183.3.200:5000/sb:1.0 // 이미지가 없다면 빌드하면 된다.
docker push 211.183.3.200:5000/sb:1.0 // 보안 이슈가 발생한다.
vim /etc/docker/daemon.json
!
{
"insecure-registries": ["211.183.3.200:5000"]
}
!
해당 사설 저장소를 daemon.json 파일에 추가하였다. 이제 보안을 무시하고 사용할 수 있다.
docker push 211.183.3.200:5000/sb:1.0
sb:1.0이 사설 저장소에 저장됨을 확인할 수 있다.
docker rmi -f 211.183.3.200:5000/sb:1.0 // 이미지를 잘 땡겨오는지도 확인하기 위해 기존에 존재하는 이미지를 삭제한다.
docker run -dp 7676:8085 --name myapp 211.183.3.200:5000/sb:1.0 // 사설저장소에 저장되어 있는 이미지로 컨테이너를 실행시켜본다.
댓글남기기