Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- AWS
- Sequelize
- GIT
- 정렬
- react
- MongoDB
- nodejs
- 자료구조
- game
- mongoose
- TypeScript
- Dinosaur
- flask
- Bull
- typeORM
- dfs
- nestjs
- Queue
- jest
- MySQL
- Nest.js
- JavaScript
- OCR
- class
- 공룡게임
- cookie
- Python
- 게임
- Express
Archives
- Today
- Total
포시코딩
[Docker] image 다른 pc로 옮겨서 컨테이너화 본문
728x90
MySQL, MariaDB
이미지 저장
docker ps -a
docker images
먼저 옮길 대상이 되는 컨테이너와 일치하는 이미지 확인
sudo docker save -o my_image.tar my_image:tag
-o: 'output'의 약자, 이미지를 아카이브 파일로 출력할 위치나 경로를 지정하는데 사용
추출하면 권한 때문에 빨갛게 나오는데 옮기려면 권한이 필요하니 chmod를 통해 755로 바꿔준다.
sudo chmod 755 mariadb_10.5.tar
파일 복사
파일은 Filezila로 옮겼다. (해당 부분은 생략)
이미지 불러오기
docker load -i mariadb_10.5.tar
-i: input
이미지를 불러온 모습
컨테이너 생성 및 실행
Docker 네트워크 생성
docker network ls
docker network create nginx-net
docker network ls
'nginx-net'이라는 Docker 네트워크 생성
MariaDB 컨테이너 실행 및 환경설정 세팅
docker run \
--name shared-mariadb \
-p 3306:3306 \
--network nginx-net \
--network-alias shared-mariadb \
-v /Users/seonghun/dev/docker-data/mariadb-data:/var/lib/mysql \
-e MARIADB_ROOT_PASSWORD=3999 \
-d mariadb:10.5
\ 를 다 지우면서 한줄로 이어붙여 입력하면 된다.
- `docker run`: Docker 컨테이너 실행 명령어
- `--name shared-mariadb`: 컨테이너에 'shared-mariadb'라는 이름 할당
- `-p 3306:3306`: 호스트의 포트 3306과 컨테이너의 포트 3306 연결
- `--network nginx-net`: 'nginx-net'이라는 Docker 네트워크에 연결
- `--network-alias shared-mariadb`: 'nginx-net' 네트워크 내에서 사용할 별칭을 지정하는 옵션
- `-v /Users/seonghun/dev/docker-data/mariadb-data:/var/lib/mysql`:
호스트의 `/Users/seonghun/dev/docker-data/mariadb-data` 디렉토리와 (생성되어있어야함)
컨테이너의 `/var/lib/mysql` 디렉토리를 볼륨 마운트하여 MariaDB 데이터를 호스트에 저장하고 유지 - `--env MARIADB_ROOT_PASSWORD=3999`:
컨테이너 내에서 사용할 환경 변수를 설정하는 옵션으로, MariaDB의 루트 비밀번호 지정 - `-d mariadb:10.5`: 컨테이너를 백그라운드에서 실행하는 옵션. `mariadb:10.5` 이미지를 사용하여 컨테이너 생성
컨테이너 실행 확인
docker ps
컨테이너가 Up 상태로 잘 실행된 것을 확인할 수 있다.
다른 방법
컨테이너를 export, import 명령어를 통해 바로 파일어 옮기는 방법도 존재한다.
MongoDB
이미지 파일 복사 후 불러오는 과정은 같으므로 생략
컨테이너 생성 및 실행
docker run \
--name shared-mongodb \
-p 27017:27017 \
--network nginx-net \
--network-alias shared-mongodb \
-v /Users/seonghun/dev/docker-data/mongodb/conf:/etc/mongo \
-v /Users/seonghun/dev/docker-data/mongodb/data:/data/db \
-e MONGO_INITDB_ROOT_USERNAME=root \
-e MONGO_INITDB_ROOT_PASSWORD=3999 \
-d mongo:4.4.18
명령어 구조는 MySQL 때와 같다. 마찬가지로 \ 빼고 다 붙여서 실행
마찬가지로 host의 conf, data 폴더를 만든 상태여야함
mkdir -p /Users/seonghun/dev/docker-data/mongodb/conf
mkdir -p /Users/seonghun/dev/docker-data/mongodb/data
자주 사용하는 Docker run 옵션들
- -p, --publish와 같은 뜻. 호스트와 컨테이너 간의 포트 매핑 설정
- -v, --volume과 같은 뜻. 호스트와 컨테이너 간의 볼륨 마운트 설정
- -e, --env: 환경 변수를 컨테이너 내부에 전달
- -d, --detach: 컨테이너를 백그라운드에서 실행
- --user: 컨테이너 내부에서 실행될 사용자 지정
- --network: 컨테이너를 특정 네트워크에 연결
- --rm: 컨테이너가 종료되면 자동 삭제
728x90