docker 설치(for k8s)

JopopScript·2022년 12월 20일
4

인프라

목록 보기
1/3
post-custom-banner

지금까지 centos 위에 docker/kubernetes 업무를 해왔다. 하지만 지원기간 종료가 다가오면서 다른 OS를 찾아보고 있었다.

centos의 지원기간

centos7은 RHEL7과 동일하게 지원한다고 한다.

https://centos.org/distro-faq/

그러면 RHEL7의 지원기간은??? 2024/6/30까지다.

https://access.redhat.com/support/policy/updates/errata/#Life_Cycle_Dates

centos8으로 넘어가면 더 오래 지원받을수 있지 않을까?? 응 아니야... 오히려 이미 2021/12/31에 종료가 되어버렸다.

https://blog.centos.org/2020/12/future-is-centos-stream/

어떤식으로 설치?

  • 현재(2022/12/21)기준의 최신버전들로 설치를 진행해봤다.
  • centos는 답이없다. 무지성으로 일단 제일 인기있는 ubuntu로 갈아타자~ 가즈아!!
  • 취미이기 때문에 GPU사용을 위한 nvidia docker2까진 관심이 없고 기본설치만 한다!
  • 부연설명은 없이 딱 설치가 성공하는 케이스 명령어만 나열할 예정이다.

설치 환경은?

  • 내 맥과 데스크탑을 더럽힐 생각은 없다. aws로 진행
    ec2 t2.micro: 2core cpu, 4g memory(추후 k8s까지 진행하기위해 k8s master node 최소사양으로 생성)

    https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

  • os: ubuntu server20.04 LTS
    ubuntu server22.04로 3번정도 여러가지 방법으로 시도해봤으나 kubeadm init후 control-plain이 지속적으로 재시작 되는 에러를 해결하지못함... 통신문제인지? docker 새버전이 문제인지 원인을 모르겠다

  • disk: root-10G, 추가-20G
    20G 추가한건 추후 docker, k8s가 사용할 공간으로 사용하려고 한다.

설치 시작

추가한 disk 마운트

# 마운트할 위치에 디렉토리 생성
sudo mkdir /container

# 연결된 디스크 확인
sudo lsblk -f

NAME     FSTYPE   FSVER LABEL    UUID    FSAVAIL FSUSE% MOUNTPOINTS
loop0    squashfs 4.0    0   100% /snap/amazon-ssm-agent/6312
loop1    squashfs 4.0    0   100% /snap/core18/2632
loop2    squashfs 4.0    0   100% /snap/core20/1695
loop3    squashfs 4.0    0   100% /snap/lxd/23541
loop4    squashfs 4.0    0   100% /snap/snapd/17883
xvda
├─xvda1  ext4     1.0   cloudimg-rootfs 687fab62-1ba5-4282-890e-9266064f7d27    5.4G    29% /
├─xvda14
└─xvda15 vfat     FAT32 UEFI            B2B4-82AC                              99.1M     5% /boot/efi
xvdb

# 파일시스템 생성
sudo mkfs -t xfs /dev/xvdb

# 마운트 하기
sudo mount /dev/xvdb /container

# 재부팅시 자동으로 마운트되도록 설정
# 마운트할 디스크의 UUID조회
sudo blkid
/dev/xvdb: UUID="93224ba7-e4f4-47d0-8be9-e9c53d7c9bb7" BLOCK_SIZE="512" TYPE="xfs"

# fstab에 UUID로 입력
sudo vi /etc/fstab
UUID=93224ba7-e4f4-47d0-8be9-e9c53d7c9bb7  /container  xfs  defaults,nofail  0  2

sudo mkdir -p /container/{asd,qwe}

# 혹시 재부팅시 마운트가 잘 되는지 확인해 보려면 아래처럼 마운트를 없애고 재부팅 ㄱㄱ
sudo umount /data
sudo reboot

도커설치

  • 설치 버전
    docker-ce=5:20.10.22~3-0~ubuntu-focal
    docker-ce-cli=5:20.10.22~3-0~ubuntu-focal
    docker-compose-plugin=2.14.1~ubuntu-focal
    containerd:v1.6.14
    runc:v1.1.4
    CNI(containernetworking/plugins):v1.1.1
  • 인프런 인강에서 continerd를 별도로 설치해야 잘 작동할 것이라는 말을듣고 별도로 설치를 진행했다.

    https://www.inflearn.com/questions/717068

  • 기본적으로 아래 docker 공식문서를 참고하여 진행했다.

    https://docs.docker.com/engine/install/ubuntu/

#설치에 필요한 라이브러리 설치
sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

# 이건 내가쓰려고 설치...
sudo apt-get install net-tools

#Docker GPG key 추가 (GPG key: 다운로드 받은게 정상적인지 검증하는 키값??)
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

#페키지 매니저로 다운로드 가능하도록 repo등록
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 설치 가능한 버전 조회
sudo apt-get update
apt-cache madison docker-ce
 docker-ce | 5:20.10.22~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.21~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.20~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
apt-cache madison docker-ce-cli
docker-ce-cli | 5:20.10.22~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
docker-ce-cli | 5:20.10.21~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
docker-ce-cli | 5:20.10.20~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
apt-cache madison docker-compose-plugin
docker-compose-plugin | 2.14.1~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
docker-compose-plugin | 2.12.2~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
docker-compose-plugin | 2.12.0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages

# 특정버전 도커 설치
sudo apt-get install docker-ce=5:20.10.22~3-0~ubuntu-focal \
                     docker-ce-cli=5:20.10.22~3-0~ubuntu-focal \
                     docker-compose-plugin=2.14.1~ubuntu-focal

containerd, runc 설치

containerd 설치

# containerd 다운로드 설치
wget https://github.com/containerd/containerd/releases/download/v1.6.14/containerd-1.6.14-linux-amd64.tar.gz
sudo tar Cxzvf /usr/local containerd-1.6.14-linux-amd64.tar.gz

# containerd service 실행
wget https://raw.githubusercontent.com/containerd/containerd/main/containerd.service
sudo mv containerd.service /usr/lib/systemd/system/

sudo systemctl daemon-reload
sudo systemctl enable --now containerd

# containerd 정상구동 확인
sudo systemctl status containerd

runc 설치

wget https://github.com/opencontainers/runc/releases/download/v1.1.4/runc.amd64
sudo install -m 755 runc.amd64 /usr/local/sbin/runc

containerd 설정

# ck8s구동하기 위한 설정
sudo mkdir -p /etc/containerd/
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
sudo systemctl restart containerd

CNI 설치

sudo mkdir -p /opt/cni/bin/
sudo wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz
sudo tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.1.1.tgz

추가적 도커 설정

#설치된 패키지 버전 확인
docker version
apt-cache policy docker-ce | grep Installed \
&& apt-cache policy docker-ce-cli | grep Installed \
&& apt-cache policy containerd.io | grep Installed \
&& apt-cache policy docker-compose-plugin | grep Installed

#현재 사용자 도커권한 부여
sudo usermod -aG docker ubuntu
id ubuntu
#사용자 정보 세션에 적용위해 ssh 다시접속

# 도커 구동
sudo service docker start

# 도커 실행 테스트
docker run hello-world

# 도커 디렉토리 소유자 변경
sudo chown -R <계정번호>:<그룹번호> /container
 
# 도커 설정변경
# cgroupdriver변경, 도커가 사용할 디렉토리 변경
sudo vi /etc/docker/daemon.json
{
    "data-root": "/container/docker",
    "exec-opts": ["native.cgroupdriver=systemd"]
}

# 설정 변경을 위해 재구동
sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker

# sudo ls /containers/docker 를 통해 파일이 생성되어 있으면 data-root변경된것임
profile
tutorialMaster
post-custom-banner

2개의 댓글

comment-user-thumbnail
2022년 12월 21일

제 경우에는 containerd 설치 단락에서 wget사용하려면 sudo가 앞에 있어야하네요

1개의 답글