Ubuntu 환경에서 Docker 설치를 조금은 색다르게 해보고자 한다.

 

여러 편한 방법이 있겠지만, 직접 버전을 선택해서 패키지 파일을 내려 받아 설치하는 것이다.

특정 버전을 직접 관리하면서 사용할 수 있다는 장점이 있다.

 

 

1. Ubuntu 버전 확인

  - 지금 사용하고 있는 버전이 어떤 것인지 확인을 해보자.

 

❯ lsb_release -a

No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.6 LTS
Release: 20.04
Codename: focal

 

 

2. Docker 패키지 파일 확인

  - 어떤 버전이 있는지, 그리고 다운로드 주소가 어떻게 되는지 확인 해보자.

    . https://download.docker.com/linux/ubuntu/dists/

 

 

  - 우리가 확인해야할 패키지는 다음의 3 종류이다.

    . containerd

    . docker-ce-cli

    . docker-ce

 

 

3. 패키지 다운로드 및 설치

  - 이제 내려받아서 설치하자.

 

❯ wget https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/containerd.io_1.6.21-1_amd64.deb
❯ wget https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/docker-ce-cli_23.0.6-1~ubuntu.20.04~focal_amd64.deb
❯ wget https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/docker-ce_23.0.6-1~ubuntu.20.04~focal_amd64.deb

❯ sudo dpkg --install ./containerd.io_1.6.21-1_amd64.deb
❯ sudo dpkg --install ./docker-ce-cli_23.0.6-1~ubuntu.20.04~focal_amd64.deb
❯ sudo dpkg --install ./docker-ce_23.0.6-1~ubuntu.20.04~focal_amd64.deb

 

 

4. 실행 권한 설정

  - root가 아닌 현재 사용자 계정에서 docker를 사용하기 위해 그룹 설정을 해주자.

 

❯ sudo usermod -aG docker $USER

 

  - 설정한 다음, 재부팅 또는 로그 오프 후 재로그인을 해줘야 한다.

  - 그리고 잘 되는지 확인해보자.

 

❯ docker --version

Docker version 23.0.6, build ef23cbc

 

 

5. 실습을 위한 파일 작성

  - docker build 실습을 위한 파일 2개를 다음과 같이 준비하자.

 

❯ nano index.html

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Kubernetes</title>
</head>
<body>
  <h2>Hello, This is K8s World</h2>
</body>
</html>

 

❯ nano Dockerfile

FROM nginx:latest

COPY ./index.html /usr/share/nginx/html/index.html

 

 

6. docker build

  - 이미지 생성해보자.

  - 마지막에 . 찍어주는 것 잊지 말자 ^^

 

❯ docker build -t webserver .

DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

Sending build context to Docker daemon  3.072kB
Step 1/2 : FROM nginx:latest
latest: Pulling from library/nginx
9e3ea8720c6d: Pull complete 
bf36b6466679: Pull complete 
15a97cf85bb8: Pull complete 
9c2d6be5a61d: Pull complete 
6b7e4a5c7c7a: Pull complete 
8db4caa19df8: Pull complete 
Digest: sha256:480868e8c8c797794257e2abd88d0f9a8809b2fe956cbfbc05dcc0bca1f7cd43
Status: Downloaded newer image for nginx:latest
 ---> 448a08f1d2f9
Step 2/2 : COPY ./index.html /usr/share/nginx/html/index.html
 ---> 32317f8e7b5c
Successfully built 32317f8e7b5c
Successfully tagged webserver:latest

 

  - 응?! DEPRECATED ?! BuildKit을 사용해야 한단다.

 

 

7. BuildKit 설치

  - docker 패키지 살펴볼 때 눈치 빠르신 분은 이미 찾았을 것이다.

 

 

❯ wget https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/docker-buildx-plugin_0.10.4-1~ubuntu.20.04~focal_amd64.deb

❯ sudo dpkg --install ./docker-buildx-plugin_0.10.4-1~ubuntu.20.04~focal_amd64.deb

 

 

 

8 docker buildx build

  - 이제 새롭게 빌드해보자. 명령어는 크게 다르지 않다.

 

❯ docker buildx build -t webserver2 .

[+] Building 0.4s (7/7) FINISHED                                                                                                                                
 => [internal] load build definition from Dockerfile                                                                                                       0.1s
 => => transferring dockerfile: 107B                                                                                                                            0.0s
 => [internal] load .dockerignore                                                                                                                                  0.1s
 => => transferring context: 2B                                                                                                                                    0.0s
 => [internal] load metadata for docker.io/library/nginx:latest                                                                                      0.0s
 => [internal] load build context                                                                                                                                   0.1s
 => => transferring context: 199B                                                                                                                                0.0s
 => [1/2] FROM docker.io/library/nginx:latest                                                                                                              0.2s
 => [2/2] COPY ./index.html /usr/share/nginx/html/index.html                                                                                     0.1s
 => exporting to image                                                                                                                                                 0.1s
 => => exporting layers                                                                                                                                                0.1s
 => => writing image sha256:3f0130968d1e78db17dc061d1363da5f49c8157a1a73ffb10d923d9d7af16af               0.0s
 => => naming to docker.io/library/webserver2 

 

여기까지~

 

 

간만에 docker build 해봤다가 명령어가 deprecated 되었다고 해서 깜짝 놀라 급히 정리해봤다 ^^

 

 

반응형

+ Recent posts