天天看點

使用static binaries離線安裝docker

  許多國産化項目部署需要用到docker,而伺服器有必須處于離線狀态,那麼離線安裝docker就成為了一個問題,離線安裝docker本身并不難,難的是安裝docker的依賴軟體。

  經過多次嘗試,依賴軟體也沒有安裝成功,在一籌莫展之際,在docker官網看到,有一種離線安裝方式叫:static binaries

使用static binaries離線安裝docker

一、static binaries安裝docker

1,下載下傳離線靜态包:https://download.docker.com/linux/static/stable/

2,執行指令:

1 sudo cp docker/* /usr/bin/
2 sudo dockerd &      

二、啟動遇到的問題

   正常隻要進行上述兩個步驟就可以成功了,但是還是遇到了一些問題。

1,failed to start daemon: Devices cgroup isn't mounted

使用static binaries離線安裝docker

這個是因為預設的cgroup的cpu,memory等沒有被挂載,需要使用一個腳本來挂載,具體使用腳本是

1 #!/bin/sh
 2 # Copyright 2011 Canonical, Inc
 3 #           2014 Tianon Gravi
 4 # Author: Serge Hallyn <[email protected]>
 5 #         Tianon Gravi <[email protected]>
 6 set -e
 7 
 8 # for simplicity this script provides no flexibility
 9 
10 # if cgroup is mounted by fstab, don't run
11 # don't get too smart - bail on any uncommented entry with 'cgroup' in it
12 if grep -v '^#' /etc/fstab | grep -q cgroup; then
13     echo 'cgroups mounted from fstab, not mounting /sys/fs/cgroup'
14     exit 0
15 fi
16 
17 # kernel provides cgroups?
18 if [ ! -e /proc/cgroups ]; then
19     exit 0
20 fi
21 
22 # if we don't even have the directory we need, something else must be wrong
23 if [ ! -d /sys/fs/cgroup ]; then
24     exit 0
25 fi
26 
27 # mount /sys/fs/cgroup if not already done
28 if ! mountpoint -q /sys/fs/cgroup; then
29     mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
30 fi
31 
32 cd /sys/fs/cgroup
33 
34 # get/mount list of enabled cgroup controllers
35 for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do
36     mkdir -p $sys
37     if ! mountpoint -q $sys; then
38         if ! mount -n -t cgroup -o $sys cgroup $sys; then
39             rmdir $sys || true
40         fi
41     fi
42 done
43 
44 # example /proc/cgroups:
45 #  #subsys_name    hierarchy    num_cgroups    enabled
46 #  cpuset    2    3    1
47 #  cpu    3    3    1
48 #  cpuacct    4    3    1
49 #  memory    5    3    0
50 #  devices    6    3    1
51 #  freezer    7    3    1
52 #  blkio    8    3    1
53 
54 # enable cgroups memory hierarchy, like systemd does (and lxc/docker desires)
55 # https://github.com/systemd/systemd/blob/v245/src/core/cgroup.c#L2983
56 # https://bugs.debian.org/940713
57 if [ -e /sys/fs/cgroup/memory/memory.use_hierarchy ]; then
58     echo 1 > /sys/fs/cgroup/memory/memory.use_hierarchy
59 fi
60 
61 exit 0      

2,failed to create NAT chain DOCKER: iptables failed

使用static binaries離線安裝docker

 docker的運作依賴于iptables,利用其中的nat功能

下載下傳iptables:http://mirrors.ustc.edu.cn/debian/pool/main/i/iptables/

安裝即可。