블로그
전체 3#카테고리
- 개발 · 프로그래밍 기타
#태그
- Docker
2025. 10. 05.
0
Dockerfile 활용해 이미지 직접 만들기
Dockerfile이란?Docker 이미지를 만들게 해주는 파일. FROM : 베이스 이미지 생성FROM은 베이스 이미지를 생성하는 역할을 한다.Docker 컨테이너를 특정 초기 이미지를 기반으로 추가적인 셋팅을 할 수 있다.여기서 예기한 '특정 초기 이미지'가 곧 베이스 이미지이다. 사용법# 문법 FROM [이미지명] FROM [이미지명]:[태그명] [실습] FROM : 베이스 이미지 생성Dockerfile 만들기# JDK 17 FROM openjdk:17-jdkDockerfile을 기반으로 이미지 만들기docker build -t my-jdk17-server .이미지를 기반으로 컨테이너 띄우기docker run -d my-jdk17-server컨테이너 조회하기docker ps # 실행되고 있는 컨테이너가 없다. docker ps -a # 확인해보니 컨테이너가 종료되어 있다. Docker의 컨테이너는 내부적으로 필요한 명령을 다 수행하면 컨테이너가 저절로 종료된다.컨테이너 내부로 들어가서 jdk가 잘 깔렸는지 확인해보기종료된 컨테이너에 들어가서 디버깅하고 싶을때FROM openjdk:17-jdk ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # 500초 동안 시스템을 일시정지 시키는 명령어docker build -t my-jdk17-server . # 이미지 빌드 docker run -d my-jdk17-server # 컨테이너 실행 docker ps # 실행 중인 컨테이너 조회 docker exec -it [컨테이너 ID] bash # 컨테이너 접속 java -version # JDK 설치되어 있는 지 확인 COPY : 파일 복사( 이동 )# 문법 COPY [호스트 컴퓨터에 있는 복사할 파일의 경로] [컨테이너에서 파일이 위치할 경로] # 예시 COPY app.txt /app.txt -- 와일드 카드 사용해보기FROM ubuntu COPY *.txt /text-files/ ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # 디버깅용 코드 -- .dockerignore 사용해보기.dockerignorereadme.txt DockerfileFROM ubuntu COPY ./ / ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # 디버깅용 코드--> readme.txt만 복사가 안된다. ENTRYPOINT : 컨테이너가 시작할때 실행되는 명령어# 문법 ENTRYPOINT [명령문...] # 예시 ENTRYPOINT ["node", "dist/main.js"]예제FROM ubuntu ENTRYPOINT ["/bin/bash", "-c", "echo hello"] docker build -t my-server . docker run -d my-server docker ps -a docker logs [Container ID]
2025. 10. 04.
0
[실습] Docker로 Mysql 실행시켜보기
Mysql 이미지를 바탕으로 컨테이너 실행 docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -d mysql컨테이너에 들어가 환경변수 설정이 잘 되었는지 확인docker exec -it [MYSQL 컨테이너 ID] bash echo $MYSQL_ROOT_PASSWORD # MYSQL_ROOT_PASSWORD 라는 환경변수 값 출력 export # 설정되어있는 모든 환경변수 출력 Dbeaver로 연결 확인하기 window 환경의 경우 useSSL=false, allowPublicKeyRetrieval=true 설정해야 연결된다 Docker 볼륨(Volume)을 활용해 MySQL 컨테이너 띄우기MySQL 컨테이너 띄우기Docker Volumecd /Users/LeeHwiro mkdir docker-mysql # MySQL 데이터를 저장하고 싶은 폴더 만들기 # docker -run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v {호스트의 절대경로}/mysql-data:/var/lib/mysql -d mysql docker -run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v "C:/Users/LeeHwiro/docker-mysql/mysql-data:/var/lib/mysql" -d mysql MySQL 컨테이너 삭제하고 다시 띄워보기#컨테이너 종료 docker stop [MYSQL 컨테이너 ID] docker rm [MYSQL 컨테이너 ID] # 비밀번호 바꿔서 컨테이너 생성 docker -run -e MYSQL_ROOT_PASSWORD=pwd123 -p 3306:3306 -v "C:/Users/LeeHwiro/docker-mysql/mysql-data:/var/lib/mysql" -d mysql docker exec -it [MySQL 컨테이너 ID] bash mysql -u root -p # 접속이 안됨 해결 방법 : 기존 Volume 파일을 제거 후 다시 컨테이너를 생성시킨다. Docker Volume을 활용해 postGresql 띄우기docker run -e POSTGRES_PASSWORD=password123 -p 5432:5432 -v "C:/Users/LeeHwiro/docker-postgresql/postgresql_data:/var/lib/postgresql" -d postgres Docker Volume을 활용해 mongoDB 띄우기docker run -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=password123 -p 27017:27017 -v "C:\Users\LeeHwiro\docker-mongodb/mongodb_data:/data/db" -d mongo
2025. 10. 03.
0
Docker Volume(도커 볼륨) 이란?
Docker Volume(도커 볼륨) 이란?도커의 볼륨(Volume)이란 도커 컨테이너에서 영속적으로 저장하기 위한 방법이다.볼륨(Volume)은 컨테이너 자체의 저장 공간을 사용하지 않고, 호스트 자체의 저장 공간을 공유해서 사용하는 형태이다.볼륨을 사용하는 명령어$ docker run -v [호스트의 디렉토리 절대경로]:[컨테이너의 디렉토리 절대경로] [이미지명]:[태그명]-- [호스트의 디렉토리 절대 경로] 에 디렉토리가 이미 존재할 경우, 호스트의 디렉터리가 컨테이너의 디렉터리를 덮어씌운다.-- [호스트의 디렉토리 절대 경로] 에 디렉토리가 존재하지 않을 경우, 호스트의 디렉터리 절대 경로에 디렉터리를 새로 만들고 컨테이너의 디렉터리에 있는 파일들을 호스트의 디렉터리로 복사해온다.
개발 · 프로그래밍 기타
・
Docker