許多國産化項目部署需要用到docker,而伺服器有必須處于離線狀态,那麼離線安裝docker就成為了一個問題,離線安裝docker本身并不難,難的是安裝docker的依賴軟體。
經過多次嘗試,依賴軟體也沒有安裝成功,在一籌莫展之際,在docker官網看到,有一種離線安裝方式叫:static binaries

一、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
這個是因為預設的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
docker的運作依賴于iptables,利用其中的nat功能
下載下傳iptables:http://mirrors.ustc.edu.cn/debian/pool/main/i/iptables/
安裝即可。