Docker 데스크탑 없이 macOS에 docker-engine을 설치하는 방법은 무엇입니까?

Docker 데스크탑 없이 macOS에 docker-engine을 설치하는 방법은 무엇입니까?

최근 Docker는 특정 유형의 사용자에게 Docker Desktop이 더 이상 무료가 아닐 것이라고 발표했습니다. 공지사항을 참조해주세요블로그 게시물.

Docker Desktop® 고유의 기능은 필요하지 않습니다. 저는 데비안이 설치된 노트북에서 도커를 사용하고 있는데 이 버전이면 충분합니다.

macOS에 Linux 버전의 Docker를 설치하는 방법이 있습니까?? 엔진과 CLI 도구가 필요합니다. 그게 전부입니다. 빌드 명령, 푸시, 태그, 실행, docker-compose 등을 실행합니다.

답변1

docker에 대한 대안이 있습니다.팟캐스트.

  1. 설치하다:brew install podman
  2. 가상 머신을 다운로드하고 준비합니다.podman machine init
  3. 가상 머신을 엽니다.podman machine start
  4. 도커 사용:podman run -d -p 8000:80 nginx
  5. 컨테이너 확인:podman ps
  6. 상호작용:curl localhost:8000

그것은 사용한다QEMU아래의 가상화 및 머신 설정을 위해페도라 코어OS기본적으로.

설치 후 기본 머신 및 가상화 환경 세부 정보에 액세스하려면:

cat ~/.config/containers/podman/machine/qemu/podman-machine-default.json

답변2

내 Macbook에서는 homebrew를 통해 docker를 설치했습니다.

brew install docker docker-compose docker-machine xhyve docker-machine-driver-xhyve

(이것은 docker Desktop이 non-free가 되기 전이었지만 여전히 작동한다고 생각합니다)

xhyve를 가상 머신으로 사용하므로 기본적으로 xhyve 내에서 Linux 배포판을 실행한 다음 해당 Linux 배포판 내에서 Docker를 실행합니다.

몇 가지 구성을 수행해야 합니다. 나는 따랐습니다.이 기사.

가상 머신을 생성하는 명령줄은 다음과 같습니다.

docker-machine create default --driver xhyve --xhyve-experimental-nfs-share=true --xhyve-disk-size "40000"

답변3

내가 아는 한 docker는 MacOS와 기능적으로 호환되지 않습니다. 내 Macbook에서 실행 중인 도커 데스크톱이 있고, 내가 아는 한 이 작업은 도커 데스크톱이 있는 Linux 가상 머신을 만들고 그 안에서 Docker 엔진을 실행하여 수행됩니다.

이는 Docker Desktop이 Docker 엔진 자체와 관련이 없는 "디스크 이미지 크기"를 포함한 리소스 할당 개념을 갖는 이유를 설명합니다.


macOS에 Linux 버전의 Docker를 설치하는 방법이 있습니까?

아니요, Linux 가상 머신이 없으면 불가능합니다. Docker는 래퍼이기 때문입니다.네임스페이스그리고cgroup이는 모두 Linux 개념이며 MacOS 커널에서는 구현되지 않습니다.

이 두 가지 기능은 컨테이너 기술의 핵심이므로 Docker가 아닌 다른 솔루션(Podman 포함)이 작동할 가능성은 거의 없습니다.Linux 가상 머신을 사용하지 않는 한.


Docker Desktop® 고유의 기능은 필요하지 않습니다.

내가 당신의 요구를 모르는 것일 수도 있습니다. 그러나 도커 데스크탑의 일부 기능이 "기능"이라는 사실을 인식하지 못한 채 사용하고 있을 수도 있다는 점에 유의하십시오. 예를 들어, docker 바인드 마운트는 docker의 핵심 개념이지만 Mac에서 작동하려면 docker Desktop이 MacOS와 Linux 가상 머신 간의 격차를 줄이는 역할도 담당해야 합니다.


자체 가상 머신을 실행하려면 다음과 같은 하이퍼바이저 사용을 고려할 수 있습니다.가상 상자Mac에서 자신만의 Linux 가상 머신을 실행해 보세요.

답변4

Docker가 Docker Desktop이 더 이상 무료가 아니라고 발표했을 때 저는 대안에 대해 몇 가지 연구를 수행하고 macOS 호스트에서 Docker CLI를 사용하는 동안 Debian VM에서 Docker 엔진을 실행하는 방법을 알아냈습니다. "Mac M1"이라는 제목의 기사에서 Mac M1에서 이 작업을 수행하는 방법에 대한 지침을 문서화했습니다.Debian 10.4 Docker 엔진을 사용하도록 macOS M1 Arm64에 Docker를 설정하세요..

처음에는 Docker Desktop 4.0 이전 버전에 무료로 제공되는 Docker CLI를 사용하고 있었지만 2022년 11월 현재는 매우 오래되고 오래된 CLI이므로 Docker Desktop 없이 Docker CLI를 설치하려면 Brew를 사용하십시오.

$ brew install docker docker-compose

그 후에 Linux를 실행하려면 일종의 가상 머신이 필요합니다. Intel Mac을 사용하는 경우 VirtualBox와 같은 옵션이 있지만 ARM M1 Mac에서는 당시 최고의 무료 솔루션은 다음과 같습니다.UTM. 하나 다운로드했어요템플릿 라이브러리의 Debian VM그런 다음 Docker 웹사이트의 지침을 따르세요.데비안에 Docker 엔진 설치:

이전 Docker 구성 요소 및 설치 저장소 제거 - Debian VM에서 실행

$ sudo apt-get remove docker docker-engine docker.io containerd runc

$ sudo apt-get update

$ sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

$ sudo mkdir -p /etc/apt/keyrings

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Debian VM에 Docker 엔진 및 Docker Compose 설치

마지막 단계는 Linux에 최신 버전의 Docker를 설치하는 것입니다.

$ sudo apt-get update -y && sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

가상 머신에 openssl-server 설치

호스트 CLI를 가상 머신에 연결하려면 SSH 포트 전달을 사용하여 호스트의 소켓을 /var/run/docker.sock에 연결해야 합니다. 호스트가 네트워크를 통해 VM의 SSH 포트에 연결할 수 있도록 Debian 서버에 SSH를 설치 및 구성하고 UTM 설정에서 포트를 열어야 합니다. UTM에서는 호스트 포트 22022를 게스트 포트 22로 전달했으므로 다음 단계에서는 포트 22022에 대한 참조를 볼 수 있습니다.

Debian 가상 머신에서:

$ sudo apt-get update -y && sudo apt-get install openssl-server

호스트 CLI를 VM에 연결하고 컨테이너를 실행합니다.

Docker를 이런 방식으로 실행할 때 호스트와 가상 머신 사이에 SSH 터널을 생성하고 연결된 소켓을 가리키도록 DOCKER_HOST를 설정합니다.

macOS 호스트에서 실행:

$ ssh [email protected] -p 22022 -N -L/tmp/docker-on-debian.sock:/var/run/docker.sock ssh://[email protected]

$ export DOCKER_HOST=unix:///tmp/docker-on-debian.sock

연결을 다시 설정하기 위해 가상 머신을 다시 시작할 때마다 이 단계를 수행해야 합니다. bash 스크립트를 사용하여 이를 자동화할 수 있습니다. 여기에 일련의 bash 스크립트를 만들었습니다.도커데브이를 위해 저장소.

자동으로 발생하지 않는 또 다른 일은 컨테이너가 수신 대기 중인 포트를 여는 것입니다. 가상 머신을 통해 이 작업을 수행할 수 있지만 다시 구성하기 위해 가상 머신을 종료할 필요가 없도록 SSH 포트 전달을 다시 사용하는 것이 더 편리하다고 생각합니다.

예를 들어 포트 4444에서 수신 대기하는 컨테이너를 실행하려면 터널도 생성해야 합니다.

macOS 호스트에서 실행:

$ ssh [email protected] -p 22022 -N -L4444:127.0.0.1:4444

그런 다음 컨테이너를 실행합니다.

macOS 호스트에서 실행:

$ docker run --rm -it -p 4444:4444 --shm-size 2g seleniarm/standalone-chromium:latest

포트가 열려 있는지 확인하기 위해 curl -L http://localhost:4444/status200 OK 응답을 검색할 수 있습니다.

부인 성명

많은 경우에 나는 큰 문제 없이 podman과 podman-machine을 사용합니다. 그러나 이 Docker/Debian VM 설정은 Podman 충돌이 발생한 경우 유용했습니다. 예를 들어, 저는 CI 서버에서 Docker의 buildx를 사용하여 다중 아키텍처 컨테이너를 구축하는 것을 선호합니다. 그래서 로컬에서 작업하는 동안 UTM VM과 함께 이 Docker 설정을 사용하여 사과와 사과를 비교했습니다.

나는 이것이 Mac에서 Docker를 실행하는 가장 쉬운 방법이라고 생각하지 않습니다. 많은 일반적인 사용 사례의 경우 다른 답변 중 하나로 충분할 수 있습니다. 그러나 Docker가 내부적으로 어떻게 작동하는지 이해하고 싶다면 가상 머신에서 직접 실행해 보면 더 잘 이해할 수 있을 것이라고 장담합니다.

관련 정보