Docker

요즘 Systemd 대신 Docker를 많이 사용하는데, 자주 사용하는 commands를 정리해본다.

[!TIP] Docker Hub에 등록할 Tag 버전명을 환경변수로 등록해서 사용

echo "export FILE_MANAGER_VERSION=2.0.1" >> ~/.zshrc

# 적용
source ~/.zshrc

# 확인
echo ${FILE_MANAGER_VERSION}

1. Dockerfile

[!NOTE] Spring Boot with Docker

Springboot 기준 Dockerfile

테스트 버전 참고

Java SpringBoot Gradle

FROM openjdk:11-jre

ENV TZ=Asia/Seoul

ARG JAR_FILE=build/libs/*.jar

# Set Timezone
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo ${TZ} > /etc/timezone

# Container Volume
VOLUME ["/opt/hugh"]

# Port
EXPOSE 8080

# Copy jar file to the container
COPY ${JAR_FILE} app.jar

# Run Application
ENTRYPOINT ["java","-jar","/app.jar"]


2. Docker Build

[!NOTE] Docker build를 하기 전에 Springboot의 Gradle build가 선행되어야 한다.

build/libs 폴더 하위에 jar 파일 존재 여부 확인

# Dockerfile 이 위치한 폴더에서 실행해야 하며 뒤에 . 이 필요 (현재 경로를 의미)
sudo docker build -t royalahn/file-manager:${FILE_MANAGER_VERSION} .


3. Docker Run

[!NOTE] USER_HOST, USER_USERNAME, USER_PASSWORD는 환경변수이며 사전에 등록이 필요

sudo docker run -d -p 8080:8080 -v /opt/hugh:/opt/hugh --name file-manager \
  -e USER_HOST=${USER_HOST} \
  -e USER_USERNAME=${USER_USERNAME} \
  -e USER_PASSWORD=${USER_PASSWORD} \
  royalahn/file-manager:${FILE_MANAGER_VERSION}


4. Docker Logs

[!NOTE] Docker run 시 -d 옵션을 주어 detach(Background)로 실행했을 때 로그를 보는 방법

sudo docker logs file-manager


5. Docker Exec

[!NOTE] Docker 가 실행된 가상 VM에 접속하기 위한 방법

sudo docker exec -it file-manager /bin/bash


6. Docker Stop

[!NOTE] Docker로 실행중인 서비스를 잠시 멈추는 방법

sudo docker stop file-manager

# 전체를 멈추는 방법
sudo docker stop $(docker ps -a -q)


7. Docker Remove

[!NOTE] 멈춤상태의 서비스를 제거하는 방법

sudo docker rm file-manager

# 전체를 제거하는 방법
sudo docker rm $(docker ps -a -q)


8. Docker Remove Images

[!NOTE] Docker 이미지 제거

sudo docker rmi royalahn/file-manager:${FILE_MANAGER_VERSION}


9. Docker Hub에 로그인

echo "export DOCKER_USERNAME=royalahn" >> ~/.zshrc

# <changeit>을 실제 비번으로 변경
echo "export DOCKER_PASSWORD=<changeit>" >> ~/.zshrc

source ~/.zshrc

echo ${DOCKER_PASSWORD} | sudo docker login -u ${DOCKER_USERNAME} --password-stdin


10. Docker Tag

[!NOTE] 2.0.1 의 Tag를 latestmaster 등으로 변경

sudo docker tag royalahn/file-manager:${FILE_MANAGER_VERSION} royalahn/file-manager:master
sudo docker tag royalahn/file-manager:${FILE_MANAGER_VERSION} royalahn/file-manager:latest


11. Docker Push

sudo docker push royalahn/file-manager:${FILE_MANAGER_VERSION}


12. Docker Pull

sudo docker pull royalahn/file-manager:${FILE_MANAGER_VERSION}
sudo docker pull docker.io/royalahn/file-manager:${FILE_MANAGER_VERSION}


13. Docker Service의 로그

[!NOTE] Systemd에 의해 수행되는 Docker의 로그

echo 'alias docker-log="sudo journalctl -xeu docker"' >> ~/.zshrc
source ~/.zshrc

# 수행
docker-log

results matching ""

    No results matching ""