💡 핵심 요약 (Executive Summary)
본 가이드는 oci docker 핵심 가이드 및 실전 아키텍처의 핵심 개념, 실전 구성 명령어 및 아키텍처 베스트 프랙티스를 다룹니다. 클라우드 네이티브 및 인프라 엔지니어링 실무에 즉시 활용 가능하도록 체계적으로 정리했습니다.
📑 Table of Contents
RHEL
repository-setting
bash
# rhel
sudo yum install -y yum-utils
## rhel x86_64의 경우에는 리포지토리에서 받을 수 없으므로 centos용 repository를 이용
sudo yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# rhel-extra (version 8)
[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirror.kakao.com/centos/8/extras/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=http://mirror.kakao.com/centos/RPM-GPG-KEY-CentOS-Official
setup
bash
# 기존 설치목록 제거
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
podman \
runc
# 종속성 설치: pkgs.org에서 검색하면 쉽게 찾을 수 있음
sudo yum install -y https://vault.centos.org/centos/8/BaseOS/x86_64/os/Packages/libcgroup-0.41-19.el8.x86_64.rpm
sudo yum install -y https://vault.centos.org/centos/8/BaseOS/x86_64/os/Packages/fuse3-libs-3.2.1-12.el8.x86_64.rpm
sudo yum install -y https://vault.centos.org/centos/8/AppStream/x86_64/os/Packages/fuse-overlayfs-0.7.8-1.module_el8.5.0+1004+c00a74f5.x86_64.rpm
sudo yum install -y https://vault.centos.org/centos/8/AppStream/x86_64/os/Packages/slirp4netns-0.4.2-3.git21fdece.module_el8.5.0+1004+c00a74f5.x86_64.rpm
# docker packages
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
run
bash
sudo systemctl start docker
sudo유저가 아닌 경우 설정
bash
sudo usermod -aG docker $USER
newgrp docker
sudo cp /usr/bin/docker /usr/local/bin/
Ubuntu
bash
# ubuntu
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# GPG KEY 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 리포지토리 등록
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 다운로드
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
sudo systemctl status docker
MacOS (docker-desktop 미사용, 외부 도커데몬 연결)
리눅스 서버 도커 외부포트 오픈
bash
sudo vi /lib/systemd/system/docker.service
>>>
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# 위 내용을 아래로 변경
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H 0.0.0.0:2376
<<<
sudo systemctl daemon-reload
sudo systemctl restart docker.service
netstat -lntp | grep 2376
mac 도커 클라이언트 사용 (외부 Docker Daemon 사용)
bash
brew install docker docker-completion docker-compose docker-credential-helper
docker -H"$dockerDaemonProxy" images
docker -H"$dockerDaemonProxy" login $url
MacOS (colima)
bash
brew install docker docker-compose colima docker-credential-helper
vi ~/.docker/config.json
>>>
"credsStore": "osxkeychain",
<<<
# VM을 4CPU 및 8GiB 메모리로 실행
colima start --cpu 4 --memory 8
# 1CPU, 2GiB 메모리 및 10GiB 스토리지를 갖춘 VM을 만듭니다.
colima start --cpu 1 --memory 2 --disk 10
# Rosetta 2 에뮬레이션으로 VM 설정
colima start --arch aarch64 --vm-type=vz --vz-rosetta
# Docker client의 Endpoint 목록조회
docker context ls
# colima로 Endpoint 변경
docker context use colima
# Completion
colima completion zsh >> ~/.zshrc
# template 변경: insecure 등
colima delete
colima template
# 시작
colima start
# 종료
colima stop
리눅스용 docker-credential-pass 다운로드 (docker login) — 이거 활성화시 pull은 가능하나 push할 때에 unauthorized 문제가 있었음
Reference & Guidelines (NOTE)
docker login password를 평문(~/.docker/config.json – base64)으로 저장하지 않고 암호화함
bash
sudo -i
apt-get install rng-tools pass -y
rngd -r /dev/urandom
gpg --gen-key #내이름, 이메일, 암호 입력
#linux amd64
wget https://github.com/docker/docker-credential-helpers/releases/download/v0.6.3/docker-credential-pass-v0.6.3-amd64.tar.gz
tar xvzf docker-credential-pass-v0.6.3-amd64.tar.gz
rm docker-credential-pass-v0.6.3-amd64.tar.gz
sudo chmod a+x docker-credential-pass
sudo mv docker-credential-pass /usr/local/bin
gpg -K #sec 영역의 gpg key 복사
>>>
sec rsa3072 2024-03-12 [SC] [expires: 2026-03-12]
B01D8CA085D7FE165DFF7E04946D1238D4877BE2
uid [ultimate] Myeonghan Kim <[email protected]>
ssb rsa3072 2024-03-12 [E] [expires: 2026-03-12]
<<<
pass init $gpgkey
pass insert docker-credential-helpers/docker-pass-initialized-check #password 입력
pass ls
>>>
Password Store
└── docker-credential-helpers
└── docker-pass-initialized-check
<<<
vi ~/.docker/config.json
>>>
{
"experimental": "enabled"
}
<<<
docker login
Dockerd Insecure 없이 클라이언트 측에서 https 인증
bash
mv ca.pem ~/.docker/
docker --tlsverify $commands #http response error
Dockerd Insecure 없이 서버 측에서 https 인증
bash
vi /etc/docker/daemon.json
>>>
{
"tlsverify": true,
"tlscacert": "/root/.docker/tls/ca.pem",
"tlscert": "/root/.docker/tls/cert.pem",
"tlskey": "/root/.docker/tls/key.pem"
}
<<<
docker push #인증에러 unauthorized: unauthorized to access repository: game-hosting/mc-backup, action: push: unauthorized to access repository: game-hosting/mc-backup, action: push
Leave a Reply