Bagaimana untuk membina gudang imej Docker yang selamat dan boleh dipercayai pada pelayan Linux?

王林
Lepaskan: 2023-07-28 20:16:51
asal
1622 orang telah melayarinya

Bagaimana untuk membina gudang imej Docker yang selamat dan boleh dipercayai pada pelayan Linux?

Dengan perkembangan pesat teknologi kontena, Docker telah menjadi alat biasa untuk membina dan mengurus aplikasi kontena. Walau bagaimanapun, dalam aplikasi praktikal, cara mewujudkan gudang imej Docker yang selamat dan boleh dipercayai adalah isu penting. Artikel ini akan memperkenalkan cara untuk mewujudkan gudang imej Docker yang selamat dan boleh dipercayai pada pelayan Linux, dan menyediakan contoh kod untuk rujukan.

  1. Pasang Docker

Mula-mula, anda perlu memasang Docker pada pelayan Linux. Ia boleh dipasang melalui arahan berikut:

$ sudo apt-get update
$ sudo apt-get install docker-ce
Salin selepas log masuk

Selepas pemasangan selesai, jalankan arahan berikut untuk mengesahkan sama ada pemasangan berjaya:

$ docker version
Salin selepas log masuk
  1. Konfigurasi gudang imej Docker

Seterusnya, anda perlu mengkonfigurasi Docker gudang imej. Anda boleh memilih untuk menggunakan imej Registry rasmi Docker atau imej sumber terbuka pihak ketiga, seperti Harbour, Nexus, dsb.

Mengambil imej Registry rasmi Docker sebagai contoh, anda boleh memulakan bekas Registry melalui arahan berikut:

$ docker run -d -p 5000:5000 --name registry registry:latest
Salin selepas log masuk

Selepas permulaan selesai, anda boleh mengesahkan sama ada Registry berfungsi dengan baik melalui arahan berikut:

$ curl http://localhost:5000/v2/_catalog
Salin selepas log masuk

Jika tatasusunan kosong dikembalikan [] , menunjukkan bahawa Registry telah berjaya dijalankan. [],说明Registry已经成功运行。

  1. 配置镜像仓库的认证和授权

为了保证镜像仓库的安全,需要添加认证和授权功能。可以使用Nginx作为反向代理服务器,并使用Basic Auth认证方式。

首先,安装Nginx:

$ sudo apt-get install nginx
Salin selepas log masuk

然后,创建一个用于存放认证信息的密码文件:

$ sudo sh -c "echo -n 'admin:' >> /etc/nginx/.htpasswd"
$ sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"
Salin selepas log masuk

创建完成后,需要编辑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;
    }
}
Salin selepas log masuk

替换<your-domain-name>为你的域名。

保存配置文件并重启Nginx:

$ sudo systemctl restart nginx
Salin selepas log masuk
Salin selepas log masuk
  1. 配置HTTPS支持

为了保证通信的安全性,可以使用HTTPS协议进行通信。需要先为镜像仓库生成自签名证书。

首先,安装OpenSSL:

$ sudo apt-get install openssl
Salin selepas log masuk

然后,生成私钥和自签名证书:

$ sudo openssl req -newkey rsa:2048 -nodes -keyout registry.key -x509 -days 365 -out registry.crt
Salin selepas log masuk

生成的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;
    }
}
Salin selepas log masuk

替换<your-domain-name>

    Konfigurasikan pengesahan dan kebenaran gudang imej

      Untuk memastikan keselamatan gudang imej, fungsi pengesahan dan kebenaran perlu ditambah. Anda boleh menggunakan Nginx sebagai pelayan proksi terbalik dan menggunakan kaedah pengesahan Pengesahan Asas.
    1. Mula-mula, pasang Nginx:
    $ sudo systemctl restart nginx
    Salin selepas log masuk
    Salin selepas log masuk

    Kemudian, cipta fail kata laluan untuk menyimpan maklumat pengesahan:

    $ sudo vi /etc/docker/daemon.json
    Salin selepas log masuk

    Selepas penciptaan, anda perlu mengedit fail konfigurasi Nginx /etc/nginx/sites-available/default</ kod>, tambahkan yang berikut: </p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>{ &quot;insecure-registries&quot;: [&quot;&lt;your-domain-name&gt;:5000&quot;] }</pre><div class="contentsignin">Salin selepas log masuk</div></div><p>Ganti <kod><nama-domain-anda> dengan nama domain anda.

    Simpan fail konfigurasi dan mulakan semula Nginx:

    $ sudo systemctl restart docker
    Salin selepas log masuk

      Konfigurasikan sokongan HTTPS

      🎜🎜Untuk memastikan keselamatan komunikasi, anda boleh menggunakan protokol HTTPS untuk komunikasi. Anda perlu menjana sijil yang ditandatangani sendiri untuk gudang imej terlebih dahulu. 🎜🎜Mula-mula, pasang OpenSSL: 🎜
      $ docker tag image <your-domain-name>:5000/image
      $ docker push <your-domain-name>:5000/image
      $ docker pull <your-domain-name>:5000/image
      Salin selepas log masuk
      🎜Kemudian, jana kunci peribadi dan sijil yang ditandatangani sendiri: 🎜rrreee🎜 registry.key yang dihasilkan ialah fail kunci peribadi, registry.crt Ia adalah fail sijil yang ditandatangani sendiri. 🎜🎜Seterusnya, edit fail konfigurasi Nginx <code>/etc/nginx/sites-available/default dan tambah kandungan berikut: 🎜rrreee🎜Ganti <nama-domain-anda> untuk nama domain anda. 🎜🎜Simpan fail konfigurasi dan mulakan semula Nginx: 🎜rrreee🎜🎜Gunakan klien Docker untuk berinteraksi dengan repositori imej🎜🎜🎜Akhir sekali, gunakan klien Docker untuk berinteraksi dengan repositori imej. Pertama, anda perlu mengkonfigurasi repositori yang dipercayai untuk Docker: 🎜rrreee🎜Tambah kandungan berikut dalam fail konfigurasi: 🎜rrreee🎜Simpan fail konfigurasi dan mulakan semula perkhidmatan Docker: 🎜rrreee🎜Kini anda boleh menggunakan klien Docker untuk berinteraksi dengan repositori imej, sebagai contoh, tolak Dan tarik imej: 🎜rrreee🎜Di atas adalah semua langkah dan contoh kod untuk mewujudkan gudang imej Docker yang selamat dan boleh dipercayai pada pelayan Linux. Dengan mengikuti langkah ini, anda boleh membina gudang imej Docker yang selamat dan boleh dipercayai untuk memastikan kebolehpercayaan dan keselamatan aplikasi kontena. 🎜

      Atas ialah kandungan terperinci Bagaimana untuk membina gudang imej Docker yang selamat dan boleh dipercayai pada pelayan Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan