博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
96Boards(410C)中的Docker使用方法
阅读量:6821 次
发布时间:2019-06-26

本文共 5780 字,大约阅读时间需要 19 分钟。

hot3.png

ARM64已经成为手机上的主流,而且开始进入服务器领域(中国的全志、辉腾等芯片也都是ARM架构),很多开发板也相继推出。为了充分发挥其能力,我希望能在上面运行Docker。但是,目前虽然ARM32上面已经有多个Docker移植版本,但是ARM64上很多不可用。下面是96Boards(410C)的系统中Docker使用方法,目前只有1.9.1版本,更新版本需要自己安装源码编译(参考:)。

注意:

  • 烧写最新系统:
  • 更新源,运行:sudo apt update
  • 安装Docker,运行: sudo apt install docker-engine
  • 让Docker在用户空间运行:sudo usermod -aG docker linaro
  • 按照中的指南编译Docker新版本。
  • 编译之前不要运行 sudo apt upgrade,因为目前docker源只有1.9.1版本,如果系统其它裤更新到了新版,可能导致Docker无法运行。在编译安装完新版Docker(1.12以后版本)后,再去更新系统。

以下内容来自于:,查看最新版本信息,请看原文。

Instructions for Installing Docker on a Consumer Edition 96Boards

This document will show you how to install and test the Debian Docker apt package on the 96Boards with 1GB RAM using the Reference Platform Build 16.03 which is . This document was created for Docker v1.9.1.

This material was covered in our and can be paired with .

First of all you need a kernel on your 96Boards which meets the Docker requirements. To check the kernel support for Docker, you can run the following script

$ sudo ./check-config.sh .

This script can be found in /usr/share/docker/ or /usr/share/docker.io/contrib, or on github at

The output of the script is a Docker critique of your kernel config. For the 16.03 Reference Platform Build kernel, the results should look like this:

This was the standard 96Boards kernel from the 16.03 Reference Platform Build, it meets all the mandatory requirements.

With the overlays for the Reference Platform Build, you can run Docker on Debian Jessie, this is the distro version supported by the Reference Platform Build. You are now ready to install Docker. The instructions on docker.com point you to adding x86-based package repos to sources.list.d, which is problematic for obvious reasons. Please skip those and use the standard Debian repositories with:

$ sudo apt-get install docker-engine

This will install Docker version 1.9.1.

Running Docker

Docker installs a daemon and a client. To start with daemon enter the following:

$ sudo service docker start

Docker is not very architecture aware, yet. In fact, running the following command on an ARM-based system will give you a FATAL “Cannot start container” error:

$ docker run -ti ubuntu /bin/bash

This is because Docker tried to run an x86 container image from hub.docker.com on your ARM hardware. You need to explicitly reference Docker images for the aarch64 architecture, or roll your own. The Docker Hub repository has some ‘experimental’ images for aarch64 which worked fine for me.

Running a first container is a case of:

$ sudo docker run -it aarch64/ubuntu /bin/bash

This will fetch an image for Ubuntu Xenial from the aarch64 directory at hub.docker.com, and launch it with a shell interactively. Once the image is launched it is called a container and has a container ID. From the container command line prompt, if you type e.g.

$ cat /etc/apt/sources.list

You should see that you’re in an Ubuntu image rather than the Debian Stretch host. Exiting the shell kills and removes the container. You can launch the same image several times with docker run to have several independent containers.

Here are two Ubuntu docker containers running on this 96Boards example. The following command will list all running containers and their status:

$ sudo docker ps

Although this document shows the same image for both, they are separate running instances and have different container IDs

(Note: you can create a docker group to avoid having to sudo everything)

Building a Docker Base Image

You can create a new Docker base image (an image which does not depend on another Docker image) for a Debian-based distro using debootstrap.

Here you will see how to do it with a base Stretch aarch64 Docker image.

This example uses a USB thumb drive (at /dev/sda1) on a 96Boards to avoid running out of storage space. The USB drive needs to be mounted with -o exec.

$ sudo apt-get install debootstrap$ sudo umount /dev/sda1$ sudo mount -o exec /dev/sda1 /media/linaro/thumb$ sudo debootstrap --arch arm64 stretch /media/linaro/thumb/stretch

Debootstrap needs to be told to create an arm64 (aarch64) rootfs.

Then create a tarfile from the rootfs and pipe it into docker import.

$ sudo tar -C /media/linaro/thumb/stretch/ -cf ~/stretch.tar .$ cat stretch.tar | sudo docker import - mystretchbase

Our Stretch Docker base image is called mystretchbase. It exists on our local machine along with the cached copy of the ubuntu image we loaded earlier from hub.docker.com:

$ sudo docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZEmystretchbase     latest              2ce74caa6a46        17 hours ago        277.1 MBaarch64/ubuntu      latest              08b9525bda5d        6 days ago          114.1 MB

We can launch it with the following command:

$ sudo docker run -it mystretchbase /bin/bash

Wrap Up

We installed the Docker package for Debian Jessie giving Docker functionality on an aarch64 board with only 1GB of RAM. If you have an Enterprise-class board with a decent amount of RAM there is a guide to compiling Docker from source found

To try out your running container, why not install an Apache web server in it? By default, containers have an IP address and network access via a Docker networking bridge. Although containers are automatically assigned an IP address, inherent DNS for containers is not supported on Docker 1.9.1 - installed in this post - but will be available in 1.10. If you want DNS then you will have to add it either to your host - or of course it could be as another flavour of container - providing a DNS server. Once you’ve built any container you’re happy with, you can save the image for later use. You can also automate re-creating the image by recording the steps in a Dockerfile and using docker build.

转载于:https://my.oschina.net/u/2306127/blog/802718

你可能感兴趣的文章
ssh 连接非22端口服务器的方法:
查看>>
Linux基础入门
查看>>
org.hibernate.hql.internal.ast.QuerySyntaxException: user is not mapped
查看>>
图解排序算法之快速排序-双端探测法
查看>>
mysql
查看>>
11月15日云栖精选夜读:分布式服务框架Dubbo疯狂更新!阿里开源要搞大事情?...
查看>>
Druid数据库连接池就这么简单
查看>>
Python最假的库:Faker
查看>>
IDE 插件新版本发布,开发效率 “biu” 起来了
查看>>
阿里云安全肖力:安全基础建设是企业数字化转型的基石
查看>>
Redis 基础、高级特性与性能调优
查看>>
BZT52C15S资料
查看>>
Laravel Telescope入门教程(上)
查看>>
Linux配置ip 及网络问题排查
查看>>
AndroidStudio用Cmake方式编译NDK代码(cmake配置.a库)
查看>>
OSChina 周四乱弹 ——黑丝短裙java程序员同事
查看>>
设置iptables之后不能正常访问ftp解决方法
查看>>
移动端rem布局
查看>>
jsp与iframe跨域访问的一个方法
查看>>
ViewPager + Fragment 取消预加载
查看>>