Docker

Discussion in 'UDOO NEO' started by Gorgo, Sep 10, 2017.

  1. Gorgo

    Gorgo UDOOer

    Joined:
    Nov 9, 2016
    Messages:
    159
    Likes Received:
    17
    Any chance to run docker on Udoobuntu?
    I checked the kernel config with a shell script and it says:
    Code:
    root@udooneo:/#  curl -L https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh | /bin/bash /dev/stdin /path/to/.config
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100 10257  100 10257    0     0  24735      0 --:--:-- --:--:-- --:--:-- 24775
    warning: /path/to/.config does not exist, searching other paths for kernel config ...
    info: reading kernel config from /boot/config-3.14.56-udooneo-02054-gc460cad ...
    
    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: missing
    - CONFIG_CGROUP_DEVICE: enabled
    - CONFIG_CGROUP_FREEZER: enabled
    - CONFIG_CGROUP_SCHED: missing
    - CONFIG_CPUSETS: missing
    - CONFIG_MEMCG: missing
    - CONFIG_KEYS: enabled
    - CONFIG_VETH: missing
    - CONFIG_BRIDGE: enabled (as module)
    - CONFIG_BRIDGE_NETFILTER: enabled
    - CONFIG_NF_NAT_IPV4: enabled (as module)
    - CONFIG_IP_NF_FILTER: enabled (as module)
    - CONFIG_IP_NF_TARGET_MASQUERADE: enabled (as module)
    - CONFIG_NETFILTER_XT_MATCH_ADDRTYPE: missing
    - CONFIG_NETFILTER_XT_MATCH_CONNTRACK: missing
    - CONFIG_NETFILTER_XT_MATCH_IPVS: missing
    - CONFIG_IP_NF_NAT: missing
    - CONFIG_NF_NAT: enabled (as module)
    - CONFIG_NF_NAT_NEEDED: enabled
    - CONFIG_POSIX_MQUEUE: missing
    - CONFIG_DEVPTS_MULTIPLE_INSTANCES: missing
    
    Optional Features:
    - CONFIG_USER_NS: missing
    - CONFIG_SECCOMP: enabled
    - CONFIG_CGROUP_PIDS: missing
    - CONFIG_MEMCG_SWAP: missing
    - CONFIG_MEMCG_SWAP_ENABLED: missing
    - CONFIG_MEMCG_KMEM: missing
    - CONFIG_RESOURCE_COUNTERS: 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: missing
    - CONFIG_CGROUP_NET_PRIO: missing
    - CONFIG_CFS_BANDWIDTH: missing
    - CONFIG_FAIR_GROUP_SCHED: missing
    - CONFIG_RT_GROUP_SCHED: missing
    - CONFIG_IP_VS: missing
    - CONFIG_IP_VS_NFCT: missing
    - CONFIG_IP_VS_RR: missing
    - CONFIG_EXT3_FS: missing
    - CONFIG_EXT3_FS_XATTR: missing
    - CONFIG_EXT3_FS_POSIX_ACL: missing
    - CONFIG_EXT3_FS_SECURITY: missing
        (enable these ext3 configs if you are using ext3 as backing filesystem)
    - CONFIG_EXT4_FS: enabled
    - CONFIG_EXT4_FS_POSIX_ACL: enabled
    - CONFIG_EXT4_FS_SECURITY: enabled
    - Network Drivers:
      - "overlay":
        - CONFIG_VXLAN: enabled (as module)
          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: missing
          - CONFIG_INET_ESP: missing
          - CONFIG_INET_XFRM_MODE_TRANSPORT: enabled (as module)
      - "ipvlan":
        - CONFIG_IPVLAN: missing
      - "macvlan":
        - CONFIG_MACVLAN: enabled (as module)
        - CONFIG_DUMMY: enabled (as module)
      - "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: missing
      - "zfs":
        - /dev/zfs: missing
        - zfs command: missing
        - zpool command: missing
    
    Limits:
    - /proc/sys/kernel/keys/root_maxkeys: 1000000
    
    It lacks of lots of modules. Should I build a custom kernel?
     
  2. jas-mx

    jas-mx Active Member

    Joined:
    Dec 31, 2013
    Messages:
    407
    Likes Received:
    118
    Yes you need to build a custom kernel.
     
  3. Gorgo

    Gorgo UDOOer

    Joined:
    Nov 9, 2016
    Messages:
    159
    Likes Received:
    17
    I tried.
    Following the guide (https://www.udoo.org/docs-neo/Advanced_Topics/Compile_Linux_Kernel.html) I did menuconfig.
    I activated the modules I need, I followed the following steps, copied zImage and dtb to /boot/dts-overlay but my config file seems wrong:

    Code:
    root@udooneo:/home/udooer# cat /boot/config-3.14.56-udooneo-02054-gc460cad | grep CGROUP_CPUACCT
    # CONFIG_CGROUP_CPUACCT is not set
    In menyconfig CGROUP_CPUACCT is set to YES.
    Why?

    Docker partially works:

    Code:
    root@udooneo:/home/udooer# docker info
    Containers: 6
     Running: 0
     Paused: 0
     Stopped: 6
    Images: 4
    Server Version: 17.07.0-ce
    Storage Driver: devicemapper
     Pool Name: docker-179:2-510194-pool
     Pool Blocksize: 65.54kB
     Base Device Size: 10.74GB
     Backing Filesystem: ext4
     Data file: /dev/loop0
     Metadata file: /dev/loop1
     Data Space Used: 588MB
     Data Space Total: 107.4GB
     Data Space Available: 9.974GB
     Metadata Space Used: 1.462MB
     Metadata Space Total: 2.147GB
     Metadata Space Available: 2.146GB
     Thin Pool Minimum Free Space: 10.74GB
     Udev Sync Supported: true
     Deferred Removal Enabled: false
     Deferred Deletion Enabled: false
     Deferred Deleted Device Count: 0
     Data loop file: /var/lib/docker/devicemapper/devicemapper/data
     Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
     Library Version: 1.02.77 (2012-10-15)
    Logging Driver: json-file
    Cgroup Driver: cgroupfs
    Plugins:
     Volume: local
     Network: bridge host macvlan null overlay
     Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
    Swarm: inactive
    Runtimes: runc
    Default Runtime: runc
    Init Binary: docker-init
    containerd version: 3addd840653146c90a254301d6c3a663c7fd6429
    runc version: 2d41c047c83e09a6d61d464906feb2a2f3c52aa4
    init version: 949e6fa
    Kernel Version: 3.14.56-02054-gc460cad
    Operating System: Ubuntu 14.04.5 LTS
    OSType: linux
    Architecture: armv7l
    CPUs: 1
    Total Memory: 992.4MiB
    Name: udooneo
    ID: LOHV:GNVV:5HGE:5ROB:IROV:YZRW:SGCA:4FOC:MKVD:PQ6N:BSXS:ZXMK
    Docker Root Dir: /var/lib/docker
    Debug Mode (client): false
    Debug Mode (server): false
    Registry: https://index.docker.io/v1/
    Experimental: false
    Insecure Registries:
     127.0.0.0/8
    Live Restore Enabled: false
    
    WARNING: devicemapper: usage of loopback devices is strongly discouraged for production use.
             Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
    WARNING: No cpu cfs quota support
    WARNING: No cpu cfs period support
    
    But I can't run a armv7 image:
    Code:
    root@udooneo:/home/udooer# docker run -ti arm32v7/busybox /bin/sh
    Unable to find image 'arm32v7/busybox:latest' locally
    latest: Pulling from arm32v7/busybox
    bb07b4fe9fad: Pull complete
    Digest: sha256:a8fe0549cac196f439de3bf2b57af14f7cd4e59915ccd524428f588628a4ef31
    Status: Downloaded newer image for arm32v7/busybox:latest
    docker: Error response from daemon: oci runtime error: container_linux.go:262: starting container process caused "process_linux.go:339: container init caused \"open /dev/ptmx: no such file or directory\"".
    
     
  4. Gorgo

    Gorgo UDOOer

    Joined:
    Nov 9, 2016
    Messages:
    159
    Likes Received:
    17
    Ok now seems to work.
    I think the script didn't check correctly because the config file in /boot/ was the old one.
    Actually docker started but the last error was due to the -ti flag (interactive shell).

    Mounting dev, fixes the problem:

    Code:
    root@udooneo:/home/udooer# sudo docker run -ti -v "/dev:/dev" arm32v7/ubuntu /bin/sh
    # date
    Tue Sep 12 10:35:21 UTC 2017
     
    waltervl likes this.

Share This Page