-
Docker 컨테이너 Ubuntu에 설치하기Programming and Database/Docker And Kubernetes 2024. 1. 26. 00:39728x90반응형
Docker 컨테이너 Ubuntu에 설치하기
※ 컨테이너 기반의 Docker 서비스를 구축하기 위한 사전 준비 사항
01. Docker#1 / Host IP: 127.0.0.1 / Host 포트: 105 / Guest IP: 10.100.0.105 / Guest 포트: 22
02. Docker#2 / Host IP: 127.0.0.1 / Host 포트: 106 / Guest IP: 10.100.0.106 / Guest 포트: 22
03. Docker 설치
- URL: https://docs.docker.com▶Docker 설치를 위해 docs.docker.com에 접속하여 Download and Install을 클릭합니다.
▶ Docker overview 카테고리를 통해서 Docker 설치를 위한 운영체제 환경을 선택할 수 있습니다. 해당 테스트는 리눅스 환경에 컨테이너 서비스를 올리기 때문에 Docker Desktop for Linux를 선택하여 설치도 가능합니다.
(테스트 환경: apt Repository를 이용하여 설치) -> 외부망이 연결되어 있어야 함.root@docker-ubuntu:~# sudo apt-get update 기존:1 http://kr.archive.ubuntu.com/ubuntu focal InRelease 받기:2 http://kr.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB] 받기:3 http://kr.archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB] 받기:4 http://kr.archive.ubuntu.com/ubuntu focal-updates/main i386 Packages [811 kB] 받기:5 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB] ...(생략) 받기:42 http://kr.archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 c-n-f Metadata [612 B] 받기:43 http://kr.archive.ubuntu.com/ubuntu focal-backports/main amd64 DEP-11 Metadata [7,980 B] 받기:44 http://kr.archive.ubuntu.com/ubuntu focal-backports/universe amd64 DEP-11 Metadata [30.5 kB] 내려받기 15.9 M바이트, 소요시간 28초 (560 k바이트/초) 패키지 목록을 읽는 중입니다... 완료
▶ Ubuntu OS 환경에서 apt Repository를 이용하여 설치하기 위해 apt-get update를 통해 최신 패키지를 외부 사이트를 통해 동기화합니다.
root@docker-ubuntu:~# apt-get install \ > apt-transport-https \ > ca-certificates \ > curl \ > gnupg-agent \ > software-properties-common 패키지 목록을 읽는 중입니다... 완료 의존성 트리를 만드는 중입니다 상태 정보를 읽는 중입니다... 완료 패키지 ca-certificates는 이미 최신 버전입니다 (20211016ubuntu0.20.04.1). ca-certificates 패키지는 수동설치로 지정합니다. 패키지 curl는 이미 최신 버전입니다 (7.68.0-1ubuntu2.18). 패키지 software-properties-common는 이미 최신 버전입니다 (0.99.9.11). software-properties-common 패키지는 수동설치로 지정합니다. 다음 새 패키지를 설치할 것입니다: apt-transport-https gnupg-agent 0개 업그레이드, 2개 새로 설치, 0개 제거 및 76개 업그레이드 안 함. 6,944 바이트 아카이브를 받아야 합니다. 이 작업 후 208 k바이트의 디스크 공간을 더 사용하게 됩니다. 계속 하시겠습니까? [Y/n] y 받기:1 http://kr.archive.ubuntu.com/ubuntu focal-updates/universe amd64 apt-transport-https all 2.0.9 [1,704 B] 받기:2 http://kr.archive.ubuntu.com/ubuntu focal-updates/universe amd64 gnupg-agent all 2.2.19-3ubuntu2.2 [5,240 B] 내려받기 6,944 바이트, 소요시간 1초 (5,320 바이트/초) Selecting previously unselected package apt-transport-https. (데이터베이스 읽는중 ...현재 187534개의 파일과 디렉터리가 설치되어 있습니다.) Preparing to unpack .../apt-transport-https_2.0.9_all.deb ... Unpacking apt-transport-https (2.0.9) ... Selecting previously unselected package gnupg-agent. Preparing to unpack .../gnupg-agent_2.2.19-3ubuntu2.2_all.deb ... Unpacking gnupg-agent (2.2.19-3ubuntu2.2) ... apt-transport-https (2.0.9) 설정하는 중입니다 ... gnupg-agent (2.2.19-3ubuntu2.2) 설정하는 중입니다 ...
▶ Docker 사이트 가이드 문서에 첫 번째 표기된 apt-get install을 통해서 기본적인 패키지를 설치하도록 합니다. 해당 apt-get install을 통해서 설치되는 항목은 다음과 같습니다.
- apt-transport-https : 패키지 관리자가 https를 통해 데이터 및 패키지에 접근 가능
- curl : 특정 웹사이트에서 데이터를 다운로드할 때 사용
- software-properties-common : *PPA를 추가하거나 제거할 때 사용
- gnupg-agent : GnuPG key를 관리하는 agent
- ca-certificates : ca-certificate는 certificate authority에서 발행된 디지털 서명. SSL 인증서의 PEM 파일이 포함되어 있어 SSL 기반 앱이 SSL 연결이 되어있는지 확인root@docker-ubuntu:~# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - OK
▶ curl 명령어를 통해서 GnuPG key Agent가 인증서를 저장하게 됩니다.
root@docker-ubuntu:~# apt-key fingerprint 0EBFCD88 pub rsa4096 2017-02-22 [SCEA] 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid [ unknown] Docker Release (CE deb) <docker@docker.com> sub rsa4096 2017-02-22 [S]
▶ curl 명령어를 통해서 디지털 인증서가 잘 적용됐는지 확인을 위해 fingerprint를 이용해 확인합니다.
root@docker-ubuntu:~# add-apt-repository \ > "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ > $(lsb_release -cs) \ > stable" 받기:1 https://download.docker.com/linux/ubuntu focal InRelease [57.7 kB] 기존:2 http://kr.archive.ubuntu.com/ubuntu focal InRelease 받기:3 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages [27.3 kB] 기존:4 http://kr.archive.ubuntu.com/ubuntu focal-updates InRelease 기존:5 http://kr.archive.ubuntu.com/ubuntu focal-backports InRelease 기존:6 http://security.ubuntu.com/ubuntu focal-security InRelease 내려받기 84.9 k바이트, 소요시간 2초 (48.4 k바이트/초) 패키지 목록을 읽는 중입니다... 완료
▶ URL 등록을 위해 add-apt-repository에서 해당 내역을 추가하고 실행합니다.
> "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
> $(lsb_release -cs) \
> stable"root@docker-ubuntu:~# apt-get update 기존:1 https://download.docker.com/linux/ubuntu focal InRelease 기존:2 http://kr.archive.ubuntu.com/ubuntu focal InRelease 기존:3 http://kr.archive.ubuntu.com/ubuntu focal-updates InRelease 기존:4 http://kr.archive.ubuntu.com/ubuntu focal-backports InRelease 기존:5 http://security.ubuntu.com/ubuntu focal-security InRelease 패키지 목록을 읽는 중입니다... 완료
▶ 신규로 등록한 Web 페이지를 통해서 Docker 패키지를 다운로드하기 전에 apt-get update를 통해 동기화합니다.
root@docker-ubuntu:~# apt-get install docker-ce docker-ce-cli containerd.io 패키지 목록을 읽는 중입니다... 완료 의존성 트리를 만드는 중입니다 상태 정보를 읽는 중입니다... 완료 다음의 추가 패키지가 설치될 것입니다 : docker-buildx-plugin docker-ce-rootless-extras docker-compose-plugin git git-man liberror-perl pigz slirp4netns 제안하는 패키지: aufs-tools cgroupfs-mount | cgroup-lite git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-cvs git-mediawiki git-svn 다음 새 패키지를 설치할 것입니다: containerd.io docker-buildx-plugin docker-ce docker-ce-cli docker-ce-rootless-extras docker-compose-plugin git git-man liberror-perl pigz slirp4netns 0개 업그레이드, 11개 새로 설치, 0개 제거 및 76개 업그레이드 안 함. 115 M바이트 아카이브를 받아야 합니다. 이 작업 후 434 M바이트의 디스크 공간을 더 사용하게 됩니다. 계속 하시겠습니까? [Y/n] y 받기:1 https://download.docker.com/linux/ubuntu focal/stable amd64 containerd.io amd64 1.6.20-1 [28.3 MB] 받기:2 http://kr.archive.ubuntu.com/ubuntu focal/universe amd64 pigz amd64 2.4-1 [57.4 kB] 받기:3 https://download.docker.com/linux/ubuntu focal/stable amd64 docker-buildx-plugin amd64 0.10.4-1~ubuntu.20.04~focal [25.9 MB] 받기:4 http://kr.archive.ubuntu.com/ubuntu focal/main amd64 liberror-perl all 0.17029-1 [26.5 kB] 받기:5 http://kr.archive.ubuntu.com/ubuntu focal-updates/main amd64 git-man all 1:2.25.1-1ubuntu3.10 [887 kB] 받기:6 https://download.docker.com/linux/ubuntu focal/stable amd64 docker-ce-cli amd64 5:23.0.4-1~ubuntu.20.04~focal [13.2 MB] 받기:7 https://download.docker.com/linux/ubuntu focal/stable amd64 docker-ce amd64 5:23.0.4-1~ubuntu.20.04~focal [22.0 MB] 받기:8 http://kr.archive.ubuntu.com/ubuntu focal-updates/main amd64 git amd64 1:2.25.1-1ubuntu3.10 [4,534 kB] 받기:9 https://download.docker.com/linux/ubuntu focal/stable amd64 docker-ce-rootless-extras amd64 5:23.0.4-1~ubuntu.20.04~focal [8,779 kB] 받기:10 https://download.docker.com/linux/ubuntu focal/stable amd64 docker-compose-plugin amd64 2.17.2-1~ubuntu.20.04~focal [10.9 MB] 받기:11 http://kr.archive.ubuntu.com/ubuntu focal/universe amd64 slirp4netns amd64 0.4.3-1 [74.3 kB] 내려받기 115 M바이트, 소요시간 1분 6초 (1,743 k바이트/초) Selecting previously unselected package pigz. (데이터베이스 읽는중 ...현재 187542개의 파일과 디렉터리가 설치되어 있습니다.) Preparing to unpack .../00-pigz_2.4-1_amd64.deb ... Unpacking pigz (2.4-1) ... Selecting previously unselected package containerd.io. Preparing to unpack .../01-containerd.io_1.6.20-1_amd64.deb ... Unpacking containerd.io (1.6.20-1) ... Selecting previously unselected package docker-buildx-plugin. Preparing to unpack .../02-docker-buildx-plugin_0.10.4-1~ubuntu.20.04~focal_amd64.deb ... Unpacking docker-buildx-plugin (0.10.4-1~ubuntu.20.04~focal) ... Selecting previously unselected package docker-ce-cli. Preparing to unpack .../03-docker-ce-cli_5%3a23.0.4-1~ubuntu.20.04~focal_amd64.deb ... Unpacking docker-ce-cli (5:23.0.4-1~ubuntu.20.04~focal) ... Selecting previously unselected package docker-ce. Preparing to unpack .../04-docker-ce_5%3a23.0.4-1~ubuntu.20.04~focal_amd64.deb ... Unpacking docker-ce (5:23.0.4-1~ubuntu.20.04~focal) ... Selecting previously unselected package docker-ce-rootless-extras. Preparing to unpack .../05-docker-ce-rootless-extras_5%3a23.0.4-1~ubuntu.20.04~focal_amd64.deb ... Unpacking docker-ce-rootless-extras (5:23.0.4-1~ubuntu.20.04~focal) ... Selecting previously unselected package docker-compose-plugin. Preparing to unpack .../06-docker-compose-plugin_2.17.2-1~ubuntu.20.04~focal_amd64.deb ... Unpacking docker-compose-plugin (2.17.2-1~ubuntu.20.04~focal) ... Selecting previously unselected package liberror-perl. Preparing to unpack .../07-liberror-perl_0.17029-1_all.deb ... Unpacking liberror-perl (0.17029-1) ... Selecting previously unselected package git-man. Preparing to unpack .../08-git-man_1%3a2.25.1-1ubuntu3.10_all.deb ... Unpacking git-man (1:2.25.1-1ubuntu3.10) ... Selecting previously unselected package git. Preparing to unpack .../09-git_1%3a2.25.1-1ubuntu3.10_amd64.deb ... Unpacking git (1:2.25.1-1ubuntu3.10) ... Selecting previously unselected package slirp4netns. Preparing to unpack .../10-slirp4netns_0.4.3-1_amd64.deb ... Unpacking slirp4netns (0.4.3-1) ... slirp4netns (0.4.3-1) 설정하는 중입니다 ... liberror-perl (0.17029-1) 설정하는 중입니다 ... docker-buildx-plugin (0.10.4-1~ubuntu.20.04~focal) 설정하는 중입니다 ... containerd.io (1.6.20-1) 설정하는 중입니다 ... Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service → /lib/systemd/system/containerd.service. docker-compose-plugin (2.17.2-1~ubuntu.20.04~focal) 설정하는 중입니다 ... docker-ce-cli (5:23.0.4-1~ubuntu.20.04~focal) 설정하는 중입니다 ... pigz (2.4-1) 설정하는 중입니다 ... git-man (1:2.25.1-1ubuntu3.10) 설정하는 중입니다 ... docker-ce-rootless-extras (5:23.0.4-1~ubuntu.20.04~focal) 설정하는 중입니다 ... docker-ce (5:23.0.4-1~ubuntu.20.04~focal) 설정하는 중입니다 ... Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service. Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /lib/systemd/system/docker.socket. git (1:2.25.1-1ubuntu3.10) 설정하는 중입니다 ... Processing triggers for man-db (2.9.1-1) ... Processing triggers for systemd (245.4-4ubuntu3.20) ...
▶ Docker 엔진 설치를 위해서 아래와 같은 패키지를 apt-get install docker-ce docker-ce-cli containerd.io을 통해 설치하도록 합니다.
* docker-ce : Docker CE 패키지(Docker Engine)
* docker-ce-cli : Docker CLI 패키지
* containerd.io : ctr(디버깅 목적으로만 사용, 기능 제한적) +nerdctl(도커명령어 포함)root@docker-ubuntu:~# docker version Client: Docker Engine - Community Version: 23.0.4 API version: 1.42 Go version: go1.19.8 Git commit: f480fb1 Built: Fri Apr 14 10:32:23 2023 OS/Arch: linux/amd64 Context: default Server: Docker Engine - Community Engine: Version: 23.0.4 API version: 1.42 (minimum version 1.12) Go version: go1.19.8 Git commit: cbce331 Built: Fri Apr 14 10:32:23 2023 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.6.20 GitCommit: 2806fc1057397dbaeefbea0e4e17bddfbd388f38 runc: Version: 1.1.5 GitCommit: v1.1.5-0-gf19387a docker-init: Version: 0.19.0 GitCommit: de40ad0
▶ Docker 엔진 설치가 완료되었으면 Docker version 명령어를 통해서 23.0.4가 설치된 것을 확인할 수 있습니다.
guru@docker-ubuntu:~$ docker ps permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
▶ 일반 유저계정인 guru 계정에서 dock ps를 통해서 docker 컨테이너 프로세스 확인 시 permission 에러가 발생하면 그룹에 해당 계정을 추가하도록 합니다.
root@docker-ubuntu:~# cat /etc/group | grep -i docker docker:x:996:
▶ /etc/group를 통해서 docker 그룹 항목을 확인합니다.
root@docker-ubuntu:~# usermod -aG docker guru root@docker-ubuntu:~# cat /etc/group | grep -i docker docker:x:996:guru
▶ usermod -aG docker guru 명령어를 통해서 guru 일반계정을 docker 그룹에 넣어줍니다.
guru@docker-ubuntu:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
▶ 일밥 유저계정 guru에서도 docker ps 명령어를 통해서 컨테이너 서비스 이미지를 확인할 수 있습니다.(현재 배포된 이미지 x)
PS. 포스팅의 내용은 제 기준으로 작성한 것이기 때문에 참고해서 보시면 감사하겠습니다.
포스팅 과정의 오류 및 오타 그리고 궁금한 점에 대해서는 댓글 남겨주세요.
2024.01.24 - [Programming and Database/Docker And Kubernetes] - Docker Virtualbox Ubuntu OS 설치하기
2024.01.24 - [Programming and Database/Docker And Kubernetes] - Docker Virtualbox Cent OS 설치하기
728x90반응형'Programming and Database > Docker And Kubernetes' 카테고리의 다른 글
Docker 컨테이너 Centos에 설치하기 (8) 2024.01.29 Docker Virtualbox Cent OS 설치하기 (2) 2024.01.25 Docker Virtualbox Ubuntu OS 설치하기 (10) 2024.01.24 Docker Virtualbox 설치 및 Centos용 VM 생성하기(2) (4) 2024.01.23 Docker Virtualbox 설치 및 Ubuntu용 VM 생성하기(1) (1) 2024.01.22