Project

General

Profile

윈도우11 도커에 이식하기 » History » Version 1

상혁 손, 2025-10-22 21:10

1 1 상혁 손
# 윈도우11 도커에 이식하기
2
3
### 1단계: Windows 11에 Docker Desktop 설치
4
5
이미 설치되어 있다고 가정하겠습니다.
6
7
### 2단계: WSL 2 터미널 준비
8
9
Windows에서 `PowerShell`이나 `터미널`을 열고 `wsl` 명령어를 입력하여 WSL 2 리눅스 환경으로 들어갑니다.
10
11
`wsl`
12
13
WSL 2 환경에 `docker-compose` (v2)와 `pigz`, `nano`를 설치합니다.
14
15
`# WSL 2 터미널 내부`
16
`sudo apt update`
17
`sudo apt install pigz nano docker-compose`
18
19
### 3단계: 백업 파일 복사 및 이미지 로드
20
21
1.  Windows 탐색기 주소창에 `\\wsl$\`를 입력하면 WSL 2의 파일 시스템이 열립니다.
22
    
23
2.  `home/<username>/` (예: `home/birdhead/`) 안에 `docker_restore` 같은 새 폴더를 만듭니다.
24
    
25
3.  백업한 `.tar.gz` 파일 5개(`postgres_image.tar.gz` 등)를 모두 `~/docker_restore` 폴더에 복사합니다.
26
    
27
4.  WSL 2 터미널에서 `docker`로 이미지 4개를 로드합니다.
28
    
29
30
`# WSL 2 터미널 내부`
31
`cd ~/docker_restore`
32
33
`# pigz로 압축 풀고 | docker로 로드`
34
`pigz -d -c postgres_image.tar.gz | docker load`
35
`pigz -d -c base_server_image.tar.gz | docker load`
36
`pigz -d -c pgadmin_image.tar.gz | docker load`
37
`pigz -d -c base-server-base_image.tar.gz | docker load`
38
39
`# docker 이미지 목록 확인`
40
`docker images`
41
42
### 4단계: 데이터 복원 및 `docker-compose.yml` 수정
43
44
**이 단계가 가장 중요합니다.**
45
46
1. 데이터 백업 파일의 압축을 풉니다. `sudo`를 사용해야 리눅스 파일 권한이 그대로 보존됩니다.
47
48
`# 현재 위치: ~/docker_restore`
49
`sudo tar -xvzf postgresql-server-data-backup.tar.gz`
50
51
`# postgresql-server 폴더가 생성됨`
52
`cd postgresql-server`
53
54
2. `docker-compose.yml` 파일을 수정합니다. `network_mode: "host"`를 제거하고 `ports:`를 추가해야 합니다.
55
56
`# 현재 위치: ~/docker_restore/postgresql-server`
57
`nano docker-compose.yml`
58
59
**[수정 전]** (대략 이런 모습일 겁니다)
60
61
`services:`
62
`base-server:`
63
`...`
64
`image: localhost/postgresql-server_base-server:latest`
65
`network_mode: "host" # <--- 문제`
66
`...`
67
`postgres:`
68
`...`
69
`image: localhost/postgresql-server_postgres:latest`
70
`network_mode: "host" # <--- 문제`
71
`command: postgres -c port=15432 ...`
72
`volumes:`
73
`- ./data/postgresql:/var/lib/postgresql/data`
74
`...`
75
`pgadmin:`
76
`...`
77
`image: docker.io/dpage/pgadmin4:latest`
78
`network_mode: "host" # <--- 문제`
79
`environment:`
80
`PGADMIN_LISTEN_PORT: 14011`
81
`volumes:`
82
`- ./data/pgadmin:/var/lib/pgadmin`
83
84
**[수정 후]** (`network_mode` 삭제, `ports` 추가)
85
86
`services:`
87
`base-server:`
88
`...`
89
`image: localhost/postgresql-server_base-server:latest`
90
`# network_mode: "host" # <--- 삭제`
91
`ports: # <--- 추가`
92
`- "14010:22" # podman ps에서 확인된 base-server 포트`
93
`...`
94
`postgres:`
95
`...`
96
`image: localhost/postgresql-server_postgres:latest`
97
`# network_mode: "host" # <--- 삭제`
98
`ports: # <--- 추가`
99
`- "15432:15432" # command의 포트와 동일하게 매핑`
100
`command: postgres -c port=15432 ...`
101
`volumes:`
102
`- ./data/postgresql:/var/lib/postgresql/data # <-- WSL2 내부라 그대로 작동`
103
`...`
104
`pgadmin:`
105
`...`
106
`image: docker.io/dpage/pgadmin4:latest`
107
`# network_mode: "host" # <--- 삭제`
108
`ports: # <--- 추가`
109
`- "14011:14011" # PGADMIN_LISTEN_PORT와 동일하게 매핑`
110
`environment:`
111
`PGADMIN_LISTEN_PORT: 14011`
112
`volumes:`
113
`- ./data/pgadmin:/var/lib/pgadmin # <-- WSL2 내부라 그대로 작동`
114
115
**참고:** `base-server`가 `podman ps`에서 `14010->22/tcp`로 매핑된 것을 기반으로 `ports: ["14010:22"]`를 추가했습니다.
116
117
### 5단계: Docker Compose 실행
118
119
이제 모든 준비가 끝났습니다. `docker-compose`로 실행합니다.
120
121
`# 현재 위치: ~/docker_restore/postgresql-server`
122
`docker-compose up -d`
123
124
`docker-compose`는 수정된 `yml` 파일을 읽고, `docker load`로 불러온 이미지 4개와 `tar`로 압축 해제한 `./data` 폴더(리눅스 권한이 보존된)를 사용하여 Windows 11에서 컨테이너를 완벽하게 실행시킵니다.