树莓派docker搭建配置

搭建docker环境

如果你过去安装过 docker,先删掉:

1
sudo apt-get remove docker docker-engine docker.io

首先安装依赖:

1
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common

信任 Docker 的 GPG 公钥:

1
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

如果你是树莓派或其它ARM架构计算机,请运行:

1
echo "deb [arch=armhf] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian \     $(lsb_release -cs) stable" | \    sudo tee /etc/apt/sources.list.d/docker.list

最后安装

1
sudo apt-get updatesudo apt-get install docker-ce

使用脚本自动安装

在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Raspbian 系统上可以使用这套脚本安装,另外可以通过 --mirror 选项使用国内源进行安装:

1
2
3
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun#
$ sudo sh get-docker.sh --mirror AzureChinaCloud

执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker CE 的稳定(stable)版本安装在系统中。

启动 Docker CE

1
$ sudo systemctl enable docker$ sudo systemctl start docker

建立 docker 用户组

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

建立 docker 组:

1
$ sudo groupadd docker

将当前用户加入 docker 组:

1
$ sudo usermod -aG docker $USER

退出当前终端并重新登录,进行如下测试。

测试 Docker 是否安装正确

1
$ docker run hello-worldUnable to find image 'hello-world:latest' locallylatest: Pulling from library/hello-world4ee5c797bcd7: Pull complete Digest: sha256:f9dfddf63636d84ef479d645ab5885156ae030f611a56f3a7ac7f2fdd86d7e4eStatus: Downloaded newer image for hello-world:latestHello from Docker!This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.   (arm32v7)3. The Docker daemon created a new container from that image which runs the   executable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent it   to your terminal.To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID: https://hub.docker.com/For more examples and ideas, visit: https://docs.docker.com/get-started/

docker-compose的安装

开始是找的国内的镜像,但是下载一直是8k的文件不能执行打开就是文件下载失败这种内容,可能是我这个网络问题

1
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose

后面我找到别的资源

至此Docker就安装好了,再安装docker compose。
先看有没有pip或pip3,有就直接卸了。然后安装:

Bash

1
2
$ apt-get remove python-pip python3-pip
$ wget https://bootstrap.pypa.io/get-pip.py$ python get-pip.py$ python3 get-pip.py

然后安装一些依赖库

1
apt install python-dev python3-dev libevent-dev python-scipy libssl-dev libffi-devapt install apt-transport-https ca-certificates curl gnupg2 software-properties-commonpip install cryptography

查看pip版本:

1
[email protected]:~# pip3 --versionpip 19.1.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)[email protected]:~#

安装docker compose
这里通过pip的方式安装,所以先安装pip

1
$ pip3 install docker-compose

如果你报了什么

1
TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'

这样的错误,多半是用了上古时代的pip,参考上述方式卸载重装,然后重启一下。如果是下面这样的错

1
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='www.piwheels.org', port=443): Read timed out.

是由于网络连接超时,重新执行命令就好,或者用国内镜像下载。可以多试几次

安装好了查看版本:

1
[email protected]:~# docker-compose --versiondocker-compose version 1.24.1, build [email protected]:~#

sudo pip3 install docker-compose

设置docker镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://1nj0zren.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

镜像加速器 镜像加速器地址 专属加速器? 其它加速?
Docker 中国官方镜像 https://registry.docker-cn.com
Docker Hub DaoCloud 镜像站 http://f1361db2.m.daocloud.io 可登录,系统分配
Docker Hub Azure 中国镜像 https://dockerhub.azk8s.cn
Docker Hub、GCR、Quay 科大镜像站 https://docker.mirrors.ustc.edu.cn
Docker Hub、GCR、Quay 阿里云 https://.mirror.aliyuncs.com 需登录,系统分配
Docker Hub 七牛云 https://reg-mirror.qiniu.com
Docker Hub、GCR、Quay 网易云 https://hub-mirror.c.163.com
Docker Hub 腾讯云 https://mirror.ccs.tencentyun.com

作者:y0ngb1n链接:https://juejin.im/post/5cd2cf01f265da0374189441来源:掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

### docker命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#查看 Docker 版本
docker -``vsudo
# 仓库/镜像:版本(留空的话默认为 latest)
docker pull
sudo docker run
# 加参数,用来创建容器查看运行容器
sudo docker ps
#查看所有下载的镜像
sudo docker images
#进入容器终端
sudo docker exec -i -t ha /bin/bash
#实时查看10行的 ha 日志
sudo docker logs -f -t --tail 10 ha
#重启
sudo systemctl daemon-reload
#设置 Docker 开机启动
sudo systemctl enable docker
#开启 Docker 服务
sudo systemctl start docker

常用配置和工具命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#查看 Docker 版本docker -vsudo docker pull 仓库/镜像:版本(留空的话默认为 latest)
sudo docker run
加参数,用来创建容器#查看运行容器
sudo docker ps
#查看所有下载的镜像
sudo docker images
#进入容器终端
sudo docker exec -i -t ha /bin/bash
#实时查看10行的 ha 日志
sudo docker logs -f -t --tail 10 ha
#重启 systemctl 守护进程
sudo systemctl daemon-reload
#设置 Docker 开机启动
sudo systemctl enable docker
#开启 Docker 服务
sudo systemctl start docker
#下载 Docker 图形化界面 portainer
sudo docker pull portainer/portainer
#创建 portainer 容器
sudo docker volume create portainer_data
#运行portainer
sudo docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run

部署

docker images,docker ps

docker pull nextcloud

docker pull portainer/portainer

1
docker run -ti -d --name kevin-portainer -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock  portainer/portainerdocker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock  portainer/portainer

1585911408361

1
2
3
 docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
该容器命名为my_portainer,将容器中portainer默认端口9000,映射到宿主机端口9000,使用socket映射 /var/run/docker.sock:/var/run/docker.sock,指定volume映射(即将portainer_volume对应的宿主机目录挂载到容器的/data目录),容器基于portainer/portainer镜像启动

1585911501671

1
2
mkdir /home/nextclouddocker run --name nextcloud -p 8080:80   -v /home/nextcloud:/var/www/html/data -d nextcloud
参数说明:–name:设定容器名称为nextcloud-p 8080:80 :端口映射,将宿主机8080端口映射到容器中的80端口-v /data/nextcloud:/var/www/html/data将容器中项目的data目录映射到本地/data/nextcloud目录下方便配置和数据保存-d 是以后台形式启动

1585911463432

https://cloud.tencent.com/developer/article/1371476

中间找不文件就选择下面这个命令

1
cd /var/lib/find . -name "config.php"