Study: DeveloperTools(DevTool)/DevTool: Container

[Docker] ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ tar ํŒŒ์ผ๋กœ ์ €์žฅ (export / import / save / load)

DrawingProcess 2023. 10. 10. 21:16
๋ฐ˜์‘ํ˜•
๐Ÿ’ก ๋ณธ ๋ฌธ์„œ๋Š” '๋„์ปค ์ด๋ฏธ์ง€๋ฅผ tar ํŒŒ์ผ๋กœ ์ €์žฅ (export / import / save / load)'์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋†“์€ ๊ธ€์ž…๋‹ˆ๋‹ค.
docker build๋‚˜ commit์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์ด๋ฏธ์ง€๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ docker hub์™€ ๊ฐ™์€ registry์— push๋˜๊ณ , ์ด๋ฅผ ๋‹ค์‹œ pull ๋ฐ›๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๊ฐ„ํ˜น docker ์ด๋ฏธ์ง€๋ฅผ registry๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์ด๋™ํ•ด์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Volume ์„ค์ •์„ ํ•˜์ง€ ์•Š๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ข…๋ฃŒํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ๋‚ด์˜ ๋ชจ๋“  ์ž‘์—… ๋‚ด์—ญ์ด ์œ ์‹ค๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿด ๋•Œ ์‚ฌ์šฉ์ž๋Š” docker ์ด๋ฏธ์ง€ ํ˜น์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ tarํŒŒ์ผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1. docker save (docker image -> tar)

docker ์ด๋ฏธ์ง€๋ฅผ tarํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” docker save ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

$ docker save -o xxx.tar [์ด๋ฏธ์ง€๋ช…]

์ €์žฅํ•  ํŒŒ์ผ๋ช…์„ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์€ -o ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

2. docker load (tar -> docker image)

tarํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์‹œ docker image๋กœ ๋˜๋Œ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” docker load ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

$ docker load -i xxx.tar

3. docker export (docker container -> tar)

docker๋Š” ์ด๋ฏธ์ง€ ๋ฟ ์•„๋‹ˆ๋ผ container๋ฅผ tarํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

$ docker export <์ปจํ…Œ์ด๋„ˆ๋ช… or ์ปจํ…Œ์ด๋„ˆID> > xxx.tar

4. docker import (tar -> docker image)

export ์ปค๋งจ๋“œ๋ฅผ ํ†ตํ•ด ๋งŒ๋“ค์–ด์ง„ tar ํŒŒ์ผ์„ ๋‹ค์‹œ docker image๋กœ ์ƒ์„ฑํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.

$ docker import <xxx.tar or URL> [image name[:tag name]]

โ€ป root ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ, ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์—†๋Š” ํŒŒ์ผ๋“ค์ด ํฌํ•จ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+ importํ•œ ์ด๋ฏธ์ง€ ์‹คํ–‰ํ•˜๊ธฐ

์ด๋ฏธ์ง€๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•ด๋ด…์‹œ๋‹ค.

docker run -dit ubuntu

์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

docker: Error response from daemon: No command specified.

๊ทธ ์ด์œ ๋Š” ์šฐ๋ฆฌ๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์•„์นด์ด๋น™ ํ•˜๊ณ  ๋‹ค์‹œ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“  ๊ฒƒ์ด๋ฏ€๋กœ Docker๋Š” ์ด ์ด๋ฏธ์ง€์˜ ์—”ํŠธ๋ฆฌํฌ์ธํŠธ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์ด๋ ‡๊ฒŒ ๋งŒ๋“  ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ๋ฅผ ์ง์ ‘ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ๋ช…๋ น์–ด ๋’ค์— ์—”ํŠธ๋ฆฌํฌ์ธํŠธ๋ฅผ ์ง€์ •ํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

docker run -dit ubuntu /bin/bash

๊ฒฐ๋ก : export - import ์™€ save - load์˜ ์ฐจ์ด

์•ž์„œ ์–˜๊ธฐํ–ˆ๋“ฏ, save๋Š” ์ด๋ฏธ์ง€๋ฅผ export๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ €์žฅํ•œ๋‹ค๋Š” ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์™ธ์— ๋‘ ๊ฐ€์ง€์˜ ํฐ ์ฐจ์ด์ ์€ ๋ฉ”ํƒ€ ์ •๋ณด๋„ ํ•จ๊ป˜ ์ €์žฅ๋˜๋Š”์ง€ ์•„๋‹Œ์ง€์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

Docker ์ด๋ฏธ์ง€๋Š” ํŒŒ์ผ์˜ ๋‹ค๋ฅธ ์ •๋„๊ฐ€ ๋ ˆ์ด์–ด๋กœ ์ค‘์ฒฉ๋˜์–ด ์žˆ๋Š” ๊ตฌ์กฐ๊ฐ€ ๋˜์–ด ์žˆ์–ด, save๋Š” ๋ ˆ์ด์–ด์˜ ์ •๋ณด ๋“ฑ๋„ ํฌํ•จ๋œ ์ƒํƒœ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ํ•œํŽธ export๋Š” Docker๋กœ์จ์˜ ๊ตฌ์กฐ๋‚˜ ๋ฉ”ํƒ€ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š๊ณ , ํŒŒ์ผ ์‹œ์Šคํ…œ๋งŒ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, tarํŒŒ์ผ์— ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฃจํŠธ ํŒŒ์ผ์‹œ์Šคํ…œ ์ „์ฒด๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก , ํŒŒ์ผ์‚ฌ์ด์ฆˆ๋Š” save๋ณด๋‹ค export์ชฝ์ด ์ ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ์ด๋ฏธ์ง€๊ฐ€ ๊ฐ™๋”๋ผ๋„ export์™€ save๋Š” ์••์ถ•๋˜๋Š” ํŒŒ์ผ ๊ตฌ์กฐ์™€ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์ถ”๊ฐ€๋กœ, export๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•œ tar ํŒŒ์ผ์€ import๋กœ, save๋กœ ์ƒ์„ฑํ•œ ํŒŒ์ผ์€ load๋กœ ์ด๋ฏธ์ง€ํ™” ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

๋ฐ˜์‘ํ˜•