CentOS : https://docs.docker.com/engine/install/centos/
이미 설치된 Docker 삭제하기
$ sudo yum remove docker docker-engine docker.io containerd runc
Loaded plugins: fastestmirror
No Match for argument: docker
No Match for argument: docker-engine
No Match for argument: docker.io
No Match for argument: containerd
No Match for argument: runc
No Packages marked for removal
1. Docker 레포지토리 추가하기
1) 패키지 정보를 갱신
$ sudo yum -y update
2) Docker 패키지 설치
Docker 레포지토리는 HTTPS를 통해 제공된다.
APT( Advanced Package Tool )는 HTTPS 프로토콜을 사용하여 패키지를 다운로드할 수 있도록 지원한다. 이 패키지는 HTTPS를 통해 안전하게 패키지를 가져오고 배포하기 위해 사용된다.
$ sudo yum install -y yum-utils
$ sudo yum install -y epel-release
$ sudo yum install -y apt-transport-https
$ sudo yum install -y ca-certificates
$ sudo yum install -y curl
$ sudo yum install -y gnupg
$ sudo yum install -y redhat-lsb-core
3) GPG키 추가
Docker가 제공하는 패키지의 서명을 검증할 수 있도록 GPG 키를 추가
$ curl -fsSL https://download.docker.com/linux/centos/gpg | sudo gpg --import -
gpg: directory `/root/.gnupg' created
gpg: new configuration file `/root/.gnupg/gpg.conf' created
gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/root/.gnupg/secring.gpg' created
gpg: keyring `/root/.gnupg/pubring.gpg' created
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 621E9F35: public key "Docker Release (CE rpm) <docker@docker.com>" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
Docker의 공식 GPG 키를 다운로드하고, gpg 명령을 사용하여 해당 키를 시스템에 추가합니다. 그런 다음 Docker의 패키지를 사용할 때 GPG 키를 사용하여 패키지의 정당성을 확인할 수 있습니다.
앞서 추가한 GPG 키가 제대로 설정되지 않았을 경우 Docker 설치 시 오류가 발생합니다. 키가 제대로 설정되었는지 확인하기 위해 다음 명령어를 입력해 Docker의 지문( fingerprint )을 검색해 봅니다.
$ sudo rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n'
gpg-pubkey-f4a80eb5-53a7ff4b --> gpg(CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>)
gpg-pubkey-352c64e5-52ae6884 --> gpg(Fedora EPEL (7) <epel@fedoraproject.org>)
gpg-pubkey-621e9f35-58adea78 --> gpg(Docker Release (CE rpm) <docker@docker.com>)
CentOS 7 시스템에 Docker의 공개 키를 가져와서 시스템에 추가합니다. 이후에 Docker를 설치할 때 사용할 수 있습니다.
2. Docker 설치하기
패키지 리스트 갱신
$ sudo yum -y update
Docker CE 저장소 생성
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Docker CE 설치
$ sudo yum install -y docker-ce
$ sudo yum install docker-ce-cli
$ sudo yum install containerd.io
Docker 실행
$ sudo systemctl start docker
$ sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since 목 2024-03-07 14:50:10 KST; 7s ago
Docs: https://docs.docker.com
Main PID: 4062 (dockerd)
Tasks: 7
Memory: 28.6M
CGroup: /system.slice/docker.service
└─4062 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
3월 07 14:50:09 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
3월 07 14:50:09 localhost.localdomain dockerd[4062]: time="2024-03-07T14:50:09.980434169+09:00" level=info msg="Starting up"
3월 07 14:50:10 localhost.localdomain dockerd[4062]: time="2024-03-07T14:50:10.034025823+09:00" level=info msg="Loading containers: start."
3월 07 14:50:10 localhost.localdomain dockerd[4062]: time="2024-03-07T14:50:10.623993423+09:00" level=info msg="Firewalld: interface docker0 already part o...eturning"
3월 07 14:50:10 localhost.localdomain dockerd[4062]: time="2024-03-07T14:50:10.706526825+09:00" level=info msg="Loading containers: done."
3월 07 14:50:10 localhost.localdomain dockerd[4062]: time="2024-03-07T14:50:10.715191898+09:00" level=info msg="Docker daemon" commit=f417435 containerd-sn...on=25.0.3
3월 07 14:50:10 localhost.localdomain dockerd[4062]: time="2024-03-07T14:50:10.715255240+09:00" level=info msg="Daemon has completed initialization"
3월 07 14:50:10 localhost.localdomain systemd[1]: Started Docker Application Container Engine.
3월 07 14:50:10 localhost.localdomain dockerd[4062]: time="2024-03-07T14:50:10.751085464+09:00" level=info msg="API listen on /run/docker.sock"
Hint: Some lines were ellipsized, use -l to show in full.
Docker가 설치되었는지 확인합니다.
$ sudo docker version
Client: Docker Engine - Community
Version: 25.0.3
API version: 1.44
Go version: go1.21.6
Git commit: 4debf41
Built: Tue Feb 6 21:17:10 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 25.0.3
API version: 1.44 (minimum version 1.24)
Go version: go1.21.6
Git commit: f417435
Built: Tue Feb 6 21:16:08 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.28
GitCommit: ae07eda36dd25f8a1b98dfbf587313b99c0190bb
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Docker가 정상적으로 설치되었다면 hello-world 컨테이너를 실행하고, 이미지 인식 및 컨테이너 실행 여부를 테스트 해봅니다.
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:d000bc569937abbe195e20322a0bde6b2922d805332fd6d8a68b19f524b7d21d
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Docker 컨테이너는 간단한 "hello-world" 메시지를 출력하고 종료됩니다. 이는 Docker가 정상적으로 설치되었는지 확인하는 간단한 테스트입니다. 만약 설치 및 구성이 올바르게 되어 있다면, "Hello from Docker!"와 같은 메시지를 출력할 것입니다.
3. Docker Compose 설치하기
https://docs.docker.com/compose/install/
다음으로 Docker Compose를 설치합니다.
최신 설치 방법에 대해서는 다음 URL을 참고하길 바랍니다.
$ sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 58.6M 100 58.6M 0 0 4069k 0 0:00:14 0:00:14 --:--:-- 4813k
여기에서는 가장 최신버전을 설치하도록 하겠습니다.
실행 파일에 실행 권한을 부여하여 docker-compose가 설치되었는지 확인합니다.
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo docker-compose version
Docker Compose version v2.24.7
4. Docker 커맨드를 sudo 없이 실행되도록 하기
설치 직후 상태에서는 docker 커맨드를 sudo 없이 실행하면 다음과 같은 오류가 발생합니다.
$ docker version
Client: Docker Engine - Community
Version: 25.0.3
API version: 1.44
Go version: go1.21.6
Git commit: 4debf41
Built: Tue Feb 6 21:17:10 2024
OS/Arch: linux/amd64
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.24/version": dial unix /var/run/docker.sock: connect: permission denied
Docker 커맨드를 sudo 없이 실행하려면 해당 사용자를 docker 그룹에 추가해야 합니다.
그러나 일반적으로 Docker 서버는 root 권한으로 동작하며, 컨테이너의 기동 방법에 따라 호스트 환경의 root 권한을 사용해야 실행할 수 있습니다.
따라서 docker 그룹에 추가할 경우 호스트 환경의 root 권한을 제공하는 것과 같다는 점에 주의해야 합니다.
현재 로그인한 사용자를 docker 그룹에 추가하려면 다음 커맨드를 실행합니다.
$ sudo usermod -aG docker "$(id -nu)"
일단 여기서 로그아웃 후 다시 로그인 합니다.
로그인 후 id 커맨드를 실행하여 docker 그룹이 추가되어 있는지 확인합니다.
$ id -nG
사용자_계정 docker
커맨드를 sudo 없이 수행할 수 있는지 확인합니다.
$ docker version
Client: Docker Engine - Community
Version: 25.0.3
API version: 1.44
Go version: go1.21.6
Git commit: 4debf41
Built: Tue Feb 6 21:17:10 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 25.0.3
API version: 1.44 (minimum version 1.24)
Go version: go1.21.6
Git commit: f417435
Built: Tue Feb 6 21:16:08 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.28
GitCommit: ae07eda36dd25f8a1b98dfbf587313b99c0190bb
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0
'LINUX > CentOS' 카테고리의 다른 글
[CentOS] Apache Tomcat 설치 (0) | 2024.04.11 |
---|---|
[CentOS7] Oracle JDK 1.8 설치 및 환경변수 설정 (0) | 2024.04.11 |
[CentOS] Redis 설치 (0) | 2023.12.18 |
[LINUX] CentOS7 - MediaWiki 설치 및 사용 (0) | 2023.08.07 |
[CentOS7] 사용자 계정 생성 및 Directory 만들기 (0) | 2023.07.31 |