06A. Docker ๊ฐ์ธ ์ ์ฅ์ ๊ตฌ์ถํ๊ธฐ
06A. Docker ๊ฐ์ธ ์ ์ฅ์ ๊ตฌ์ถํ๊ธฐ ๊ด๋ จ
Docker ๋ช ๋ น์ ๊ธฐ๋ณธ์ ์ผ๋ก Docker Hub๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฒ์๋ ๋๋ง์ ์ ์ฅ์ ์๋ฒ๋ฅผ ๊ตฌ์ถํด๋ณด๊ฒ ์ต๋๋ค.
Docker ์ ์ฅ์ ์๋ฒ๋ Docker ๋ ์ง์คํธ๋ฆฌ(registry) ์๋ฒ๋ผ๊ณ ๋ถ๋ฆ
๋๋ค. docker push
๋ช
๋ น์ผ๋ก ๋ ์ง์คํธ๋ฆฌ ์๋ฒ์ ์ด๋ฏธ์ง๋ฅผ ์ฌ๋ฆฌ๊ณ , docker pull
๋ช
๋ น์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค.
Docker ๋ ์ง์คํธ๋ฆฌ ์๋ฒ์์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋งค์ฐ ๋ค์ํฉ๋๋ค. ๊ทธ์ค์์ Docker ๋ ์ง์คํธ๋ฆฌ๊ฐ ๋์ํ๋ ์๋ฒ์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ๊ณผ Amazon S3์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
๋จผ์ ๊ธฐ์กด์ ์คํ๋๊ณ ์๋ Docker ๋ฐ๋ชฌ์ ์ ์งํ ๋ค --insecure-registry ์ต์ ์ ์ฌ์ฉํ์ฌ Docker ๋ฐ๋ชฌ์ ์คํํฉ๋๋ค.
sudo systemctl stop docker.socket
sudo systemctl stop docker
sudo dockerd --insecure-registry localhost:5000
๋ณดํต Docker ๋ฐ๋ชฌ์ ์ง์ ์คํํ์ง ์๊ณ ์๋น์ค ํํ๋ก ์คํํฉ๋๋ค. ์ด๋๋ /etc/docker/
daemon.json
ํ์ผ์ ์์ฑํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ ์ฅํฉ๋๋ค(์ด ํ์ผ์ root ๊ถํ์ผ๋ก ์์ ํด์ผ ํฉ๋๋ค).
<FontIcon icon="fas fa-folder-open"/>
/etc/docker/<FontIcon icon="iconfont icon-json"/>
daemon.json``
{
"insecure-registries": ["localhost:5000"]
}
./etc/docker/
daemon.json
ํ์ผ์ ์์ ํ์ผ๋ฉด Docker ์๋น์ค๋ฅผ ์ฌ์์ํฉ๋๋ค.
sudo systemctl restart docker
๋ก์ปฌ์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ ์ ์ฅ
Docker ๋ ์ง์คํธ๋ฆฌ ์๋ฒ๋ Docker Hub๋ฅผ ํตํด Docker ์ด๋ฏธ์ง๋ก ์ ๊ณต๋ฉ๋๋ค. ๋จผ์ Docker ๋ ์ง์คํธ๋ฆฌ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์ต๋๋ค.
sudo docker pull registry:latest
registry:latest
์ด๋ฏธ์ง๋ฅผ ์ปจํ
์ด๋๋ก ์คํํฉ๋๋ค.
sudo docker run -d -p 5000:5000 --name hello-registry \
-v /tmp/registry:/tmp/registry \
registry
์ด๋ ๊ฒ ์คํํ๋ฉด ์ด๋ฏธ์ง ํ์ผ์ ํธ์คํธ์ /tmp/registry
๋๋ ํฐ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค.
push
๋ช
๋ น์ผ๋ก ์ด๋ฏธ์ง ์ฌ๋ฆฌ๊ธฐ
์์์ ๋ง๋ hello:0.1
์ด๋ฏธ์ง๋ฅผ ๊ฐ์ธ ์ ์ฅ์์ ์ฌ๋ ค๋ณด๊ฒ ์ต๋๋ค.
sudo docker tag hello:0.1 localhost:5000/hello:0.1
sudo docker push localhost:5000/hello:0.1
ํ๊ทธ๋ฅผ ์์ฑํ๋ ๋ช
๋ น์ docker tag <์ด๋ฏธ์ง ์ด๋ฆ>:<ํ๊ทธ> <Docker ๋ ์ง์คํธ๋ฆฌ URL>/<์ด๋ฏธ์ง ์ด๋ฆ>:<ํ๊ทธ>
ํ์์
๋๋ค.
์ด๋ฏธ์ง๋ฅผ ์ฌ๋ฆฌ๋ ๋ช
๋ น์ docker push <Docker ๋ ์ง์คํธ๋ฆฌ URL>/<์ด๋ฏธ์ง ์ด๋ฆ>:<ํ๊ทธ>
ํ์์
๋๋ค.
๊ฐ์ธ ์ ์ฅ์์ ์ด๋ฏธ์ง๋ฅผ ์ฌ๋ฆด ๋๋ ํ๊ทธ๋ฅผ ๋จผ์ ์์ฑํด์ผ ํฉ๋๋ค. docker tag
๋ช
๋ น์ผ๋ก hello:0.1
์ด๋ฏธ์ง๋ฅผ localhost:5000/hello:0.1
ํ๊ทธ๋ก ์์ฑํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ docker push
๋ช
๋ น์ผ๋ก localhost:5000/hello:0.1
์ด๋ฏธ์ง๋ฅผ ๊ฐ์ธ ์ ์ฅ์์ ์ฌ๋ฆฝ๋๋ค(ํ๊ทธ๋ฅผ ์์ฑํ์ผ๋ฏ๋ก ์ค์ ๋ก๋ hello:0.1
์ด๋ฏธ์ง๊ฐ ์ฌ๋ผ๊ฐ๋๋ค).
์ด์ ๋ค๋ฅธ ์๋ฒ์์ ๊ฐ์ธ ์ ์ฅ์(Docker ๋ ์ง์คํธ๋ฆฌ ์๋ฒ)์ ์ ์ํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ฌ ์ ์์ต๋๋ค. ๊ฐ์ธ ์ ์ฅ์ ์๋ฒ IP ์ฃผ์๊ฐ 172.31.23.145
๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ช
๋ น์ ์คํํฉ๋๋ค.
sudo docker pull 172.31.23.145:5000/hello:0.1
์ฐธ๊ณ ๋ก ๋ช
๋ น์ ์คํํ๋ ค๋ฉด /etc/docker/
daemon.json
ํ์ผ์์ insecure-registries
์ 172.31.23.145:5000
์ด ๋ค์ด์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Docker ์๋น์ค๋ฅผ ์ฌ์์ํ๋ ๊ฒ์ ์์ง๋ง์ธ์.
.
/etc/docker/
daemon.json
{
"insecure-registries": ["localhost:5000", "172.31.23.145:5000"]
}
์ด๋ฏธ์ง ๋ชฉ๋ก์ ์ถ๋ ฅํฉ๋๋ค.
sudo docker images
#
# REPOSITORY TAG IMAGE ID CREATED SIZE
# hello 0.2 011ff3ff87e9 29 minutes ago 170MB
# 172.31.23.145:5000/hello 0.1 8307ff628ec8 35 minutes ago 170MB
# hello 0.1 8307ff628ec8 35 minutes ago 170MB
# localhost:5000/hello 0.1 8307ff628ec8 35 minutes ago 170MB
# mongo latest d34d21a9eb5b 7 days ago 693MB
# ubuntu 22.04 2dc39ba059dc 7 days ago 77.8MB
# nginx latest 2b7d6430f78d 2 weeks ago 142MB
# registry latest 3a0f7b0a13ef 4 weeks ago 24.1MB
๊ฐ์ธ ์ ์ฅ์์์ 172.31.23.145:5000/hello
์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ต๋๋ค.
์ด๋ฏธ์ง๋ฅผ ์ญ์ ํ ๋์๋ ์๋์ ๊ฐ์ด ์คํํฉ๋๋ค.
sudo docker rmi 172.31.23.145:5000/hello:0.1
Amazon S3์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ ์ ์ฅ
์ด๋ฒ์๋ AWS์ S3์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋จผ์ ์์์ ์์ฑํ hello-registry
์ปจํ
์ด๋๋ฅผ ์ ์งํฉ๋๋ค.
sudo docker stop hello-registry
Docker ๋ ์ง์คํธ๋ฆฌ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์ต๋๋ค.
sudo docker pull registry:latest
registry:latest
์ด๋ฏธ์ง๋ฅผ ์ปจํ
์ด๋๋ก ์คํํฉ๋๋ค.
sudo docker run -d -p 5000:5000 --name s3-registry \
-e REGISTRY_STORAGE=s3 \
-e REGISTRY_STORAGE_S3_BUCKET=examplebucket10 \
-e REGISTRY_STORAGE_S3_REGION=ap-northeast-2 \
-e REGISTRY_STORAGE_S3_ACCESSKEY=ABCDEFGHIJKLMNOPQRST \
-e REGISTRY_STORAGE_S3_SECRETKEY=sF4321ABCDEFGHIJKLMNOPqrstuvwxyz21345Afc \
registry
S3๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด -e ์ต์ ์ผ๋ก ์ค์ ์ ํด์ฃผ์ด์ผ ํฉ๋๋ค.
REGISTRY_STORAGE
: s3์ ์ค์ ํฉ๋๋ค.REGISTRY_STORAGE_S3_BUCKET
: ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ S3 ๋ฒํท ์ด๋ฆ์ ๋๋ค. ์์ ์์๋examplebucket10
์ ์ค์ ํ์ต๋๋ค. ์ฌ๋ฌ๋ถ์ด ์์ฑํ S3 ๋ฒํท ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.REGISTRY_STORAGE_S3_REGION
: S3 ๋ฒํท์ ๋ฆฌ์ ์ ์ค์ ํฉ๋๋ค.REGISTRY_STORAGE_S3_ACCESSKEY
: AWS ์ก์ธ์ค ํค๋ฅผ ์ค์ ํฉ๋๋ค.REGISTRY_STORAGE_S3_SECRETKEY
: AWS ์ํฌ๋ฆฟ ํค๋ฅผ ์ค์ ํฉ๋๋ค.
์ด์ s3-registry
์ ์ฅ์์ Docker ์ด๋ฏธ์ง๋ฅผ pushํ๋ฉด S3 ๋ฒํท์ ์ ์ฅ๋ฉ๋๋ค.
๊ธฐ๋ณธ ์ธ์ฆ ์ฌ์ฉํ๊ธฐ
Docker ๋ ์ง์คํธ๋ฆฌ์๋ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๋ฐ๋ผ์ Nginx์ ๊ธฐ๋ณธ ์ธ์ฆ(Basic Authentication) ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ํ, HTTP ํ๋กํ ์ฝ์์๋ ์ธ์ฆ์ ์ง์ํ์ง ์์ผ๋ฏ๋ก ๋ฐ๋์ HTTPS ํ๋กํ ์ฝ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋จผ์ /etc/
hosts
ํ์ผ์ ํธ์งํ์ฌ ํ
์คํธ์ฉ ๋๋ฉ์ธ์ ์ถ๊ฐํฉ๋๋ค. ์ด ํ์ผ์ root ๊ถํ์ผ๋ก ์์ ํด์ผ ํฉ๋๋ค. ๋๋ฉ์ธ์ ๊ตฌ์
ํ์ง ์์์ ๋๋ ์ด ๋ถ๋ถ์ ๋ฐ๋์ ์ค์ ํด์ฃผ์ด์ผ ํ๋ฉฐ, ๋๋ฉ์ธ์ ๊ตฌ์
ํ์ฌ DNS๋ฅผ ์ค์ ํ๋ค๋ฉด ์ด ๋ถ๋ถ์ ๊ฑด๋๋ฐ์ด๋ ๋ฉ๋๋ค.
.
/etc/
hosts
127.0.0.1 localhost
<๋ ์ง์คํธ๋ฆฌ ์๋ฒ IP ์ฃผ์> registry.example.com
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
์ฌ๋ฌ๋ถ์ ๋ ์ง์คํธ๋ฆฌ ์๋ฒ IP ์ฃผ์๋ฅผ registry.example.com
์ผ๋ก ์ค์ ํฉ๋๋ค. ์ด ๋ฌธ์์์๋ registry.example.com
์ ๊ธฐ์ค์ผ๋ก ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
์ด์ SSL ์ฌ์ค ์ธ์ฆ์(Self Signed)๋ฅผ ์์ฑํ๊ฒ ์ต๋๋ค. SSL ๊ณต์ธ ์ธ์ฆ์๋ฅผ ๊ตฌ์ ํ๋ค๋ฉด ์ด ๋ถ๋ถ์ ๊ฑด๋๋ฐ์ด๋ ๋ฉ๋๋ค.
/CN
: Docker ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์คํํ๋ ์๋ฒ์ ๋๋ฉ์ธ์ ๋๋ค. ์ด ๋ถ๋ถ์ ์ ํํ๊ฒ ์ ๋ ฅํ์ง ์์ผ๋ฉด ์ธ์ฆ์๋ฅผ ์ฌ์ฉํด๋ ๋ก๊ทธ์ธํ ๋ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค./etc/
hosts
ํ์ผ์ ์ค์ ํ๋๋กregistry.example.com
๋ฅผ ์ ๋ ฅํฉ๋๋ค.subjectAltName
: SAN์ ๋๋ค.subjectAltName=DNS:registry.example.com
๋ฅผ ์ ๋ ฅํฉ๋๋ค.
mkdir certs
cd certs
openssl genrsa -out ca.key 2048
openssl req -new -x509 -days 365 -key ca.key \
-subj "/C=CN/ST=GD/L=SZ/O=Acme, Inc./CN=Acme Root CA" \
-out ca.crt
openssl req -newkey rsa:2048 \
-nodes -keyout server.key \
-subj "/C=CN/ST=GD/L=SZ/O=Acme, Inc./CN=registry.example.com" -out server.csr
openssl x509 -req \
-extfile <(printf "subjectAltName=DNS:registry.example.com") \
-days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
cd ..
์ด์ server.crt ์ธ์ฆ์ ํ์ผ์ ์์คํ
์ ์ค์น๋ฅผ ํด์ฃผ์ด์ผ ํฉ๋๋ค(์ธ์ฆ์ ํ์ผ์ ์ค์นํ์ง ์์ผ๋ ค๋ฉด --insecure-registry
์ต์
์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด ๋ถ๋ถ์ ๋ค์ ๋ฐ๋ก ์ค๋ช
ํ๊ฒ ์ต๋๋ค).
sudo mkdir -p /etc/docker/certs.d/registry.example.com
sudo cp certs/ca.crt /etc/docker/certs.d/registry.example.com/ca.crt
./etc/
hosts
์ ๋๋ฉ์ธ์ ์ถ๊ฐํ๊ณ , ์ธ์ฆ์ ํ์ผ์ ์ค์นํ์ผ๋ฉด Docker ์๋น์ค๋ฅผ ์ฌ์์ํฉ๋๋ค. Docker ์๋น์ค๋ฅผ ์ฌ์์ํด์ผ ์ถ๊ฐ๋ ๋๋ฉ์ธ๊ณผ ์ค์น๋ ์ธ์ฆ์๊ฐ ์ ์ฉ๋ฉ๋๋ค.
sudo systemctl restart docker
Docker ๋ ์ง์คํธ๋ฆฌ์ ์ ์ํ ๋ค๋ฅธ ์์คํ
์๋ server.crt
์ธ์ฆ์ ํ์ผ์ ๋ณต์ฌํ์ฌ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ค์น๋ฅผ ํ๊ณ Docker ์๋น์ค๋ฅผ ์ฌ์์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ฉ์ธ์ ๊ตฌ์
ํ์ง ์์๋ค๋ฉด /etc/
hosts
์ ๋ ์ง์คํธ๋ฆฌ ์๋ฒ(registry.example.com
)์ IP ์ฃผ์๋ฅผ ์ค์ ํฉ๋๋ค.
--insecure-registry ์ต์
.server.crt
์ธ์ฆ์ ํ์ผ์ ์์คํ
์ ์ค์นํ์ง ์์ผ๋ ค๋ฉด Docker ๋ฐ๋ชฌ์ ์คํํ ๋ --insecure-registry
์ต์
์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
sudo dockerd --insecure-registry registry.example.com
--insecure-registry
์ต์ ์ Docker ๋ ์ง์คํธ๋ฆฌ์ ๋๋ฉ์ธ์ ์ค์ ํฉ๋๋ค. ๋๋ฉ์ธ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ค์ ํ๋ ค๋ฉด--insecure-registry
์ต์ ์ ์ฌ๋ฌ ๋ฒ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
๋ณดํต Docker ๋ฐ๋ชฌ์ ์ง์ ์คํํ์ง ์๊ณ ์๋น์ค ํํ๋ก ์คํํฉ๋๋ค. ์ด๋๋ <FontIcon icon="fas fa-folder-open"/>
/etc/docker/<FontIcon icon="iconfont icon-json"/>
daemon.json`` ํ์ผ์ insecure-registries
๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํฉ๋๋ค(์ด ํ์ผ์ root ๊ถํ์ผ๋ก ์์ ํด์ผ ํฉ๋๋ค).
.
/etc/docker/
daemon.json
{
"insecure-registries": ["registry.example.com"]
}
./etc/docker/
daemon.json
ํ์ผ์ ์์ ํ์ผ๋ฉด Docker ์๋น์ค๋ฅผ ์ฌ์์ํฉ๋๋ค.
sudo systemctl restart docker
Docker ๋ ์ง์คํธ๋ฆฌ์ ์ ์ํ ๋ค๋ฅธ ์์คํ
์๋ ๊ฐ์ ๋ฐฉ์์ผ๋ก --insecure-registry
์ต์
์ ์ฌ์ฉํ์ฌ Docker ๋ฐ๋ชฌ์ ์คํํฉ๋๋ค.
์ด์ ์ฌ์ฉ์ ๊ณ์ ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ์ฅํ htpasswd
ํ์ผ์ ์์ฑํด์ผ ํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด auth/
htpasswd
ํ์ผ์ ์์ฑํ๊ณ hellouser
๋ผ๋ ์์ ์ฌ์ฉ์๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๋น๋ฐ๋ฒํธ ์
๋ ฅ ๋ถ๋ถ์๋ ์ฌ์ฉํ ๋น๋น๋ฒํธ๋ฅผ ์
๋ ฅํฉ๋๋ค.
mkdir auth
sudo docker run --entrypoint htpasswd --rm httpd:2 -Bbn hellouser hellopassword > auth/htpasswd
๋ค์ ๋ช ๋ น์ ์คํํ์ฌ Docker ๋ ์ง์คํธ๋ฆฌ ์ปจํ ์ด๋๋ฅผ ์์ฑํฉ๋๋ค.
sudo docker run -d \
--name registry \
-v "$(pwd)"/auth:/auth \
-e REGISTRY_AUTH=htpasswd \
-e REGISTRY_AUTH_HTPASSWD_REALM="Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-v "$(pwd)"/certs:/certs \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/server.key \
-p 443:443 \
registry:2
-v
์ต์ ์ผ๋กauth
,certs
๋๋ ํฐ๋ฆฌ๋ฅผ ์ปจํ ์ด๋์/auth
,/certs
๋ก ์ฐ๊ฒฐํฉ๋๋ค.REGISTRY_AUTH_HTPASSWD_PATH
: ์์์ ์์ฑํhtpasswd
ํ์ผ์ ์ค์ ํฉ๋๋ค.REGISTRY_HTTP_TLS_CERTIFICATE
,REGISTRY_HTTP_TLS_KEY
: ์์์ ์์ฑํserver.key
,server.crt
ํ์ผ์ ์ค์ ํฉ๋๋ค.
docker login
๋ช
๋ น์ผ๋ก https://registry.example.com
์ ๋ก๊ทธ์ธํฉ๋๋ค. Username๊ณผ Password์๋ htpasswd
๋ช
๋ น์ผ๋ก ์์ฑํ ์ฌ์ฉ์(hellouser
)์ ๋น๋ฐ๋ฒํธ(hellopassword
)๋ฅผ ์
๋ ฅํฉ๋๋ค.
sudo docker login https://registry.example.com
#
# Username: hellouser
# Password: hellopassword
# WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
# Configure a credential helper to remove this warning. See
# https://docs.docker.com/engine/reference/commandline/login/#credentials-store
#
# Login Succeeded
docker login <Docker ๋ ์ง์คํธ๋ฆฌ URL>
ํ์์
๋๋ค.
์ฃผ์
๋๋ฉ์ธ ์ค์ ์ด ๊ท์ฐฎ๋ค๊ณ ๊ทธ๋ฅ ๊ฑด๋๋ฐ๊ณ IP ์ฃผ์๋ง ์ฌ์ฉํ๋ฉด ๋ก๊ทธ์ธ์ด ์ ๋ฉ๋๋ค. ์ธ์ฆ์์ ์ค์ ํ ๋๋ฉ์ธ๊ณผ docker login
๋ช
๋ น์ ์
๋ ฅํ ๋๋ฉ์ธ์ด ๋ฐ๋์ ์ผ์นํด์ผ ํฉ๋๋ค. HTTPS ํ๋กํ ์ฝ์ IP ์ฃผ์ ์ ์์ ํ์ฉํ์ง ์์ผ๋ฏ๋ก ๊ตฌ์
ํ์ง ์์ ๋๋ฉ์ธ์ /etc/
hosts
ํ์ผ์ ๋ฑ๋กํ์ฌ ์ฌ์ฉํฉ๋๋ค.
์ด์ ์์์ ๋ง๋ hello:0.1
์ด๋ฏธ์ง๋ฅผ ๊ฐ์ธ ์ ์ฅ์์ ์ฌ๋ ค๋ณด๊ฒ ์ต๋๋ค.
sudo docker tag hello:0.1 registry.example.com/hello:0.1
sudo docker push registry.example.com/hello:0.1
#
# The push refers to repository [registry.example.com/hello]
# 3fc4e1f2a517: Pushed
# 4d3d2ac7a313: Pushed
# 11fb43ff38a5: Pushed
# 7e6bc37fff8b: Pushed
# 7f5cbd8cc787: Pushed
# 0.1: digest: sha256:????????????????????????????????????????????? size: 1367
์ด๋ฏธ์ง์ ํ๊ทธ๋ <Docker ๋ ์ง์คํธ๋ฆฌ URL>/<์ด๋ฏธ์ง ์ด๋ฆ>:<ํ๊ทธ>
ํ์์ผ๋ก ์์ฑํฉ๋๋ค. ์ฐ๋ฆฌ๋ registry.example.com
์ผ๋ก ์ค์ ํ์ผ๋ฏ๋ก registry.example.com/hello:0.1
์ด ๋ฉ๋๋ค.
๋ค๋ฅธ ์๋ฒ์์๋ ๋ค์ ๋ช
๋ น์ ์คํํ์ฌ registry.example.com
์ ์ ์ฅ๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค.
sudo docker pull registry.example.com/hello:0.1