系统信息Distributor ID: RaspbianDescription: Raspbian GNU/Linux 8.0 (jessie)Release: 8.0Codena
系统信息
Distributor ID: RaspbianDescription: Raspbian GNU/Linux 8.0 (jessie)Release: 8.0Codename: jessie
安装步骤
1、配置源地址
vi /etc/apt/sources.list我配置的源地址如下:
deb http://mirrors.zju.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpideb-src http://mirrors.zju.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpi
2、更新
sudo apt-get update
3、安装一些工具包
sudo apt-get install / apt-transport-https / ca-certificates / curl / software-properties-common
4、安装docker
apt安装各种失败,直接下载package安装了。
wget https://apt.dockerproject.org/repo/pool/main/d/docker-engine/docker-engine_17.03.0~ce-0~raspbian-jessie_armhf.debsudo dpkg -i docker-engine_17.03.0~ce-0~raspbian-jessie_armhf.deb
5、安装完成
root@raspberrypi:/u02/docker# docker versionClient: Version: 17.03.0-ce API version: 1.26 Go version: go1.7.5 Git commit: 60ccb22 Built: Thu Feb 23 11:32:23 2017 OS/Arch: linux/armServer: Version: 17.03.0-ce API version: 1.26 (minimum version 1.12) Go version: go1.7.5 Git commit: 60ccb22 Built: Thu Feb 23 11:32:23 2017 OS/Arch: linux/arm Experimental: false
使用过程中遇到的问题
###1、运行sudo docker run hello-world
报错:docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.See 'docker run --help'.
解决办法:检查docker有没有启动
service docker start发现报错:Job for docker.socket failed. See 'systemctl status docker.socket' and 'journalctl -xn' for details.A dependency job for docker.service failed. See 'journalctl -xn' for details.root@raspberrypi: journalctl -xnMar 18 23:43:10 raspberrypi systemd[1]: Unit docker.socket entered failed state.Mar 18 23:43:10 raspberrypi sudo[28389]: pam_unix(sudo:session): session closed for user rootMar 18 23:43:23 raspberrypi oray_serve[689]: 2017-03-18 23:43:23 0x00000001 [ddns] OnStatusChanged -> okKeepAliveRecvedMar 18 23:43:23 raspberrypi oray_serve[689]: status:4根据文档提示:https://docs.docker.com/engine/installation/linux/linux-postinstall/创建docker用户组, sudo groupadd dockersudo usermod -aG docker $USER
2、继续启动,发现还是报错
Mar 18 23:47:49 raspberrypi dockerd[28527]: /usr/bin/dockerd: error while loading shared libraries: libapparmor.so.1: cannot open shared object file: No such file or d
解决办法:缺少依赖包,继续安装
apt-get install libapparmor1
###3、docker run hello-world发现timeout
Unable to find image 'hello-world:latest' locallydocker: Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/latest: Get https://auth.docker.io/token?scope=repository%3Alibrary%2Fhello-world%3Apull&service=registry.docker.io: net/http: TLS handshake timeout.
解决办法:改用国内镜像
vi /etc/docker/daemon.json# 内容如下,新版使用这种方式配置,和之前的有区别,参考这个https://docs.docker.com/engine/reference/commandline/dockerd/#/daemon-configuration-file{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}sudo service docker restart
4、docker run hello-world 此处报错
standard_init_linux.go:178: exec user process caused "exec format error"
解决方案:原因是镜像版本不对,树莓派需要使用docker run armhf/hello-world
###5、运行简单的jarjava源码
public class DockerTest{ public static void main(String[] args) throws Exception{ System.out.println("hello world"); }}
经过编译,打包为dockerjava.jardockerfile文件内容:
# java版本必须是armhf,否则会提示异常standard_init_linux.go:178: exec user process caused "exec format error"FROM armhfbuild/java VOLUME /tmpADD dockerjava.jar /app.jarCMD java -jar /app.jar
大功告成
root@raspberrypi:/u02/docker# docker build -t hello-java .Sending build context to Docker daemon 9.216 kBStep 1/4 : FROM armhfbuild/javalatest: Pulling from armhfbuild/javaa3ed95caeb02: Pull complete cc755030d803: Pull complete 45cef0a2caa7: Pull complete e9fb2d3feaa1: Pull complete 01896f522502: Pull complete b79812d20a3d: Pull complete f4de4a92a47d: Pull complete 69a8f602f62d: Pull complete Digest: sha256:e32fd699d42d09e049ded4624f0a9c50b1237853859b3e658dc9f5c5b544ab4bStatus: Downloaded newer image for armhfbuild/java:latest ---> 2c4f3e2b6be5Step 2/4 : VOLUME /tmp ---> Running in 1937881bc764 ---> bcebdbde871eRemoving intermediate container 1937881bc764Step 3/4 : ADD dockerjava.jar /app.jar ---> a63205b5b6cbRemoving intermediate container f4c3c891e76cStep 4/4 : CMD java -jar /app.jar ---> Running in 2a2540964e7f ---> b6bec8602898Removing intermediate container 2a2540964e7fSuccessfully built b6bec8602898root@raspberrypi:/u02/docker# docker run hello-javahello world
总结
树莓派是arm处理器,所以在下载镜像的时候一定要注意。