TÀI LIỆU

TRANG CHỦ / TÀI LIỆU / CHI TIẾT TÀI LIỆU

Docker inside of container

Đăng bởi: baotd | 28/11/2015 12:36


Từ bản update 9 (6.0.9-2806) Parallel Cloud Server đã chính thức hỗ trợ docker trong container.
Phân bài này sẽ hướng dẫn cài đặt cũng như trình bày các giới hạn hiện tại của docker trong container với Parallels Cloud Server.
Chuẩn bị:
Server Node chạy với kernel 2.6.32-042stab105.4 hoặc mới hơn.
 [root@pcs ~]# uname -r
 2.6.32-042stab106.4
Kernel modules veth và bridge phải được load.
[root@pcs ~]# lsmod | awk '$1=="veth" || $1=="bridge"'
veth                    4866  0
bridge                 85143  0

 
Container phải chạy là CentOS 7 hoặc Fedora 21.
Cài đặt

 Sử dụng bằng template.

Tạo container CentOS 7 hoặc Fedora 21.
[root@pcs ~]# vzctl create <CTID> --ostemplate centos-7-x86_64
 
Cấu hình bridged network cho container
 
 [root@pcs ~]# vzctl set <CTID> --netif_add eth0 --save
 [root@pcs ~]# vzctl set <CTID> --ifname eth0 --ipadd <IP>/<Netmask> --gw <GatewayIP> --save
 

Cấu hình bridged feature và full netfilter cho container.
 [root@pcs ~]# vzctl set <CTID> --features bridge:on --save
 [root@pcs ~]# vzctl set <CTID> --netfilter full --save
 [root@pcs ~]# vzctl set <CTID> --devnodes net/tun:rw –save

 
Cài đặt Docker application template Node
 
 [root@pcs ~]# yum install docker-centos-7-x86_64-ez

 
Cài đặt Docker template trong Container.
 
 [root@pcs ~]# vzctl start <CTID>
 [root@pcs ~]# vzpkg install <CTID> docker

 

 Cài đặt thủ công

Tạo Container CentOS 7 hoặc Fedora 21.
[root@pcs ~]# vzctl create <CTID> --ostemplate centos-7-x86_64
 
Cấu hình Bridged network cho Container.
[root@pcs ~]# vzctl set <CTID> --netif_add eth0 --save
[root@pcs ~]# vzctl set <CTID> --ifname eth0 --ipadd <IP>/<Netmask> --gw <GatewayIP> --save

 
Cấu hình Bridged feature và full netfilter cho Container
[root@pcs ~]# vzctl set <CTID> --features bridge:on --save
[root@pcs ~]# vzctl set <CTID> --netfilter full --save
[root@pcs ~]# vzctl set <CTID> --devnodes net/tun:rw --save

 
Cấu hình cgroups trong system
[root@pcs ~]# vzctl mount <CTID>
[root@pcs ~]# echo "JoinControllers=cpu,cpuacct,cpuset       freezer,devices" >> /vz/root/<CTID>/etc/systemd/system.conf

 
Chạy veth module trên Node.
[root@pcs ~]# modprobe veth
 
Khởi động Container.
[root@pcs ~]# vzctl start <CTID>
 
Cài đặt Docker trong Container.
Cài đặt Docker:
[root@docker ~]# yum -y install docker-io
Khởi động docker daemon
[root@docker ~]# service docker start
Giới Hạn.
Các giới hạn khi chạy Docker trong Container.
Chỉ hỗ trợ vfs Docker graph.
Không thể migrate các Container có Docker bên trong.
Bridged network không thể sử dụng trong Docker Container khi chạy trong PCS Container.
 
Vấn đề khi cài đặt Docker trong Container.
  • Service Docker không thể start với lỗi inappropriate ioctl for device.
[root@docker ~]# service docker start
Redirecting to /bin/systemctl start  docker.service
Job for docker.service failed. See 'systemctl status docker.service' and 'journalctl -xn' for details.
[root@docker ~]# systemctl status docker.service
docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled)
   Active: failed (Result: exit-code) since Fri 2015-04-03 17:24:05 NOVT; 9s ago
     Docs: http://docs.docker.com
  Process: 544 ExecStart=/usr/bin/docker -d $OPTIONS $DOCKER_STORAGE_OPTIONS $DOCKER_NETWORK_OPTIONS $ADD_REGISTRY $BLOCK_REGISTRY $INSECURE_REGISTRY (code=exited, status=1/FAILURE)
 Main PID: 544 (code=exited, status=1/FAILURE)
 
Apr 03 17:24:05 docker.host docker[544]: time="2015-04-03T17:24:05+06:00" level="info" msg="+job serveapi(unix:///var/run/docker.sock)"
Apr 03 17:24:05 docker.host docker[544]: time="2015-04-03T17:24:05+06:00" level="info" msg="+job init_networkdriver()"
Apr 03 17:24:05 docker.host docker[544]: inappropriate ioctl for device
Apr 03 17:24:05 docker.host docker[544]: time="2015-04-03T17:24:05+06:00" level="info" msg="-job init_networkdriver() = ERR (1)"
Apr 03 17:24:05 docker.host docker[544]: time="2015-04-03T17:24:05+06:00" level="fatal" msg="inappropriate ioctl for device"
 

Lỗi trên là do chưa enable tính năng bridged cho Container.
[root@pcs ~]# vzctl set <CTID> --features "bridge:on" --save
 
Lưu ý: Container nên được restart sau khi áp dụng command trên.
Service Docker không thể start do lỗi Unable to enable network bridge NAT.
[root@docker ~]# systemctl status docker.service
docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled)
   Active: failed (Result: exit-code) since Fri 2015-04-03 17:27:17 NOVT; 3s ago
     Docs: http://docs.docker.com
  Process: 445 ExecStart=/usr/bin/docker -d $OPTIONS $DOCKER_STORAGE_OPTIONS $DOCKER_NETWORK_OPTIONS $ADD_REGISTRY $BLOCK_REGISTRY $INSECURE_REGISTRY (code=exited, status=1/FAILURE)
 Main PID: 445 (code=exited, status=1/FAILURE)
 
Apr 03 17:24:05 docker.host docker[544]: time="2015-04-03T17:24:05+06:00" level="info" msg="+job serveapi(unix:///var/run/docker.sock)"
Apr 03 17:24:05 docker.host docker[544]: time="2015-04-03T17:24:05+06:00" level="info" msg="+job init_networkdriver()"
Apr 03 17:24:05 docker.host docker[544]: inappropriate ioctl for device
Apr 03 17:24:05 docker.host docker[544]: time="2015-04-03T17:24:05+06:00" level="info" msg="-job init_networkdriver() = ERR (1)"
Apr 03 17:24:05 docker.host docker[544]: time="2015-04-03T17:24:05+06:00" level="fatal" msg="inappropriate ioctl for device"
Apr 03 17:27:17 docker.host docker[445]: time="2015-04-03T17:27:17+06:00" level="info" msg="+job serveapi(unix:///var/run/docker.sock)"
Apr 03 17:27:17 docker.host docker[445]: time="2015-04-03T17:27:17+06:00" level="info" msg="Listening for HTTP on unix (/var/run/docker.sock)"
Apr 03 17:27:17 docker.host docker[445]: time="2015-04-03T17:27:17+06:00" level="info" msg="+job init_networkdriver()"
Apr 03 17:27:17 docker.host docker[445]: Unable to enable network bridge NAT: iptables failed: iptables --wait -I POSTROUTING -t nat -s 172.17.42.1/16 ! -o doc...to insmod?)
Apr 03 17:27:17 docker.host docker[445]: Perhaps iptables or your kernel needs to be upgraded.
Apr 03 17:27:17 docker.host docker[445]: (exit status 3)
Apr 03 17:27:17 docker.host docker[445]: time="2015-04-03T17:27:17+06:00" level="info" msg="-job init_networkdriver() = ERR (1)"
Apr 03 17:27:17 docker.host docker[445]: time="2015-04-03T17:27:17+06:00" level="fatal" msg=" (exit status 3)"
Hint: Some lines were ellipsized, use -l to show in full.
 

Lỗi trên do chưa enable full netfilter .
[root@pcs ~]# vzctl set <CTID> --netfilter full --save
 
Lưu ý: Container nên restart lại sau khi áp dụng command trên.
  • Không thể chạy Doceker Container với lỗi mountpoint for devices not found.
[root@docker ~]# docker run -i -t docker.io/centos "/bin/bash"
FATA[0027] Error response from daemon: Cannot start container 384ecb8bd892ff2e0bb45b785ffbbf9243e2d62fa9380dcf1baa9374daf138c2: mountpoint for devices not found

 
Lỗi trên do cgroup chưa được cấu hình.
[root@docker ~]# grep ^JoinControllers /etc/systemd/system.conf
[root@docker ~]#

Ví dụ cấu hình chính xác như sau
[root@docker ~]# grep ^JoinControllers /etc/systemd/system.conf
JoinControllers=cpu,cpuacct,cpuset freezer,devices

 
Để cấu hình cgroup, chạy command sau trong Container:
[root@docker ~]# echo "JoinControllers=cpu,cpuacct,cpuset freezer,devices" >> /etc/systemd/system.conf
[root@docker ~]# service docker restart

  • Không thể chạy Docker Container với lỗi operation not supported.
[root@docker ~]# docker run -i -t docker.io/centos "/bin/bash"
FATA[0022] Error response from daemon: Cannot start container fa074c365b09d47050ff39d2ce9fc4af94b551a5fc33fbc1da6e8cdd52af003a: operation not supported

 
Lỗi trên do module veth chưa được load trên Node.
[root@pcs ~]# lsmod | grep veth
[root@pcs ~]#

 
Tiến hành load module veth trên Node.
[root@pcs ~]# modprobe veth
 
Không thể chạy Docker Container với lỗi mountpoint for devices not found.
Lỗi trên do Node PCS không hỗ trợ kernel hiện tại, kernel chỉ được hổ trợ ở version 2.6.32-042stab106.4 hoặc mới hơn.
 
http://kb.odin.com/en/125115
ĐỐI TÁC
Cùng hợp tác, cùng phát triển vì một tương lai lớn mạnh.

  •   Địa chỉ trụ sở: Tầng 12, Tòa nhà trụ sở điều hành và trung tâm thương mại Viettel, 285 Cách Mạng Tháng 8, Phường 12, Quận 10, TP.HCM
  •   Văn phòng đại diện: Số 54 Đường C1, Phường 13, Quận Tân Bình, TP.HCM
  •   1900 6634 - (84-28) 7300 7788
  •   Fax: (84-28) 38 108 276
  •   info@ods.vn
DMCA.com Protection Status Thông báo bộ công thương
Copyright © 2016 | Powered By Online Data Services JSC. All Rights Reserved.
Sử dụng nội dung ở trang này và dịch vụ tại Online Data Services có nghĩa là bạn đồng ý với Thỏa thuận sử dụngChính sách bảo mật của chúng tôi.

Công ty Cổ phần ODS - Giấy phép kinh doanh số: 0314779796 cấp ngày 8 tháng 12 năm 2017 bởi Sở Kế Hoạch và Đầu Tư Tp.Hồ Chí Minh