๐ก ๋ณธ ๋ฌธ์๋ '๋์ปค ์ด๋ฏธ์ง๋ฅผ 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๋ก ์ด๋ฏธ์งํ ํด์ผ ํฉ๋๋ค.
์ฐธ๊ณ
- [Blog] docker image๋ฅผ tar ํ์ผ๋ก ์ ์ฅ (export / import / save / load): https://www.leafcats.com/240
- [Blog] ์คํ ์ค์ธ Docker ์ปจํ ์ด๋๋ฅผ ํ์ผ๋ก ์ ์ฅํ๊ณ ๋ค์ ๋ถ๋ฌ์ค๊ธฐ: https://xo.dev/articles/export-and-import-docker-container