>  기사  >  운영 및 유지보수  >  Docker 이미지가 사라지면 어떻게 되나요?

Docker 이미지가 사라지면 어떻게 되나요?

PHPz
PHPz원래의
2023-04-19 09:16:222732검색

DevOps의 추가 개발과 클라우드 네이티브 애플리케이션의 인기로 인해 Docker는 개발, 배포, 운영 및 유지 관리를 위한 표준 도구 중 하나가 되었습니다. 도커(Docker)는 컨테이너를 직접 운영하는 도구로, 컨테이너는 코드, 환경, 의존성을 독립적인 실행 환경으로 패키징할 수 있는 경량화된 가상화 방식을 제공하고, 이를 다른 노드에 빠르게 이식 및 배포함으로써 애플리케이션의 이식성과 확장성을 크게 향상시킨다. , 운영 및 유지 관리를보다 편리하고 효율적으로 만듭니다.

그러나 실제로 Docker를 사용하다 보면 이미지가 누락되는 등 이상한 문제가 발생할 때가 있습니다. 이 문제는 일반적으로 Docker Hub의 이미지가 삭제되거나 해당 이미지가 있는 레지스트리에 액세스할 수 없기 때문에 발생하며, 이미지를 가져오는 과정에서 Docker에서 오류가 발생하여 전체 애플리케이션의 안정성과 신뢰성에 영향을 미칩니다.

그렇다면 이 문제를 어떻게 해결해야 할까요? 일반적으로 두 가지 솔루션이 있습니다. 하나는 Alibaba Cloud, Tencent Cloud 등과 같은 다른 이미지 소스를 사용하는 것이고, 다른 하나는 Docker 레지스트리를 로컬로 구축하고 필요한 이미지를 로컬에 저장하여 더 이상 외부 소스에 의존하지 않는 것입니다. 미러 소스는 애플리케이션의 신뢰성과 안정성을 향상시킵니다.

다른 이미지 소스 사용

Alibaba Cloud를 예로 들어보겠습니다. 먼저 Alibaba Cloud의 컨테이너 이미지 서비스에 계정을 등록하고 서비스를 활성화해야 합니다. 콘솔에서 "Image Accelerator"를 선택하면 URL이 표시됩니다. 이 URL은 Alibaba Cloud에서 제공하는 Docker 이미지 가속기 주소입니다.

이 주소를 /etc/docker/daemon.json 파일에 복사하고 Docker 서비스를 다시 시작하세요. 예: /etc/docker/daemon.json 文件中,并重启 Docker 服务即可。例如:

{
  "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}

之后使用 Docker 命令拉取镜像时,就可以在命令后加上 --registry-mirror 参数指定使用阿里云镜像加速器,例如:

docker pull --registry-mirror=https://xxxxxxxx.mirror.aliyuncs.com library/nginx

通过本地搭建 Docker Registry

使用阿里云、腾讯云等国内的 Docker Hub 镜像源,虽然可以帮助解决镜像不见的问题,但是这些公司的运营模式一般都是按量收费,对于一些资源需要非常频繁地使用的业务,可能也会面临较高的成本压力。而且,现在国家也开始要求在中国境内存储、传输一些重要数据,因此在某些时刻,国外 registry 端口不通也可能成为一个瓶颈。

本地搭建 Docker Registry 就可以解决这些问题。我们只需要在一台 Linux 服务器上搭建一个 Docker Registry,并将需要的镜像 push 到这个 Registry 上即可。具体步骤如下:

  1. 拉取 Docker Registry 镜像

在本地服务器上使用以下命令拉取 Docker Registry 镜像:

docker pull registry
  1. 运行 Docker Registry 容器

使用如下命令启动 Docker Registry 容器:

docker run -d -p 5000:5000 --restart=always --name registry registry:latest

默认情况下,Registry 会监听在本地 5000 端口上,而且会使用本地文件系统作为镜像储存库。

  1. 推送镜像

在本地电脑上使用以下命令将一个本地的 Dcoker 镜像推送到 Registry:

docker tag <local_image_name> <registry_url>/<remote_image_name>
docker push <registry_url>/<remote_image_name>

其中 <local_image_name> 是本地的 Docker 镜像名称,<registry_url> 是我们本地服务器的 IP 地址和 5000 端口号拼接而成的地址,<remote_image_name>

docker pull <registry_url>/<remote_image_name>
Docker 명령을 사용하여 나중에 이미지를 가져오는 경우 명령 뒤에 --registry-mirror 매개변수를 추가하여 다음과 같은 경우 Alibaba Cloud 이미지 가속기 사용을 지정할 수 있습니다. 예:
    rrreee
  1. Docker 로컬 레지스트리 구축
Alibaba Cloud 및 Tencent Cloud와 같은 국내 Docker Hub 이미지 소스를 사용하면 이미지 누락 문제를 해결하는 데 도움이 될 수 있지만 이러한 회사의 운영 모델은 일반적으로 용량에 따라 요금을 부과합니다. 리소스를 매우 자주 사용해야 하는 비즈니스의 경우 비용 압박이 더 높을 수도 있습니다. 더욱이, 국가에서는 일부 중요한 데이터를 중국 내에서 저장하고 전송하도록 요구하기 시작했습니다. 따라서 어느 시점에서는 외국 등록 포트를 사용할 수 없는 것도 병목 현상이 될 수 있습니다.

Docker 레지스트리를 로컬로 구축하면 이러한 문제를 해결할 수 있습니다. Linux 서버에 Docker 레지스트리를 구축하고 필요한 이미지를 이 레지스트리에 푸시하기만 하면 됩니다. 구체적인 단계는 다음과 같습니다.

    Docker 레지스트리 이미지 가져오기

    🎜Docker 레지스트리 이미지를 가져오려면 로컬 서버에서 다음 명령을 사용하세요.🎜rrreee
      🎜Docker 레지스트리 실행 컨테이너🎜🎜🎜다음 명령을 사용하여 Docker 레지스트리 컨테이너를 시작합니다. 🎜rrreee🎜기본적으로 레지스트리는 로컬 포트 ​​5000에서 수신 대기하고 로컬 파일 시스템을 이미지 저장소로 사용합니다. 🎜
        🎜이미지 푸시🎜🎜🎜로컬 컴퓨터에서 다음 명령을 사용하여 로컬 Dcoker 이미지를 레지스트리에 푸시하세요. 🎜rrreee🎜여기서 <local_image_name>는 로컬 Docker 이미지 이름, <registry_url>은 로컬 서버의 IP 주소이고 5000 포트 번호는 <remote_image_name>이 레지스트리 이름에 푸시된 이미지입니다. . 🎜🎜🎜이미지 가져오기🎜🎜🎜다음 명령을 사용하여 레지스트리에서 이미지를 가져옵니다. 🎜rrreee🎜Docker 레지스트리를 로컬로 구축하면 필요한 이미지를 빠르게 저장하고 검색할 수 있으며 배포 및 운영을 더 잘 제어할 수 있습니다. 도커 이미지 . 또한 로컬로 구축된 Docker 레지스트리는 이미지 관리, 계정 권한 제어, 이미지 웨어하우스 모델링, 이미지 공유 등과 같은 고급 기능을 지원할 수 있습니다. 이러한 기능은 Docker 운영 및 유지 관리 프로세스를 더욱 최적화하고 DevOps 성능을 향상시킬 수 있습니다. . 🎜🎜간단히 말하면, 이미지 누락 문제는 Docker 작업 중에 일반적이고 골치 아픈 문제입니다. 그러나 Alibaba Cloud와 같은 안정적인 Docker 이미지 가속기를 사용하거나 Docker Registry를 로컬로 구축하면 이 문제를 잘 해결하고 애플리케이션을 더욱 개선할 수 있습니다. 프로그램의 신뢰성과 안정성은 구축 및 배포 속도를 높이고 DevOps의 효율성을 향상시킵니다. 🎜

위 내용은 Docker 이미지가 사라지면 어떻게 되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.