์ค๋ช
๋์ปค ํ๋ธ์ ๊ฐ์ธ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ํธ์คํ
๋๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ Swarm ํด๋ฌ์คํฐ์์ ์๋น์ค๋ฅผ ์์ฑํ ๋๋ง๋ค ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์๋น์ค๊ฐ ์๋ ์ค์ด๋ฉฐ ์๋น์ค๋ฅผ ์์ฑํ ๋๋ง๋ค ์ธ์๋๋ ์ค๋ฅ ๋ฉ์์ง์ผ ๋ฟ์
๋๋ค.
๋ฌธ์ ๋ฅผ ์ฌํํ๋ ๋จ๊ณ:
๋ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ค๋ช ํ์ญ์์ค.
unable to pin image organization/some-image to digest: errors:
denied: requested access to the resource is denied
unauthorized: authentication required
์์ํ ๊ฒฐ๊ณผ๋ฅผ ์ค๋ช
ํ์ธ์.
์ค๋ฅ ๋ฉ์์ง ์์
docker version
์ถ๋ ฅ:
Client:
Version: 17.03.1-ce
API version: 1.27
Go version: go1.7.5
Git commit: c6d412e
Built: Fri Mar 24 00:45:26 2017
OS/Arch: linux/amd64
Server:
Version: 17.03.1-ce
API version: 1.27 (minimum version 1.12)
Go version: go1.7.5
Git commit: c6d412e
Built: Fri Mar 24 00:45:26 2017
OS/Arch: linux/amd64
Experimental: false
docker info
์ถ๋ ฅ:
Containers: 1
Running: 1
Paused: 0
Stopped: 0
Images: 3
Server Version: 17.03.1-ce
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 33
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Swarm: active
NodeID: omkzmqvpztv77kkg4j7w6dhj9
Is Manager: true
ClusterID: zpzn4xvqs6h5drt29423a7wr6
Managers: 1
Nodes: 2
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Number of Old Snapshots to Retain: 0
Heartbeat Tick: 1
Election Tick: 3
Dispatcher:
Heartbeat Period: 5 seconds
CA Configuration:
Expiry Duration: 3 months
Node Address: x.x.x.x
Manager Addresses:
x.x.x.x:2377
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 4ab9917febca54791c5f071a9d1f404867857fcc
runc version: 54296cf40ad8143b62dbcaa1d90e520a2136ddfe
init version: 949e6fa
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 4.4.0-70-generic
Operating System: Ubuntu 16.04.2 LTS
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 15.66 GiB
Name: name
ID: CMZP:AJOT:ELIE:T4NT:52JS:A6U6:LYE4:DNPW:LCJB:R2UR:XO3K:CDP6
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Username: intezerdev
Registry: https://index.docker.io/v1/
WARNING: No swap limit support
Labels:
size=f8
provider=azure
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
์ถ๊ฐ ํ๊ฒฝ ์ธ๋ถ ์ ๋ณด(AWS, VirtualBox, ๋ฌผ๋ฆฌ์ ๋ฑ):
azure, docker-machine ์ฌ์ฉ
์ด๊ฒ์ ์์๋ฉ๋๋ค. ์๋น์ค๋ฅผ ์์ฑํ ๋ docker๋ ์๋์ผ๋ก ์๊ฒฉ ์ฆ๋ช ์ ์ ๋ฌํ์ง ์์ต๋๋ค. ์๊ฒฉ ์ฆ๋ช /์ธ์ฆ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ (์ค๊ณ์) ๋ช ์์ ์์ ์ ๋๋ค. ์๊ฒฉ ์ฆ๋ช ์ ๋ฌด๋ฆฌ์ ์ ์ฅ๋๊ณ ์๋น์ค๊ฐ ๋ฐฐํฌ๋๋ ๋ ธ๋์ ๋ฐฐํฌ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
์๊ฒฉ ์ฆ๋ช
์ ์ ๋ฌํ๋ ค๋ฉด ์๋น์ค๋ฅผ ์์ฑํ ๋ --with-registry-auth
์ต์
์ ์ฌ์ฉํ๊ฑฐ๋ ๊ธฐ์กด ์๋น์ค( docker service update --with-registry-auth
)์ ์ธ์ฆ ์ ๋ณด๋ฅผ _์
๋ฐ์ดํธ_ํ์ญ์์ค.
์ฌ๊ธฐ์ ๋ฒ๊ทธ๊ฐ ์๋ค๊ณ ์๊ฐํ์ง ์์ง๋ง ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๊ฑฐ๋ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์๋ ค์ฃผ์ธ์.
Pull the image on the server
wrt ํ๊ณ ๋ฐฐํฌํฉ๋๋ค. Swarm ๋ชจ๋๋ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด์ ์คํธ์ "๊ณ ์ "ํ๋ฏ๋ก ์๋น์ค์ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๋์ผํ ๋ฒ์ ์ ์ด๋ฏธ์ง๋ฅผ _์ ํํ_ ์คํํ๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด๋ฅผ ์ํด ๋ ์ง์คํธ๋ฆฌ์ ์ ์ํ์ฌ "๋ค์ด์ ์คํธ"(๋ถ๋ณ ํ๊ทธ)๋ฅผ ํด๊ฒฐํฉ๋๋ค. ์ด๋ฅผ ์ํด์๋ ๋ ์ง์คํธ๋ฆฌ์ ๋ํ ์ก์ธ์ค๊ฐ ํ์ํฉ๋๋ค. ๋ค์ด์ ์คํธ ํด๊ฒฐ์ด ์คํจํ๋ฉด docker๋ ์๋น์ค๋ฅผ ์์ฑํ ๋ ์ ๊ณตํ image:tag
๋ฅผ ์ฌ์ฉํ๋๋ก ๋์ฒดํ๊ณ ๋ก์ปฌ ์ด๋ฏธ์ง(์๋ ๊ฒฝ์ฐ)๋ฅผ ์ฌ์ฉํฉ๋๋ค. https://github.com/docker/docker/issues/31518 ์ฐธ์กฐ
๊ณ์ํด์ ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ๊ฒ ์ต๋๋ค. ํ์ง๋ง ๋ ๋ง์ ์ ๋ณด๊ฐ ํ์ํ๋ฉด ์์ ๋กญ๊ฒ ํ ๋ก ์ ๊ณ์ํ์ธ์ ๐
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ์ ์์๋ฉ๋๋ค. ์๋น์ค๋ฅผ ์์ฑํ ๋ docker๋ ์๋์ผ๋ก ์๊ฒฉ ์ฆ๋ช ์ ์ ๋ฌํ์ง ์์ต๋๋ค. ์๊ฒฉ ์ฆ๋ช /์ธ์ฆ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ (์ค๊ณ์) ๋ช ์์ ์์ ์ ๋๋ค. ์๊ฒฉ ์ฆ๋ช ์ ๋ฌด๋ฆฌ์ ์ ์ฅ๋๊ณ ์๋น์ค๊ฐ ๋ฐฐํฌ๋๋ ๋ ธ๋์ ๋ฐฐํฌ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
์๊ฒฉ ์ฆ๋ช ์ ์ ๋ฌํ๋ ค๋ฉด ์๋น์ค๋ฅผ ์์ฑํ ๋
--with-registry-auth
์ต์ ์ ์ฌ์ฉํ๊ฑฐ๋ ๊ธฐ์กด ์๋น์ค(docker service update --with-registry-auth
)์ ์ธ์ฆ ์ ๋ณด๋ฅผ _์ ๋ฐ์ดํธ_ํ์ญ์์ค.์ฌ๊ธฐ์ ๋ฒ๊ทธ๊ฐ ์๋ค๊ณ ์๊ฐํ์ง ์์ง๋ง ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๊ฑฐ๋ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์๋ ค์ฃผ์ธ์.