반응형
한번 UTM에 설치한 가상머신(VM) Ubuntu에 Docker Community Edition Version을 한번 설치해 보겠습니다.
Docker Community Edition 설치해보기 (Terminal ver.)
Ubuntu에서 Terminal을 연 다음, 한번 설치해 보겠습니다.
- 먼저, 현재 우분투 버전을 확인해줍니다.
cat /etc/lsb-release
toby@tobykakao:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.1 LTS"
- 최신 패키지로 업데이트를 수행해줍니다.
sudo apt-get update
toby@tobykakao:~$ sudo apt-get update
- Docker 설치를 위해 Docker와 의존성이 있는 패키지들을 미리 설치해 주겠습니다.
sudo apt-get install -y
toby@tobykakao:~$ sudo apt-get install -y
- 도커에서 제공하는 공식 GPG key를 추가해줍니다. GPG Key는 apt가 패키지를 인증할때 사용하는 키 리스트를 관리합니다.
- apt-key를 통해 지정 사이트에서 새로운 키를 추가해줍니다.
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- 추가된 gpg-key 확인
/etc/apt/trusted.gpg
--------------------
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]
/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg
------------------------------------------------------
pub rsa4096 2012-05-11 [SC]
8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092
uid [ unknown] Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>
/etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg
------------------------------------------------------
pub rsa4096 2018-09-17 [SC]
F6EC B376 2474 EDA9 D21B 7022 8719 20D1 991B C93C
uid [ unknown] Ubuntu Archive Automatic Signing Key (2018) <ftpmaster@ubuntu.com>
- 추가된 키중 첫번째 키를 선택하서 한번 조회해 보겠습니다.
sudo apt-key fingerprint 0EBFCD88
toby@tobykakao:~$ sudo apt-key fingerprint 0EBFCD88
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
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]
- Debian 계열의 Docker Repository PPA를 추가해주겠습니다.
- 에지 버전 설치시 다음 구문의 마지막의 stable edge 추가 매달 기능이 업데이트 되는 에지 버전은 버그 발생 가능성이 높아 안정화 (stable)버전 설치를 권장드립니다.
echo "deb [arch=arm64 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
- 패키지 목록을 update 해준후, Docker를 한번 설치해 주겠습니다.
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 한번 설치한 저장소를 보겠습니다.
apt-cache policy docker-ce
toby@tobykakao:~$ apt-cache policy docker-ce
docker-ce:
Installed: 5:27.3.1-1~ubuntu.24.04~noble
Candidate: 5:27.3.1-1~ubuntu.24.04~noble
Version table:
*** 5:27.3.1-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
100 /var/lib/dpkg/status
5:27.3.0-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
5:27.2.1-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
5:27.2.0-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
5:27.1.2-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
5:27.1.1-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
5:27.1.0-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
5:27.0.3-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
5:27.0.2-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
5:27.0.1-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
5:26.1.4-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
5:26.1.3-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
5:26.1.2-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
5:26.1.1-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
5:26.1.0-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
5:26.0.2-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
5:26.0.1-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
5:26.0.0-1~ubuntu.24.04~noble 500
500 https://download.docker.com/linux/ubuntu noble/stable arm64 Packages
- Docker Community Edition 설치
sudo apt-get -y install docker-ce
toby@tobykakao:~$ sudo apt-get -y install docker-ce
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
docker-ce is already the newest version (5:27.3.1-1~ubuntu.24.04~noble).
0 upgraded, 0 newly installed, 0 to remove and 31 not upgraded.
- Docker Version & Docker Demon 상태 확인
sudo docker version
toby@tobykakao:~$ sudo docker version
Client: Docker Engine - Community
Version: 27.3.1
API version: 1.47
Go version: go1.22.7
Git commit: ce12230
Built: Fri Sep 20 11:41:54 2024
OS/Arch: linux/arm64
Context: default
Server: Docker Engine - Community
Engine:
Version: 27.3.1
API version: 1.47 (minimum version 1.24)
Go version: go1.22.7
Git commit: 41ca978
Built: Fri Sep 20 11:41:54 2024
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.7.22
GitCommit: 7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311c
runc:
Version: 1.1.14
GitCommit: v1.1.14-0-g2c9f560
docker-init:
Version: 0.19.0
GitCommit: de40ad0
sudo systemctl status docker
toby@tobykakao:~$ sudo systemctl status docker
\u25cf docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: e>
Active: active (running) since Tue 2024-10-08 06:29:22 UTC; 3min 12s ago
TriggeredBy: \u25cf docker.socket
Docs: https://docs.docker.com
Main PID: 6151 (dockerd)
Tasks: 12
Memory: 21.8M (peak: 25.3M)
CPU: 448ms
CGroup: /system.slice/docker.service
\u2514\u25006151 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/cont>
Oct 08 06:29:21 tobykakao dockerd[6151]: time="2024-10-08T06:29:21.949221604Z" >
Oct 08 06:29:21 tobykakao dockerd[6151]: time="2024-10-08T06:29:21.950768736Z" >
Oct 08 06:29:22 tobykakao dockerd[6151]: time="2024-10-08T06:29:22.037603419Z" >
Oct 08 06:29:22 tobykakao dockerd[6151]: time="2024-10-08T06:29:22.382201927Z" >
Oct 08 06:29:22 tobykakao dockerd[6151]: time="2024-10-08T06:29:22.403118720Z" >
Oct 08 06:29:22 tobykakao dockerd[6151]: time="2024-10-08T06:29:22.403148719Z" >
Oct 08 06:29:22 tobykakao dockerd[6151]: time="2024-10-08T06:29:22.403166677Z" >
Oct 08 06:29:22 tobykakao dockerd[6151]: time="2024-10-08T06:29:22.403251384Z" >
Oct 08 06:29:22 tobykakao dockerd[6151]: time="2024-10-08T06:29:22.443517170Z" >
Oct 08 06:29:22 tobykakao systemd[1]: Started docker.service - Docker Applicati>
lines 1-22/22 (END)
- 도커는 권한이 있는 binary 이기 때문에 실행시 sudo를 명시하고 사용해야 합니다.
- 다음 명령은 docker group에 현재 사용자를 그룹에 추가하는 명령어를 입력합니다.
sudo usermod -aG docker $(whoami)
sudo systemctl restart docker
toby@tobykakao:~$ sudo usermod -aG docker $(whoami)
toby@tobykakao:~$ sudo systemctl restart docker
sudo systemctl status docker
toby@tobykakao:~$ sudo systemctl status docker
docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: e>
Active: active (running) since Tue 2024-10-08 06:34:50 UTC; 7s ago
TriggeredBy: \u25cf docker.socket
Docs: https://docs.docker.com
Main PID: 6561 (dockerd)
Tasks: 11
Memory: 19.9M (peak: 21.6M)
CPU: 412ms
CGroup: /system.slice/docker.service
\u2514\u25006561 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/cont>
Oct 08 06:34:50 tobykakao dockerd[6561]: time="2024-10-08T06:34:50.116420790Z" >
Oct 08 06:34:50 tobykakao dockerd[6561]: time="2024-10-08T06:34:50.116728745Z" >
Oct 08 06:34:50 tobykakao dockerd[6561]: time="2024-10-08T06:34:50.539155870Z" >
Oct 08 06:34:50 tobykakao dockerd[6561]: time="2024-10-08T06:34:50.615004596Z" >
Oct 08 06:34:50 tobykakao dockerd[6561]: time="2024-10-08T06:34:50.630171766Z" >
Oct 08 06:34:50 tobykakao dockerd[6561]: time="2024-10-08T06:34:50.630198557Z" >
Oct 08 06:34:50 tobykakao dockerd[6561]: time="2024-10-08T06:34:50.630216474Z" >
Oct 08 06:34:50 tobykakao dockerd[6561]: time="2024-10-08T06:34:50.630249098Z" >
Oct 08 06:34:50 tobykakao dockerd[6561]: time="2024-10-08T06:34:50.656755022Z" >
Oct 08 06:34:50 tobykakao systemd[1]: Started docker.service - Docker Applicati>
sudo systemctl status containerd.service
toby@tobykakao:~$ sudo systemctl status containerd.service \u25cf containerd.service - containerd container runtime Loaded: loaded (/usr/lib/systemd/system/containerd.service; enabled; prese> Active: active (running) since Tue 2024-10-08 06:29:21 UTC; 6min ago Docs: https://containerd.io Main PID: 5818 (containerd) Tasks: 11 Memory: 12.9M (peak: 14.2M) CPU: 883ms CGroup: /system.slice/containerd.service \u2514\u25005818 /usr/bin/containerd Oct 08 06:29:21 tobykakao containerd[5818]: time="2024-10-08T06:29:21.003640444> Oct 08 06:29:21 tobykakao containerd[5818]: time="2024-10-08T06:29:21.003647236> Oct 08 06:29:21 tobykakao containerd[5818]: time="2024-10-08T06:29:21.003653944> Oct 08 06:29:21 tobykakao containerd[5818]: time="2024-10-08T06:29:21.003659402> Oct 08 06:29:21 tobykakao containerd[5818]: time="2024-10-08T06:29:21.003666860> Oct 08 06:29:21 tobykakao containerd[5818]: time="2024-10-08T06:29:21.003673360> Oct 08 06:29:21 tobykakao containerd[5818]: time="2024-10-08T06:29:21.003832273> Oct 08 06:29:21 tobykakao containerd[5818]: time="2024-10-08T06:29:21.003867731> Oct 08 06:29:21 tobykakao containerd[5818]: time="2024-10-08T06:29:21.003921563> Oct 08 06:29:21 tobykakao systemd[1]: Started containerd.service - containerd c>
- 만약 여기서 permission denied가 떴다면? → 세션에서는 변경사항이 적용이 안되어 있을수도 있습니다.
- 이때, newgrp 명령어를 사용하여 변경사항을 즉시 적용합니다.
toby@tobykakao:~$ docker version
Client: Docker Engine - Community
Version: 27.3.1
API version: 1.47
Go version: go1.22.7
Git commit: ce12230
Built: Fri Sep 20 11:41:54 2024
OS/Arch: linux/arm64
Context: default
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.47/version": dial unix /var/run/docker.sock: connect: permission denied
newgrp docker
- 그러면 이제 로그인이 된걸 알수 있습니다, 이제 계정을 로그하웃 하고 다시 로그인한 후로부터 sudo 없이도 docker 명령어 사용이 가능합니다.
toby@tobykakao:~$ docker version
Client: Docker Engine - Community
Version: 27.3.1
API version: 1.47
Go version: go1.22.7
Git commit: ce12230
Built: Fri Sep 20 11:41:54 2024
OS/Arch: linux/arm64
Context: default
Server: Docker Engine - Community
Engine:
Version: 27.3.1
API version: 1.47 (minimum version 1.24)
Go version: go1.22.7
Git commit: 41ca978
Built: Fri Sep 20 11:41:54 2024
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.7.22
GitCommit: 7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311c
runc:
Version: 1.1.14
GitCommit: v1.1.14-0-g2c9f560
docker-init:
Version: 0.19.0
GitCommit: de40ad0
- 여기서 추가 구성작업으로 보안 설정 모듈인 SELinux라고 있습니다.
- 도커 사용 과정에서 Permission Denied 같은 권한 거부 오류가 발생하는 경우가 있습니다. 이것을 방지하기 위해서는 현재 SELinux 설정값을 호가인해보고 enforcing 모드라면 permissive 모드로 변경합니다.
- 강제 모드 (enforcing mode) 상태에서는 보안 기능을 가지고 있는 SELinux 정책이 활성화되어 강제적으로 그 정책을 따르게 하여 오류가 발생합니다. 허용모드 (permissive mode)로 설정하면 접근 제어 위반 발생 시 로그 기록만 수행하고 강제 종료(오류)하지 않습니다.
- SELinux 실행 모드 확인
toby@tobykakao:~$ sestatus
- 만약 enforcing이 되어 있다면? 아래의 명령어를 수행해서 변경합니다.
# permissive mode(0), enforcing mode(1)
toby@tobykakao:~$ sudo sentenforce 0
Docker Community Edition 설치해보기 (Script ver.)
Docker 웹사이트에서 지공하는 스크립트를 이용하여 간단하게 docker-ce를 설치 할 수 있습니다.
curl -fsSL https://get.docker.com -o get-docker.sh
vi get-docker.sh
# docker 자동설치 shell script
toby@tobykakao:~$ curl -fsSL https://get.docker.com -o get-docker.sh
toby@tobykakao:~$ vi get-docker.sh
- 이렇게 아래에 뜨는 script 순서대로 터미널창을 열어서 명령어를 입력해주면 됩니다.
# To install the latest stable versions of Docker CLI, Docker Engine, and their
# dependencies:
#
# 1. download the script
#
# $ curl -fsSL https://get.docker.com -o install-docker.sh
#
# 2. verify the script's content
#
# $ cat install-docker.sh
#
# 3. run the script with --dry-run to verify the steps it executes
#
# 4. run the script either as root, or using sudo to perform the installation.
#
# $ sudo sh install-docker.sh
- 그리고, 셀 스크립트 이므로 실행 권한이 필요합니다.
# 셀 스크립트 이므로 실행 권한 필요. x(execute) 권한 부여
chmod +x get-docker.sh
- 실행 권한을 부여 한 후, 도커 자동 설치 셀 스크립트을 실행합니다.
sudo sh get-docker.sh
- 도커 버전을 확인합니다.
# 도커 버전 확인
toby@tobykakao:~$ docker version
Client: Docker Engine - Community
Version: 27.3.1
API version: 1.47
Go version: go1.22.7
Git commit: ce12230
Built: Fri Sep 20 11:41:54 2024
OS/Arch: linux/arm64
Context: default
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.47/version": dial unix /var/run/docker.sock: connect: permission denied
- 먄약 permission denied가 뜨면?
1. 현재 사용자 Docker 그룹에 추가 확인
"permission denied" 오류는 현재 사용자가 Docker 그룹에 추가되었지만, 변경 사항이 아직 적용되지 않았거나 Docker 데몬에 접근할 권한이 없어서 발생하는 문제입니다.
- 현재 사용자 Docker 그룹에 추가 확인: 먼저 현재 사용자가 Docker 그룹에 제대로 추가되었는지 확인합니다.
groups $(whoami)
- 여기서 docker 그룹이 나열되어 있어야 합니다. 만약 나열되어 있지 않다면, 다음 명령어로 사용자를 다시 추가하세요.
sudo usermod -aG docker $(whoami)
2. 세션 재시작
- 사용자가 Docker 그룹에 추가된 후에도 기존 세션에서는 변경 사항이 반영되지 않으므로 로그아웃했다가 다시 로그인해야 합니다. 또는 아래 명령어로 세션을 재시작할 수 있습니다.
newgrp docker
3. Docker 데몬이 실행 중인지 확인
- Docker 데몬이 제대로 실행 중인지 확인해야 합니다. 데몬이 중지되어 있으면 권한이 있어도 연결이 안 될 수 있습니다.
sudo systemctl status docker
- Docker 데몬이 중지되어 있으면, 다음 명령어로 시작합니다.
sudo systemctl start docker
4. Docker 명령어 재실행
- 변경 사항을 적용한 후 다시 docker version 명령어를 실행해봅니다. 위단계를 모두 수행하면 Docker 권한 문제가 해결되고 정상적으로 작동할 것입니다.
docker version
그후, apt를 통해 설치한 Docker를 제거합니다.
sudo apt purge docker-ce
toby@tobykakao:~$ sudo apt purge docker-ce
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following package was automatically installed and is no longer required:
pigz
Use 'sudo apt autoremove' to remove it.
The following packages will be REMOVED:
docker-ce*
0 upgraded, 0 newly installed, 1 to remove and 31 not upgraded.
After this operation, 79.4 MB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 166965 files and directories currently installed.)
Removing docker-ce (5:27.3.1-1~ubuntu.24.04~noble) ...
(Reading database ... 166956 files and directories currently installed.)
Purging configuration files for docker-ce (5:27.3.1-1~ubuntu.24.04~noble) ...
또한 관련 Directory도 삭제합니다.
toby@tobykakao:~$ sudo rm -rf /var/lib/docker
ps. 그러면 다음글에선 Docker가 정상적으로 설치가 되었는지 확인하는 내용을 가지고 돌아오겠습니다.
반응형
'☁️ Cloud' 카테고리의 다른 글
[Docker] Docker 명령어 활용 Part.1 (0) | 2024.10.31 |
---|---|
[Cloud] Docker Installation Check (도커 설치 확인) (0) | 2024.10.11 |
[Cloud] Docker Install (도커 설치 with UTM, Ubuntu install) (0) | 2024.10.07 |
[Cloud] Kubernetes(쿠버네티스) & DevOps(데브옵스) Intro (0) | 2024.10.05 |
[Cloud] Virtualization(가상화), Container 기술 & Docker (0) | 2024.10.04 |