리눅스 우분투에 도커 설치

https://shanepark.tistory.com/237

 

Ubuntu 20.04 LTS ) Docker 설치하기

Intro Docker는 제가 회사에서 사용하는 노트북의 OS를 Windows 에서 Ubuntu 로 변경하게 된 트리거 였습니다. Docker를 사용하면 정말 편하게 격리된 컨테이너들을 구성해 가상화의 장점을 정말 잘 살릴

shanepark.tistory.com

 

-------------------------------------------------

 

[1] 이미지 생성
docker build -t 이미지이름 도커파일경로
 
M1 맥북 도커의 경우  docker build —platform linux/amd64 -t 이미지이름 도커파일경로
 
[2] 컨테이너 생성 및 구동
Mac OS, Linux
1. docker run -it --restart=always -d -p 포트:포트(인바운드 설정) --name 컨테이너이름 이미지이름
Window에서 구동 (테스트 서버)
docker run -it --restart=always -d -p 포트:포트(인바운드 설정) --name 컨테이너이름 이미지이름
--restart=always : 도커 재구동시 자동 실행
-d : 백그라운드 실행
-p : 포트설정 ex) 80:8080 80으로 접속시 8080으로 인바운드
--name : 컨테이너 이름 설정
 

-------------------------------------------------------------------------------------------------------------

 
도커 미사용 이미지 컨테이너 제거
docker system prune -a

 

-------------------------------------------------------------------------------------------------------------

 

도커 마리아DB 설정
 
mariadb 이미지 다운로드
docker pull mariadb
 
도커 컨테이너를 재실행하면 데이터가 모두 날아가기 때문에 데이터를 살려두려면 호스트의 디렉토리에 볼륨을 생성하여 연결하여야 한다.

 

볼륨생성

docker volume create test_volume

볼륨확인

docker volume ls

도커에서 볼륨 관리
docker run -it --restart=always -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -v test_volume:/var/lib/mysql --name testmariadb mariadb
또는 디렉토리를 직접 설정
docker run -it --restart=always -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -v /usr/local/dockerMariaDBVolume/volume1:/var/lib/mysql --name testmariadb mariadb
두 방식 중 하나를 선택하여 사용하자.
 

-e MYSQL_ROOT_PASSWORD=password 는 도커파일을 사용할 경우 쓰지 않아도 된다

docker run -it --restart=always -d -p 3306:3306 -v test_volume:/var/lib/mysql --name testmariadb mariadb

데이터베이스를 도커파일 없이 돌릴 경우 타임존 문제가 발생하였다. 도커파일을 이용하여 타임존을 설정하자

 

----------------------------------------------------------------------------------------------------------------------

 

nextjs 도커파일 예제

# 도커 허브에서 이미지를 가져와서 이미지를 작업한다
# FROM (이미지 이름:버전)
# FROM node:14.15.4
FROM node

# 컨테이너 실행 전 작동할 명령
# RUN (명령)
# 타임존 설정 (설정을 하지 않으면 시간 저장시 다른 시간대로 저장됨)
RUN ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
RUN echo Asia/Seoul > /etc/timezone

# 컨테이너 내 작업 경로
# WORKDIR (경로)
WORKDIR /app

# 작업 파일을 컨테이너로 복사
# COPY (파일명 또는 ${변수명}) (복사할 파일명)
# app dependencies, install 및 caching
COPY . .

# 컨테이너 실행 전 작동할 명령
# RUN (명령)
RUN yarn install

# 이미지 내부 환경 설정
# ENV (타겟) (내용)
# `/app/node_modules/.bin`을 $PATH 에 추가
# (bin폴더를 찾기 어려울 수 있으므로 환경변수에 추가해줌)
ENV PATH /app/node_modules/.bin:$PATH

RUN yarn build

# 컨테이너 시작 시 내릴 명령 (CMD와 ENTRYPOINT 차이 확인)
# ENTRYPOINT [(명령),(매개변수),(매개변수),(...)]
CMD ["yarn", "start"]

 

스프링부트 도커파일 예제

 

# 도커 허브에서 이미지를 가져와서 이미지를 작업한다
# FROM (이미지 이름:버전)
FROM openjdk:11.0.8-jre-slim

# 컨테이너 실행 전 작동할 명령
# RUN (명령)
# 타임존 설정 (설정을 하지 않으면 시간 저장시 다른 시간대로 저장됨)
RUN ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
RUN echo Asia/Seoul > /etc/timezone

# 컨테이너 내 작업 경로
# WORKDIR (경로)
WORKDIR /app

# 작업 파일을 변수화 하기
# ARG (변수명)=(파일명)
ARG JAR_FILE=demo*.jar

# 작업 파일을 컨테이너로 복사
# COPY (파일명 또는 ${변수명}) (복사할 파일명)
COPY ${JAR_FILE} application.jar

# 컨테이너 시작 시 내릴 명령 (CMD와 ENTRYPOINT 차이 확인)
# ENTRYPOINT [(명령),(매개변수),(매개변수),(...)]
ENTRYPOINT ["java","-jar","application.jar"]

 

마리아 db 도커파일 예제

# 도커 허브에서 이미지를 가져와서 이미지를 작업한다
# FROM (이미지 이름:버전)
FROM mariadb

# 컨테이너 실행 전 작동할 명령
# RUN (명령)
# 타임존 설정 (설정을 하지 않으면 시간 저장시 다른 시간대로 저장됨)
RUN ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
RUN echo Asia/Seoul > /etc/timezone

# 이미지 내부 환경 설정
# ENV (타겟) (내용)
ENV MYSQL_USER testuser
ENV MYSQL_PASSWORD password
ENV MYSQL_ROOT_PASSWORD password

 

'Infra > Docker' 카테고리의 다른 글

도커 설치 및 기본 이용  (0) 2020.10.27

+ Recent posts