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 _ 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 ...
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
_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.