Linux 서버에서 안전하고 안정적인 Docker 이미지 웨어하우스를 구축하는 방법은 무엇입니까?
컨테이너 기술의 급속한 발전으로 Docker는 컨테이너화된 애플리케이션을 구축하고 관리하기 위한 일반적인 도구가 되었습니다. 그러나 실제 응용에서는 안전하고 안정적인 Docker 이미지 웨어하우스를 어떻게 구축하느냐가 중요한 문제입니다. 이 기사에서는 Linux 서버에서 안전하고 안정적인 Docker 이미지 웨어하우스를 구축하는 방법을 소개하고 참조용 코드 예제를 제공합니다.
먼저 Linux 서버에 Docker를 설치해야 합니다. 다음 명령을 통해 설치할 수 있습니다.
$ sudo apt-get update $ sudo apt-get install docker-ce
설치가 완료된 후 다음 명령을 실행하여 설치 성공 여부를 확인합니다.
$ docker version
다음으로 Docker를 구성해야 합니다. 이미지 창고. Docker의 공식 레지스트리 이미지 또는 Harbor, Nexus 등과 같은 타사 오픈 소스 이미지를 사용하도록 선택할 수 있습니다.
공식 Docker Registry 이미지를 예로 들면 다음 명령을 통해 레지스트리 컨테이너를 시작할 수 있습니다.
$ docker run -d -p 5000:5000 --name registry registry:latest
시작이 완료된 후 다음 명령을 통해 레지스트리가 제대로 작동하는지 확인할 수 있습니다.
$ curl http://localhost:5000/v2/_catalog
If 빈 배열이 []
로 반환되어 레지스트리가 성공적으로 실행되었음을 나타냅니다. []
,说明Registry已经成功运行。
为了保证镜像仓库的安全,需要添加认证和授权功能。可以使用Nginx作为反向代理服务器,并使用Basic Auth认证方式。
首先,安装Nginx:
$ sudo apt-get install nginx
然后,创建一个用于存放认证信息的密码文件:
$ sudo sh -c "echo -n 'admin:' >> /etc/nginx/.htpasswd" $ sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"
创建完成后,需要编辑Nginx配置文件/etc/nginx/sites-available/default
,添加如下内容:
server { listen 80; server_name <your-domain-name>; location / { proxy_pass http://localhost:5000; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; } }
替换<your-domain-name>
为你的域名。
保存配置文件并重启Nginx:
$ sudo systemctl restart nginx
为了保证通信的安全性,可以使用HTTPS协议进行通信。需要先为镜像仓库生成自签名证书。
首先,安装OpenSSL:
$ sudo apt-get install openssl
然后,生成私钥和自签名证书:
$ sudo openssl req -newkey rsa:2048 -nodes -keyout registry.key -x509 -days 365 -out registry.crt
生成的registry.key
为私钥文件,registry.crt
为自签名证书文件。
接下来,编辑Nginx配置文件/etc/nginx/sites-available/default
,添加如下内容:
server { listen 443 ssl; server_name <your-domain-name>; ssl_certificate /path/to/registry.crt; ssl_certificate_key /path/to/registry.key; location / { proxy_pass http://localhost:5000; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; } }
替换<your-domain-name>
$ sudo systemctl restart nginx
그런 다음 인증 정보를 저장할 비밀번호 파일을 만듭니다:
$ sudo vi /etc/docker/daemon.json
생성 후 Nginx 구성 파일 /etc/nginx/sites-available/default를 편집해야 합니다. code>에 다음을 추가하세요.
{ "insecure-registries": ["<your-domain-name>:5000"] }
<your-domain-name>
을 도메인 이름으로 바꾸세요.
구성 파일을 저장하고 Nginx를 다시 시작하세요.
$ sudo systemctl restart docker
HTTPS 지원 구성
🎜🎜통신 보안을 보장하기 위해 통신에 HTTPS 프로토콜을 사용할 수 있습니다. 먼저 이미지 웨어하우스에 대한 자체 서명된 인증서를 생성해야 합니다. 🎜🎜먼저 OpenSSL을 설치합니다: 🎜$ docker tag image <your-domain-name>:5000/image $ docker push <your-domain-name>:5000/image $ docker pull <your-domain-name>:5000/image
registry.key
는 개인 키 파일인 registry.crt 자체 서명된 인증서 파일입니다. 🎜🎜다음으로 Nginx 구성 파일 <code>/etc/nginx/sites-available/default
를 편집하고 다음 콘텐츠를 추가합니다. 🎜rrreee🎜 <your-domain-name>
바꾸기 > 귀하의 도메인 이름에 대해. 🎜🎜구성 파일을 저장하고 Nginx를 다시 시작하세요. 🎜rrreee🎜🎜Docker 클라이언트를 사용하여 이미지 저장소와 상호 작용🎜🎜🎜마지막으로 Docker 클라이언트를 사용하여 이미지 저장소와 상호 작용합니다. 먼저 Docker에 대한 신뢰할 수 있는 저장소를 구성해야 합니다. 🎜rrreee🎜구성 파일에 다음 콘텐츠를 추가합니다. 🎜rrreee🎜구성 파일을 저장하고 Docker 서비스를 다시 시작합니다. 🎜rrreee🎜이제 Docker 클라이언트를 사용하여 이미지 저장소, 예를 들어 이미지 푸시 및 풀: 🎜rrreee🎜위는 Linux 서버에 안전하고 안정적인 Docker 이미지 웨어하우스를 구축하기 위한 모든 단계와 코드 예제입니다. 다음 단계를 따르면 안전하고 신뢰할 수 있는 Docker 이미지 웨어하우스를 구축하여 컨테이너화된 애플리케이션의 안정성과 보안을 보장할 수 있습니다. 🎜위 내용은 Linux 서버에서 안전하고 안정적인 Docker 이미지 웨어하우스를 구축하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!