ubuntu移植docker,並使用

系統:ubuntu16.04

內核版本:4.4.167

硬件:rk3399

1.安裝必要工具:

apt-get update

apt-get upgrade

apt-get install curl

2.內核使能添加配置:

有些版本內核(imx6q的4.1.15)可以直接下載官方檢測內核配置腳本:

下載檢測腳本sudo curl https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh > check-config.sh
賦予執行權限chmod 777 check-config.sh
運行腳本./check-config.sh,會出現以下打印信息:

root@ParkW:/usr# ./check-config.sh
info: reading kernel config from /proc/config.gz ...

Generally Necessary:
- cgroup hierarchy: properly mounted [/sys/fs/cgroup]
- CONFIG_NAMESPACES: enabled
- CONFIG_NET_NS: enabled
- CONFIG_PID_NS: enabled
- CONFIG_IPC_NS: enabled
- CONFIG_UTS_NS: enabled
- CONFIG_CGROUPS: enabled
- CONFIG_CGROUP_CPUACCT: enabled
- CONFIG_CGROUP_DEVICE: enabled
- CONFIG_CGROUP_FREEZER: enabled
- CONFIG_CGROUP_SCHED: enabled
- CONFIG_CPUSETS: enabled
- CONFIG_MEMCG: enabled           
- CONFIG_KEYS: enabled
- CONFIG_VETH: enabled           
- CONFIG_BRIDGE: enabled       
- CONFIG_BRIDGE_NETFILTER: enabled   
- CONFIG_NF_NAT_IPV4: enabled       
- CONFIG_IP: enabled           
- CONFIG_IP_NF_TARGET_MASQUERADE: enabled       
- CONFIG_NETFILTER_XT_MATCH_ADDRTYPE: enabled       
- CONFIG_NETFILTER_XT_MATCH_CONNTRACK: enabled       
- CONFIG_NETFILTER_XT_MATCH_IPVS: enabled       
- CONFIG_IP_NF_NAT: enabled               
- CONFIG_NF_NAT: enabled               
- CONFIG_NF_NAT_NEEDED: enabled               
- CONFIG_POSIX_MQUEUE: enabled               
- CONFIG_DEVPTS_MULTIPLE_INSTANCES: enabled       

Optional Features:
- CONFIG_USER_NS: missing
- CONFIG_SECCOMP: missing
- CONFIG_CGROUP_PIDS: missing
- CONFIG_MEMCG_SWAP: missing
- CONFIG_MEMCG_SWAP_ENABLED: missing
- CONFIG_MEMCG_KMEM: missing
- CONFIG_BLK_CGROUP: missing
- CONFIG_BLK_DEV_THROTTLING: missing
- CONFIG_IOSCHED_CFQ: enabled
- CONFIG_CFQ_GROUP_IOSCHED: missing
- CONFIG_CGROUP_PERF: missing
- CONFIG_CGROUP_HUGETLB: missing
- CONFIG_NET_CLS_CGROUP: enabled
- CONFIG_CGROUP_NET_PRIO: enabled
- CONFIG_CFS_BANDWIDTH: missing
- CONFIG_FAIR_GROUP_SCHED: enabled
- CONFIG_RT_GROUP_SCHED: missing
- CONFIG_IP_NF_TARGET_REDIRECT: enabled
- CONFIG_IP_VS: enabled
- CONFIG_IP_VS_NFCT: missing
- CONFIG_IP_VS_PROTO_TCP: missing
- CONFIG_IP_VS_PROTO_UDP: missing
- CONFIG_IP_VS_RR: missing
- CONFIG_EXT3_FS: enabled
- CONFIG_EXT3_FS_XATTR: enabled
- CONFIG_EXT3_FS_POSIX_ACL: enabled
- CONFIG_EXT3_FS_SECURITY: enabled
- CONFIG_EXT4_FS: enabled
- CONFIG_EXT4_FS_POSIX_ACL: enabled
- CONFIG_EXT4_FS_SECURITY: enabled
- Network Drivers:
  - "overlay":
    - CONFIG_VXLAN: missing
      Optional (for encrypted networks):
      - CONFIG_CRYPTO: enabled
      - CONFIG_CRYPTO_AEAD: enabled
      - CONFIG_CRYPTO_GCM: enabled
      - CONFIG_CRYPTO_SEQIV: enabled
      - CONFIG_CRYPTO_GHASH: enabled
      - CONFIG_XFRM: enabled
      - CONFIG_XFRM_USER: missing
      - CONFIG_XFRM_ALGO: enabled
      - CONFIG_INET_ESP: missing
      - CONFIG_INET_XFRM_MODE_TRANSPORT: missing
  - "ipvlan":
    - CONFIG_IPVLAN: enabled
  - "macvlan":
    - CONFIG_MACVLAN: enabled
    - CONFIG_DUMMY: missing
  - "ftp,tftp client in container":
    - CONFIG_NF_NAT_FTP: missing
    - CONFIG_NF_CONNTRACK_FTP: missing
    - CONFIG_NF_NAT_TFTP: missing
    - CONFIG_NF_CONNTRACK_TFTP: missing
- Storage Drivers:
  - "aufs":
    - CONFIG_AUFS_FS: missing
  - "btrfs":
    - CONFIG_BTRFS_FS: missing
    - CONFIG_BTRFS_FS_POSIX_ACL: missing
  - "devicemapper":
    - CONFIG_BLK_DEV_DM: missing
    - CONFIG_DM_THIN_PROVISIONING: missing
  - "overlay":
    - CONFIG_OVERLAY_FS: enabled
  - "zfs":
    - /dev/zfs: missing
    - zfs command: missing
    - zpool command: missing

Limits:
- /proc/sys/kernel/keys/root_maxkeys: 1000000

需要將主要欄目(Generally Necessary:)內的非enabled的配置項目在內核源碼中使用make ARCH=arm(arm64) menuconfig選中。

rk3399內核不能使用這個檢測腳本,可以直接在內核源碼中使用make ARCH=arm64 menuconfig,直接選中以下配置項即可:

- CONFIG_NAMESPACES: enabled
- CONFIG_NET_NS: enabled
- CONFIG_PID_NS: enabled
- CONFIG_IPC_NS: enabled
- CONFIG_UTS_NS: enabled
- CONFIG_CGROUPS: enabled
- CONFIG_CGROUP_CPUACCT: enabled
- CONFIG_CGROUP_DEVICE: enabled
- CONFIG_CGROUP_FREEZER: enabled
- CONFIG_CGROUP_SCHED: enabled
- CONFIG_CPUSETS: enabled
- CONFIG_MEMCG: enabled           
- CONFIG_KEYS: enabled
- CONFIG_VETH: enabled           
- CONFIG_BRIDGE: enabled       
- CONFIG_BRIDGE_NETFILTER: enabled   
- CONFIG_NF_NAT_IPV4: enabled       
- CONFIG_IP: enabled           
- CONFIG_IP_NF_TARGET_MASQUERADE: enabled       
- CONFIG_NETFILTER_XT_MATCH_ADDRTYPE: enabled       
- CONFIG_NETFILTER_XT_MATCH_CONNTRACK: enabled       
- CONFIG_NETFILTER_XT_MATCH_IPVS: enabled       
- CONFIG_IP_NF_NAT: enabled               
- CONFIG_NF_NAT: enabled               
- CONFIG_NF_NAT_NEEDED: enabled               
- CONFIG_POSIX_MQUEUE: enabled               
- CONFIG_DEVPTS_MULTIPLE_INSTANCES: enabled       

3.安裝docker

使用命令獲得安裝腳本, docker不建議使用apt-get來安裝, 據網上的大神說ubuntu官方源安裝的docker不能使用:

curl -fssl https://get.docker.com -o get-docker.sh

賦予執行權限:chmod 777 get-docker.sh

執行安裝腳本進行安裝:./get-docker.sh

4.使用docker

1)啓動docker服務

service docker start

2)啓動某個image(鏡像)的container(容器)

docker的鏡像稱爲image,容器爲container

對於Docker來說,image是靜態的,類似於操作系統快照,而container則是動態的,是image的運行實例。

比如,有一個image名稱爲ubuntu,那麼比如現在我們啓動這個image的container並且進入到這個container的bash命令行中:

docker run -t -i ubuntu /bin/bash
  • docker run:啓動container

  • ubuntu:你想要啓動的image

  • -t:進入終端

  • -i:獲得一個交互式的連接,通過獲取container的輸入

  • /bin/bash:在container中啓動一個bash shell

這樣就進入container的內部了:

root@4c69aba0c516:/#

如果要正常退出不關閉容器,請按Ctrl+P+Q進行退出容器,即容器後臺運行。

如果要正常退出並關閉,請輸入exit 進行退出容器,即容器關閉退出。

如果有運行中的container,可以在container所在的外部操作系統中運行,這個命令可以查看當前正在運行的容器:docker ps

docker ps

root@EmbedSky-Board:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
4c69aba0c516        ubuntu              "/bin/bash"         38 seconds ago      Up 35 seconds                           jolly_chaplygin

如果想看到所有的container,包括運行中的,以及未運行的或者說是沉睡鏡像,和運行過已經關閉的,則運行:docker ps -a

docker ps -a

root@EmbedSky-Board:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                          PORTS               NAMES
4c69aba0c516        ubuntu              "/bin/bash"         About a minute ago   Up About a minute                                   jolly_chaplygin
bda09e02db27        ubuntu              "/bin/bash"         3 minutes ago        Exited (0) About a minute ago                       wizardly_taussig
b584ccc188fd        ubuntu              "/bin/bash"         7 minutes ago        Exited (0) About a minute ago                       stupefied_chaum
ab9ace972eb0        ubuntu              "/bin/bash"         About an hour ago    Exited (0) 26 minutes ago                           sad_curie

使用docker restart [NAMES]命令重啓容器,用於用exit退出後已關閉的容器重啓,最後一個參數是docker ps -a查看的最後一項NAMES,如:

root@ab9ace972eb0:/# exit
exit
root@EmbedSky-Board:~# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
root@EmbedSky-Board:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                          PORTS               NAMES
ab9ace972eb0        ubuntu              "/bin/bash"         About an hour ago   Exited (0) About a minute ago                       sad_curie
root@EmbedSky-Board:~# docker restart sad_curie
sad_curie
root@EmbedSky-Board:~# docker ps   
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
ab9ace972eb0        ubuntu              "/bin/bash"         About an hour ago   Up 19 seconds                           sad_curie



使用docker attach [NAMES] 命令進入容器,用於後臺運行沒有被關閉的容器,即使用命令docker ps可以看到的:

root@4c69aba0c516:/# 使用ctrl+Q+P
root@EmbedSky-Board:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
4c69aba0c516        ubuntu              "/bin/bash"         11 minutes ago      Up 11 minutes                           jolly_chaplygin
root@EmbedSky-Board:~# docker attach jolly_chaplygin
root@4c69aba0c516:/# 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章