Docker: Set up Private Docker Registry

Tham khảo một phần tại: https://www.digitalocean.com/community/tutorials/how-to-set-up-a-private-docker-registry-on-ubuntu-14-04

Introduction

_Docker là một công cụ tuyệt vời để chạy các dịch vụ backend khi cung cấp cho chúng ta một môi trường hoạt động riêng như một máy ảo thực thụ mà không hề tiêu tốn tài nguyên cho việc ảo hoá như các máy ảo thông thường. Đương nhiên cũng giống như các máy ảo, Docker cho phép chúng ta setup môi trường chạy dịch vụ và lưu lại các images cho việc dùng lại hay triển khai trên các hệ thống khác. _

Tuy nhiên việc lưu images trên docker.io khá giống với Github, tất cả là free nhưng người dùng phải public các images đó. Trong khi vì một lý do công việc hay cá nhân nào đó, chúng ta không muốn public docker images của mình. Do vậy, bài viết hôm nay của mình xin được hướng dẫn các bạn tự tạo Docker Registry của riêng mình.

Ở đây chúng ta chọn **môi trường cài đặt Docker Registry là Ubuntu 12.04 **

1. Cài đặt Docker

Tham khảo thêm cách cài đặt tại http://docs.docker.io/installation/

Cài đặt backported kernel

sudo apt-get update
sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring

Sau đó khởi động lại máy

sudo reboot

Kiểm tra xem chúng ta đã cài đặt apt-transport-https hay chưa bằng câu lệnh gộp

[ -e /usr/lib/apt/methods/https ] || {
  apt-get update
  apt-get install apt-transport-https
}

Tiếp theo, chúng ta thêm Docker repository key vào local keychain

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9

Thêm Docker repository vào apt source list

sudo sh -c "echo deb https://get.docker.io/ubuntu docker main\
> /etc/apt/sources.list.d/docker.list"

Và cuối cùng trong bước cài đặt, chúng ta update và install lxc-docker pakage:

sudo apt-get update
sudo apt-get install lxc-docker

Để kiểm tra đã cài đặt thành công docker trong Ubuntu hay chưa, chúng ta sẽ chạy câu lệnh sau: (câu lệnh này sẽ download ubuntu image từ server về )

sudo docker run -i -t ubuntu /bin/bash

2. Cài đặt môi trường điều kiện

Docker regitry là một app Python, vì vậy để chạy được chúng ta cần cài đặt Python và một vài thư viện cần thiết

sudo apt-get update
sudo apt-get -y install build-essential python-dev libevent-dev python-pip liblzma-dev libffi-dev

Sau đó cài tất cả registry app

sudo pip install .
sudo apt-get install gunicorn

3. Cài đặt docker registry

Clone source code của docker registry từ github về thư mục mà chúng ta muốn cài đặt

git clone https://github.com/dotcloud/docker-registry.git

Hiện tại docker registry đã tạo cho chúng ta một file config_sample.yml sẵn, chỉ cần chuyển tên file thành config.yml là chúng ta đã có một file config default để chạy. Đồng thời sử dụng chương trình quản lý gói của Python pip để cài đặt các requirements được list ở trong file requirements.txt:

cd docker-registry
cd config
cp config_sample.yml config.yml
pip install -r requirements.txt

Ok, quá trình cài đặt đã xong, chúng ta có thể chạy docker registry bằng gunicorn - tool quản lý process cho Python - với câu lệnh như sau:

gunicorn --access-logfile - --log-level debug --debug  -k gevent   -b 192.168.4.49:5000 -w 1 wsgi:application

Nếu thành công chúng ta sẽ thấy output có dạng như sau:

2014-07-27 07:12:24 [29344] [INFO] Starting gunicorn 18.0
2014-07-27 07:12:24 [29344] [INFO] Listening at: http://192.168.4.49:5000 (29344)
2014-07-27 07:12:24 [29344] [INFO] Using worker: gevent
2014-07-27 07:12:24 [29349] [INFO] Booting worker with pid: 29349
2014-07-27 07:12:24,807 DEBUG: Will return docker-registry.drivers.file.Storage

Địa chỉ 192.168.4.49 ở đây là địa chỉ ip máy của chúng ta, còn 5000 là cổng mặc định mà docker registry đăng ký. Bạn có thể thay đổi cổng ở trong config.

4. Chạy thử với docker registry

Chúng ta đã cài đặt xong docker registry và bây giờ sẽ thao tác với registry này. Giả sử với registry có ip là 192.168.4.49 và cổng 5000 như trên. Nếu một container chúng ta muốn lưu lại có id là 7313977c9fbb và bạn muốn lưu thành tên "base_ubuntu" chẳng hạn. Chúng ta sẽ lưu chúng dưới dạng image của private registry như sau:

sudo docker commit 7313977c9fbb 192.168.4.49:5000/base_ubuntu

Sau đó tiến hành push lên docker registry

sudo docker push 192.168.4.49:5000/base_ubuntu

Tải một image xuống từ private docker registry này cũng hoàn toàn tương tự:

docker pull 192.168.4.49:5000/base_ubuntu

Tổng kết

Trên đây là những hướng dẫn cơ bản để tạo ra private docker registry. Các cách thiết lập tính năng bảo mật cho server cũng như tinh chỉnh config xin được giới thiệu trong bài viết tiếp theo.


All Rights Reserved