Trên CoreOS, hướng dẫn thiết lập đăng ký Docker của riêng bạn

Chúng ta đều biết và yêu thích Docker, một nền tảng để tạo, quản lý và phân phối các thùng chứa ứng dụng trên nhiều máy. Docker Inc. cung cấp dịch vụ lưu trữ các thùng chứa nguồn mở sẽ được tải xuống (hoặc kéo) như kho lưu trữ git được gọi là "Docker Registry". Hãy nghĩ về nó giống như một GitHub cho các container Docker.

Nhưng nếu bạn muốn lưu trữ sổ đăng ký của riêng bạn tách biệt với sổ đăng ký công khai thì sao? Chà, Docker Inc. đã mở ứng dụng Registry của họ trên GitHub.

Hướng dẫn này sẽ đưa bạn qua quá trình thiết lập sổ đăng ký Docker riêng bằng CoreOS trên VPS mới.

DockOS + Docker

Chúng tôi sẽ không dành nhiều thời gian để xem chính xác những gì Docker và CoreOS có thể làm, vì nó nằm ngoài phạm vi của hướng dẫn này. Về bản chất, CoreOS được thiết kế cho các cụm máy chủ lớn, nó nhỏ, nhanh và được cập nhật bảo mật thường xuyên. Hệ thống tệp gốc của nó cũng chỉ đọc, nghĩa là bạn phải sử dụng Docker để chạy bất kỳ loại phần mềm nào không có trong bản cài đặt cơ sở.

Điều này làm cho Core OS trở thành một hệ thống máy chủ hoàn hảo cho Docker!

Kéo và chạy registry mới nhất

Docker Inc. đã cung cấp Registry như một hình ảnh cấp cao nhất, điều này có nghĩa là chúng ta có thể kéo nó xuống một cách đơn giản:

docker pull registry

Điều này có thể mất một vài phút tùy thuộc vào tốc độ kết nối.

Điểm cộng của việc là một hình ảnh cấp cao nhất cũng có nghĩa là nó được hỗ trợ và cập nhật thường xuyên.

Bây giờ hãy kiểm tra sổ đăng ký. Chúng tôi có thể tạo một container mới bằng cách sử dụng hình ảnh đăng ký:

docker run -p 5000:5000 -d --name=basic_registry registry

Đối với những người chưa sử dụng Docker quá nhiều, -pcờ là viết tắt PORT, có nghĩa là chúng tôi đang hiển thị cổng 5000 trên từ container lên cổng máy chủ 5000.

Các -dlá cờ tượng trưng cho daemon, điều này sẽ gây ra các container để chạy ở chế độ nền và không in ra với phiên SSH hiện tại, chúng tôi cũng muốn đặt tên chứa này thử nghiệm cơ bản bằng cách sử dụng --nametùy chọn để chúng tôi có thể dễ dàng quản lý nó sau này.

Hãy chắc chắn rằng thùng chứa registry cơ bản của bạn đang chạy bằng cách sử dụng docker ps. Đầu ra sẽ trông tương tự như:

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                    NAMES
edfb54e4a8c4        registry:0.8.1      "/bin/sh -c 'exec do   7 seconds ago       Up 6 seconds        0.0.0.0:5000->5000/tcp   basic_registry

Ngoài ra, hãy truy cập http://YOUR_IP:5000trong trình duyệt web của bạn và bạn sẽ nhận được một thông báo như sau:

"docker-registry server (dev) (v0.8.1)"

Chú ý từ devtrong ngoặc đơn. Điều này có nghĩa là máy chủ hiện đang chạy cấu hình dev. Chúng tôi sẽ xem xét thêm cấu hình sớm.

Bây giờ bạn có đăng ký container (rất cơ bản) của riêng bạn đang chạy! Nhưng chúng tôi chưa hoàn thành.

Có thể bạn muốn giữ riêng tư này khỏi con mắt tò mò hoặc có thể lưu trữ hình ảnh của bạn trên Amazon S3 thay vì lưu trữ cục bộ. Chúng ta hãy xem qua các tùy chọn cấu hình khác nhau trong phần tiếp theo.

Trước khi chúng ta tiếp tục, hãy tiêu diệt thùng chứa thử nghiệm để chúng ta không chạy vào các cổng xung đột.

docker kill basic_registry

Cấu hình đăng ký

Có hai cách chúng ta có thể chuyển cấu hình cho Docker Registry. Một cách là bằng cách chuyển các biến môi trường sang một thùng chứa mới và cách khác là thêm tệp cấu hình.

Dưới đây là một vài tùy chọn cấu hình phổ biến chúng tôi sẽ sử dụng:

  • loglevel- Lượng thông tin tối thiểu để đăng nhập vào bàn điều khiển. Mặc định là info.
  • standalone- Đăng ký này có nên tự hành động không? (Không bao giờ truy vấn sổ đăng ký công khai.) Mặc định là true.
  • index_endpoint- Nếu không độc lập, chúng ta sẽ truy vấn chỉ mục nào khác? Mặc định index.docker.io.
  • cachecache_lru- Tùy chọn liên quan đến việc sử dụng bộ đệm Redis cho các tệp nhỏ, chúng ta sẽ chạm vào điều này sau.
  • storage- Chúng ta nên sử dụng phụ trợ lưu trữ nào cho máy chủ này? (Trong hướng dẫn này, chúng tôi sẽ sử dụng địa phương).
  • storage_path - Nếu sử dụng bộ nhớ cục bộ, chúng ta nên sử dụng thư mục nào để giữ tập tin?

Trước khi chúng tôi làm việc với cấu hình, chúng tôi cần một tệp cơ sở để làm việc. Tệp từ kho lưu trữ Docker Registry trên GitHub sẽ hoạt động tốt:

wget https://raw.githubusercontent.com/docker/docker-registry/0.8/config/config_sample.yml

Các tập tin nên lưu thành công với một đầu ra như:

2014-09-14 14:09:01 (156 MB/s) - 'config_sample.yml' saved [5384/5384]

Tuyệt quá! Bây giờ chúng tôi có thể sửa đổi tập tin này để phù hợp với nhu cầu của chúng tôi.

Trình chỉnh sửa văn bản duy nhất đi kèm với Core OS là vim, nhưng đừng lo lắng nếu bạn chưa từng sử dụng nó trước đây, điều này sẽ giải thích từng bước cần chỉnh sửa và cách thực hiện.

vim config_sample.yml

Khi bạn mở tệp, nhấn Ivà góc dưới bên phải sẽ hiển thị: -- INSERT --cho chế độ chèn. Cuộn toàn bộ đến cuối tập tin bằng các phím mũi tên của bạn, bạn sẽ thấy một phần có nhãn prod.

Chúng tôi sẽ thay đổi hai dòng, những thay đổi dưới đây

prod:
    <<: *local
    storage_path: _env:STORAGE_PATH:/data

Những gì chúng tôi đã làm là thay đổi prodcấu hình để lấy từ localphần thay vì s3phần. Sau đó, chúng tôi ghi đè lên storage_pathđể sử dụng đường dẫn /databên trong container mới.

Khi bạn đã xác nhận rằng tất cả các thay đổi là chính xác, hãy nhấn ESCđể thoát chế độ chèn và nhập :wq(điều này có nghĩa là ghi các thay đổi vào tệp và thoát vim.)

Bây giờ hãy đổi tên tập tin thành config.yml

mv config_sample.yml config.yml

Redis bộ nhớ đệm (tùy chọn)

Nếu bạn muốn sử dụng redis để tăng tốc đăng ký container của mình, thì đơn giản như kéo một container mới từ sổ đăng ký công cộng và thêm một vài dòng cấu hình.

Đầu tiên, kéo hình ảnh cấp cao nhất của Redis:

docker pull redis

Khi hình ảnh được kéo thành công, chúng ta có thể chạy nó và đặt tên giống như chúng ta đã làm với sổ đăng ký thử nghiệm:

docker run -d --name registry-redis redis

Vì redis nằm trong bộ nhớ, chúng tôi không cần thực hiện bất kỳ cấu hình nào cho nó, vì chúng tôi sẽ liên kết nó với thùng chứa đăng ký trong các bước sau.

Một lần nữa, đảm bảo nó chạy bằng cách sử dụng docker ps:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
54f65641eccf        redis:2.8           "redis-server"      2 seconds ago       Up 1 seconds        6379/tcp            registry-redis

Bây giờ mở lại config.ymltrong vimvà nhập chèn chế độ giống như lần đầu tiên chúng tôi sửa nó.

Thêm các dòng sau bên dưới prodphần, chắc chắn để thụt lề đúng cách. Lần này chúng tôi chỉ thêm cachecache_lru.

cache:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 0

cache_lru:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 1

Các biến môi trường REDIS_PORT_6379_TCP_ADDRREDIS_PORT_6379_TCP_PORTđược chuyển đến vùng chứa đăng ký khi liên kết với vùng chứa Redis.

Cùng với đó, giờ đây bạn đã thiết lập một thùng chứa Redis sẽ hoạt động song song với thùng chứa đăng ký của bạn. Bây giờ vào việc xây dựng sổ đăng ký!

Xây dựng container

Chúng tôi có tất cả các cấu hình được thiết lập và sẵn sàng, bây giờ chúng tôi cần xây dựng bộ chứa đăng ký thực tế.

vim DockerfileBật lên để tạo Dockerfile mới. Nhập chế độ chèn và làm theo các chỉnh sửa bên dưới.

FROM registry:latest

# Add the custom configuration file we made 
ADD ./config.yml /docker-registry/config/config.yml

# Create the data directory
RUN mkdir /data

# Set the configuration file to config.yml
env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml

# Make sure we use the prod configuration settings 
env SETTINGS_FLAVOR prod

Những gì chúng tôi đã làm ở trên về cơ bản là mở rộng hình ảnh đăng ký để nó sẽ sử dụng tệp cấu hình và cài đặt của chúng tôi. Dockerfile là một tập hợp các hướng dẫn xây dựng để Docker đọc và xây dựng. Nếu bạn muốn tìm hiểu thêm về Dockerfiles và cú pháp của họ, hãy xem tài liệu trang web chính thức của Docker.

Tiếp theo chúng ta cần xây dựng container để sử dụng.

docker build -t my_registry .


Sending build context to Docker daemon 13.82 kB
Sending build context to Docker daemon 
Step 0 : FROM registry
 ---> e42d15ec8417
Step 1 : ADD ./config.yml /docker-registry/config/config.yml
 ---> 4339f026d459
Removing intermediate container 2d5138fbcd34
Step 2 : RUN mkdir /data
 ---> Running in a090f0bdbfd1
 ---> 8eb27ba6e12a
Removing intermediate container a090f0bdbfd1
Step 3 : env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml
 ---> Running in 565b5bfb2b22
 ---> 914462e46dc0
Removing intermediate container 565b5bfb2b22
Step 4 : env SETTINGS_FLAVOR prod
 ---> Running in 31a92847b851
 ---> b5949575c374
Removing intermediate container 31a92847b851
Successfully built b5949575c374

Bây giờ chúng tôi đã sẵn sàng để chạy!

Hãy tạo một thư mục trên hệ thống máy chủ của chúng tôi để gắn vào thùng chứa dưới dạng /dataâm lượng.

mkdir registry-data

Bây giờ chúng ta có thể quay lên một container mới. Nếu bạn có kế hoạch sử dụng bộ đệm Redis, hãy sử dụng lệnh thứ 2 bên dưới.

# For a non-Redis cache registry
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg my_registry

# For a Redis cached registry (Must have followed Redis Caching section above)
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg --link registry-redis:redis my_registry

Để đảm bảo rằng máy chủ của bạn đang chạy chính xác, hãy truy cập http://YOUR_IP:5000. Bạn sẽ thấy thông báo sau:

"docker-registry server (prod) (v0.8.1)"

Lưu (prod)ý ý nghĩa thay đổi cấu hình của chúng tôi đã thành công!

Định cấu hình máy khách Docker cục bộ của bạn

Bây giờ chúng tôi có đăng ký đang chạy của riêng mình, chúng tôi muốn máy khách Docker trên các máy cục bộ của chúng tôi bắt đầu sử dụng nó. Thông thường bạn sẽ sử dụng lệnh : docker login, nhưng để sử dụng, chúng ta cần thêm một đối số nữa vào lệnh đăng nhập:

docker login YOUR_IP:5000

Nhập tên người dùng và mật khẩu (nghĩ về điều này giống như tạo một tài khoản mới) và bỏ qua thông báo cho biết bạn phải kích hoạt nó.

Tiếp theo, hãy kéo một hình ảnh chứng khoán và đẩy nó lên kho lưu trữ của chúng ta.

# Pull the busybox image from the public registry
docker pull busybox

# Tag it with our IP/URL
docker tag busybox YOUR_IP:5000/busybox

# Push it to our newly made registry
docker push YOUR_IP:5000/busybox

Nếu mọi thứ đẩy chính xác, thông báo cuối cùng sẽ nằm dọc theo dòng:

Pushing tag for rev [a9eb17255234] on 

Xin chúc mừng! Bạn đã thiết lập kho lưu trữ docker rất riêng của bạn.

Cái gì tiếp theo?

Dưới đây là một số ý tưởng về cách cải thiện sổ đăng ký riêng mới của bạn:

  • Đảo ngược proxy bằng Nginx hoặc Apache để đặt bảo mật bổ sung phía trước nó, như xác thực HTTP đơn giản.
  • Nhận một tên miền cho máy chủ của bạn và thiết lập nó để bạn có thể truy cập vào sổ đăng ký của mình với một cái gì đó như: registry.mysite.com
  • Mua (hoặc tự ký) một chứng chỉ SSL để thêm sự bảo vệ hơn nữa nếu các thùng chứa của bạn chứa thông tin nhạy cảm.


Leave a Comment

Cách sử dụng Docker: Tạo Container Docker đầu tiên của bạn

Cách sử dụng Docker: Tạo Container Docker đầu tiên của bạn

Hướng dẫn này giải thích những điều cơ bản khi bắt đầu với Docker. Tôi giả sử rằng bạn đã cài đặt Docker. Các bước trong hướng dẫn này sẽ hoạt động trên mọi bản phân phối Linux tương thích với Docker (CentOS, Ubuntu, v.v.).

Cài đặt Docker trên Ubuntu 14.04

Cài đặt Docker trên Ubuntu 14.04

Sử dụng một hệ thống khác nhau? Docker là một ứng dụng cho phép triển khai các chương trình được chạy dưới dạng container. Nó được viết trong chương trình phổ biến Go

Cài đặt Docker trên CentOS 7

Cài đặt Docker trên CentOS 7

Sử dụng một hệ thống khác nhau? Docker là một ứng dụng cho phép triển khai phần mềm trong các thùng chứa ảo. Nó được viết trong chương trình Go

Bắt đầu với Kubernetes trên CentOS 7

Bắt đầu với Kubernetes trên CentOS 7

Kubernetes là một nền tảng nguồn mở được phát triển bởi Google để quản lý các ứng dụng được đóng gói trên một cụm máy chủ. Nó được xây dựng trên một thập kỷ và

Cân bằng tải với Docker

Cân bằng tải với Docker

Khi chạy một ứng dụng web, thông thường bạn muốn tận dụng tối đa tài nguyên của mình mà không phải chuyển đổi phần mềm để sử dụng các vòng lặp sự kiện đa luồng hoặc phức tạp. Docker, tuy nhiên, cung cấp một cách đơn giản để bạn tải cân bằng nội bộ ứng dụng của mình để tận dụng tối đa tài nguyên máy chủ. Bài viết này sẽ chỉ cho bạn cách sử dụng Nginx để tải cân bằng ứng dụng web của bạn bằng Docker trên CentOS.

Cài đặt hệ điều hành Rancher qua iPXE

Cài đặt hệ điều hành Rancher qua iPXE

Rancher OS là một bản phân phối Linux rất nhẹ được xây dựng xung quanh Docker. Hệ điều hành tự nó nặng khoảng 20 MB. Hướng dẫn này sẽ giúp bạn khởi động và chạy với HĐH Rancher bền bỉ bằng cách sử dụng tất cả dung lượng đĩa trống. Hướng dẫn cấu hình đám mây không được bao gồm trong tài liệu này.

Triển khai ứng dụng Node.js bằng Docker

Triển khai ứng dụng Node.js bằng Docker

Bài viết này sẽ chỉ cho bạn cách triển khai ứng dụng Node của bạn trong bộ chứa Docker. Lưu ý: Hướng dẫn này giả định rằng bạn đã cài đặt Docker và sẵn sàng để sử dụng.

ReactOS: Đây có phải là tương lai của Windows?

ReactOS: Đây có phải là tương lai của Windows?

ReactOS, một hệ điều hành mã nguồn mở và miễn phí đã có phiên bản mới nhất. Liệu nó có thể đáp ứng đủ nhu cầu của người dùng Windows hiện đại và hạ gục Microsoft? Hãy cùng tìm hiểu thêm về trải nghiệm hệ điều hành kiểu cũ nhưng mới hơn này.

Liệu AI có thể chiến đấu với số lượng các cuộc tấn công bằng Ransomware ngày càng tăng

Liệu AI có thể chiến đấu với số lượng các cuộc tấn công bằng Ransomware ngày càng tăng

Các cuộc tấn công ransomware đang gia tăng, nhưng liệu AI có thể giúp đối phó với loại virus máy tính mới nhất? AI có phải là câu trả lời? Đọc ở đây biết là AI boone hay cấm

Luôn kết nối thông qua Ứng dụng WhatsApp Desktop 24 * 7

Luôn kết nối thông qua Ứng dụng WhatsApp Desktop 24 * 7

Whatsapp cuối cùng đã ra mắt ứng dụng Máy tính để bàn cho người dùng Mac và Windows. Giờ đây, bạn có thể truy cập Whatsapp từ Windows hoặc Mac một cách dễ dàng. Có sẵn cho Windows 8+ và Mac OS 10.9+

Làm thế nào AI có thể đưa quá trình tự động hóa lên cấp độ tiếp theo?

Làm thế nào AI có thể đưa quá trình tự động hóa lên cấp độ tiếp theo?

Hãy đọc phần này để biết Trí tuệ nhân tạo đang trở nên phổ biến như thế nào đối với các công ty quy mô nhỏ và làm thế nào nó đang tăng khả năng khiến họ phát triển và giúp đối thủ cạnh tranh của họ có thể cạnh tranh.

Bản cập nhật bổ sung macOS Catalina 10.15.4 đang gây ra nhiều vấn đề hơn là giải quyết

Bản cập nhật bổ sung macOS Catalina 10.15.4 đang gây ra nhiều vấn đề hơn là giải quyết

Gần đây Apple đã phát hành macOS Catalina 10.15.4 một bản cập nhật bổ sung để khắc phục các sự cố nhưng có vẻ như bản cập nhật đang gây ra nhiều vấn đề hơn dẫn đến việc máy mac bị chai. Đọc bài viết này để tìm hiểu thêm

13 Công cụ trích xuất dữ liệu thương mại của Dữ liệu lớn

13 Công cụ trích xuất dữ liệu thương mại của Dữ liệu lớn

13 Công cụ trích xuất dữ liệu thương mại của Dữ liệu lớn

Hệ thống tệp nhật ký là gì và nó hoạt động như thế nào?

Hệ thống tệp nhật ký là gì và nó hoạt động như thế nào?

Máy tính của chúng tôi lưu trữ tất cả dữ liệu một cách có tổ chức được gọi là hệ thống tệp Ghi nhật ký. Đây là một phương pháp hiệu quả cho phép máy tính tìm kiếm và hiển thị các tệp ngay khi bạn nhấn tìm kiếm. Https://wethegeek.com/? P = 94116 & preview = true

Điểm kỳ dị về công nghệ: Tương lai xa của nền văn minh nhân loại?

Điểm kỳ dị về công nghệ: Tương lai xa của nền văn minh nhân loại?

Khi Khoa học phát triển với tốc độ nhanh chóng, chiếm rất nhiều nỗ lực của chúng ta, những rủi ro của việc phục tùng bản thân trước một Điểm kỳ dị không thể giải thích cũng tăng lên. Hãy đọc, điểm kỳ dị có thể có ý nghĩa gì đối với chúng ta.

Hiểu rõ hơn về 26 kỹ thuật phân tích dữ liệu lớn: Phần 1

Hiểu rõ hơn về 26 kỹ thuật phân tích dữ liệu lớn: Phần 1

Hiểu rõ hơn về 26 kỹ thuật phân tích dữ liệu lớn: Phần 1

Tác động của trí tuệ nhân tạo trong chăm sóc sức khỏe 2021

Tác động của trí tuệ nhân tạo trong chăm sóc sức khỏe 2021

AI trong lĩnh vực chăm sóc sức khỏe đã có những bước tiến nhảy vọt so với những thập kỷ trước. Vì vậy, tương lai của AI trong Chăm sóc sức khỏe vẫn đang phát triển từng ngày.