树莓派基本配置与Docker的安装
一、树莓派的安装
下载镜像
在 树莓派官网
https://www.raspberrypi.org/downloads/raspbian/
Win32 DiskImager,是一个把系统镜像写入SD卡的工具:
https://sourceforge.net/projects/win32diskimager/
解压系统镜像文件得到img文件,点击Write,写入系统。 格式化为F32,插入树莓派树莓派即可开机。
二、WiFi 网络配置
由于没有桌面服务,就算开机也不能进入系统来操作,如果有网线的话直接把网线插入树莓派即可联网,如果没有网线,只有 wifi 的话,就需要设置 wifi 的网络配置。
其实操作方法是很简单的:只要将刷好 Raspbian 系统的 SD 卡用电脑读取。在 boot 分区,也就是树莓派的 /boot 目录下新建 wpa_supplicant.conf 文件,按照下面的参考格式填入内容并保存到 wpa_supplicant.conf 文件即可。
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1 network={
ssid="WiFi1"
psk="12345678"
key_mgmt=WPA-PSK
priority=1
} network={
ssid="WiFi-2"
psk="12345678"
key_mgmt=WPA-PSK
priority=2
scan_ssid=1
}
说明以及不同安全性的 WiFi 配置示例:
ssid:网络的ssid
psk:wifi的密码
priority:连接优先级,数字越大优先级越高(不可以是负数)
scan_ssid:连接隐藏WiFi时需要指定该值为1
如果您的 WiFi 没有密码
network={
ssid="你的无线网络名称(ssid)"
key_mgmt=NONE
}
如果您的 WiFi 使用WEP加密
network={
ssid="你的无线网络名称(ssid)"
key_mgmt=NONE
wep_key0="你的wifi密码"
}
如果您的 WiFi 使用WPA/WPA2加密
network={
ssid="你的无线网络名称(ssid)"
key_mgmt=WPA-PSK
psk="你的wifi密码"
}
三、开启 SSH 服务
新系统的话是不可以通过 ssh 来连接树莓派的,会出现 Access denied 这个提示,所以需要手动开启,当然,这是很简单的。和 WiFi 配置相似,同样在 boot 分区新建一个文件,空白的即可,文件命名为 ssh 。注意要小写且不要有任何扩展名!
四、树莓派启用root账户
树莓派使用的linux是debian系统,所以树莓派启用root和debian是相同的。
debian里root账户默认没有密码,但账户锁定。
当需要root权限时,
直接执行
$ sudo su
即可切换为root用户。
树莓派默认用户是pi,密码为raspberry。
重新开启root账号,可由pi用户登录后,在命令行下执行
$ sudo passwd root
修改root的密码。
执行此命令后系统会提示输入两遍的root密码,输入你想设的密码即可,然后在执行
$ sudo passwd -u root
开启root账号。
如果上面执行完出现
password expiry information changed.
的提示
是因为新版本ssh默认关闭root登陆,可以修改一下ssh的配置文件
$ sudo vim /etc/ssh/sshd_config
注:树莓派自带的vi编辑器十分难用,但vim是一个强大的编辑器,可以通过sudo apt-get install vim来安装
五、树莓派上运行Docker
安装Docker
在此之前可先更换apt源;
安装请参考:
http://get.daocloud.io/#install-docker
或者
https://www.runoob.com/docker/ubuntu-docker-install.html
或者
Centos7下安装Docker(详细安装教程)
换成阿里源
$ cd /etc/docker
$ vi daemon.json
{
"registry-mirrors": [
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"dns": ["8.8.8.8","8.8.4.4"]
}
然后重启docker
service docker restart
Docker简单的使用
操作镜像:
#查看当前Docker的版本
docker -v
#搜索Docker, nginx代表您要搜索的镜像
docker search nginx
#拉取镜像文件
docker pull nginx
#查看已下载镜像
docker images
#删除本地镜像
docker rmi nginx
#强制删除docker本地镜像
docker rmi -f nginx
#保存本地镜像至本地,填写镜像名和镜像tag,如果填写镜像ID,使用docker load的时候,镜像名和tag会变成none
docker save -o nginx_image.docker nginx:latest
#加载镜像
docker load -i nginx_image.docker
使用dockerfile生成镜像(build):到了项目和 dockerfile 同一级的目录(注意后面的.不要省略)
docker build -t my-python-app .
#批量删除无用镜像或容器
#批量删除异常停止的docker容器
docker rm `docker ps -a | grep Exited | awk '{print $1}'`
#批量删除名称或标签为none的镜像
docker rmi -f `docker images | grep '<none>' | awk '{print $3}'`
创建容器:
################ 创建并启动容器 #################
docker run -it --name 容器名 -p 8080(本地):80(容器) -d 镜像名 (sh或者bash)
-d设置容器在在后台一直运行。-p端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
操作容器:
启动容器
docker run [ option ] 镜像名称或者镜像id
例如: docker run -it -p 80:80 -v /www:/www --name nginx 镜像名称或者id
映射主机串口和总是启动:docker run -itd --name gw4 -p 8200:80 --device='/dev/ttyAMA0' --restart=always gatewaysite_pro4
-i: 以交互模式运行容器,通常与 -t 同时使用;
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
- -d: 后台运行容器,并返回容器ID;
- --name "nginx": 为容器指定一个名称
- -v : Docker容器启动的时候,如果要挂载宿主机的一个目录(docker run -it -v /test:/soft centos /bin/bash /test为宿主机目录 /soft为容器目录,会自动创建)
- /bin/bash 启动容器时并进入容器
#列出容器 -a表示未运行的也列出
docker ps -a
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
进入到正在运行的容器
docker exec -it 容器id或者名称 /bin/bash
#启动容器
docker start server1
#停止容器
docker stop server1
#重启容器
docker restart server1
#强制删除容器
docker rm -f server1
#连接容器
docker attach server1
#在容器中输出"Hello World"
docker exec server1 echo "Hello World
#拷贝文件到容器
docker cp /root(主机) 容器id:/root(容器)
#查看docker网络
docker network ls
#查看容器的网络配置
docker network inspect bridge
#退出容器
exit
#查看当前进程
ps aux
#容器中的查看网络配置信息(ifconfig)
ip ad li
#容器中的查看路由表
ip ro li
#查看容器进程pid
docker inspect --format "{{.State.Pid}}" mynginx(容器名)
#docker网络访问
brctl show
#利用systemctl命令管理
显示服务状态:systemctl status docker.service
列出服务层级和依赖关系:systemctl list-dependencies docker.service
启动服务:systemctl start docker.service
关闭服务:systemctl stop docker.service
重启服务:systemctl restart docker.service
设置服务自启动:systemctl enable docker.service
禁止服务自启动:systemctl disable docker.service
查看服务是否自启动:systemctl is-enabled docker.service
列出系统所有服务的启动情况:systemctl list-units --type=service
列出所有自启动服务:systemctl list-unit-files|grep enabled
#-----------数据卷--------
#把物理主机的/opt目录或者文件挂载到docker中
docker run -it --name volume-test2 -h centos -v /opt(原):/opt(容器) centos
docker run -it --name volume-test2 -h centos -v /opt(原):/opt:ro(容器) centos (只读)
#-----------数据卷容器--------
#让volume-test1容器专门存数据,其他容器从volume-test1容器中读数据
docker run -it volume-test3 --volumes-from volume-test1 centos
#-----------Docker资源隔离和限制--------
docker容器的本质是宿主机上的一个进程。
Docker通过namespace实现了资源隔离,通过cgroups实现了资源限制,通过*写时复制机制(copy-on-write)*实现了高效的文件操作。
1、linux的namespace机制
namespace 机制提供一种资源隔离方案。
PID,IPC,Network等系统资源不再试全局性的,而是属于某个特定的Namespace.
每个namespace下的资源对于其他的namespace下的资源是透明的,不可见的。
Linux 内核实现namespace的一个主要目的就是实现轻量级虚拟化(容器)服务,在同一个namespace下的进程可以感知彼此的变化,而对外界的进程一无所知,以达到独立和隔离的目的。
namespace可以隔离哪些
一个容器要想与其他容器互不干扰需要能够做到:
文件系统需要是被隔离的
网络也是需要被隔离的
进程间的通信也要被隔离
针对权限,用户和用户组也需要隔离
进程内的PID也需要与宿主机中的PID进行隔离
容器也要有自己的主机名
有了以上的隔离,我们认为一个容器可以与宿主机和其他容器是隔离开的。
恰巧Linux 的namespace可以做到这些。
2、通过cgroups实现了资源限制:CPU和内存的限制
需要使用到压力测试工具:stress
stress安装教程:https://blog.csdn.net/datuzijean/article/details/86614597
或者创建一个stress的dockerfile:


(1)测试CPU
查看cpu信息:cat /proc/cpuinfo
开启一个压测stress:docker run -it --rm stress --cpu 1
再开启一个压测stress:docker run -it --rm stress --cpu 1
使用top查看CPU使用情况,会发现2个stress各占50%,每个容器默认权重都是1024,调整权重后(docker run -it --rm -c 512 stress --cpu 1),1,2占比2:1
(2)测试内存
docker run -it --rm -m 128m stress --vm 1 --vm-bytes 120m --vm-hang 0 (-m 限制容器使用128M内存,当--vm-bytes 256m时,大概是-m的2倍时,容器退出)
#-----------Docker网络模式-----------
(1)容器间的互联
docker守护进程的启动选项 --icc=true(默认)
容器重启后,容器的IP地址会发生改变,所以需要使用link来连接多个容器:
命令:docker run -it --name mycentos2 --link=mycentos1:webtest centos (webtest是别名))
创建ing进入容器后,ping webtest就可以ping通mycentos1的容器
可以使用环境变量查看:env
也可以 vi /etc/hosts 查看webtest的地址映射
(2)拒绝所有容器间的互联
docker守护进程的启动选项 --icc=false
vim /etc/sysconfig/docker 添加DOCKER_OPTS="--icc=false"
重启docker服务:service docker restart
(3)允许特定容器中的链接
docker守护进程的启动选项 --icc=false --iptables=true
--link
(4)容器与外部网络的链接
--ip-forword=true 决定系统是否会转发流量,默认开启
--iptables iptables是与Linux内核集成的包过滤防火墙系统
阻止特定IP访问特定容器: iptables -I DOCKER -s 192.168.238.2 -d 172.17.0.2 -p TCP --dport -j DROP
查看iptables
#-----------registry私有镜像仓库-----------
在192.168.238.1的机器上执行:
下载registry镜像:docker pull registry
创建容器:docker run -d -p 5000:5000 registry
给要上传的镜像打标签,这里以redis为例:docker tag redis 192168.238.1:5000/redis:v1
上传redis到registry私有仓库:docker push 192168.238.1:5000/redis:v1
注意:此时若报错,可执行如下操作:
vim /etc/sysconfig/docker
在OPTIONS=后面加上:--insecure-registry 192.168.238.1:5000
然后重启容器:systemctl restart docker
在192.168.238.2的机器上执行:
vim /etc/sysconfig/docker
在OPTIONS=后面加上:--insecure-registry 192.168.238.1:5000
然后重启容器:systemctl restart docker
然后就可以pull镜像了:docker pull 192168.238.1:5000/redis:v1
#-----------公有镜像仓库 docker hub-----------
https://www.cnblogs.com/yangyangming/p/11646666.html
树莓派基本配置与Docker的安装的更多相关文章
- Linux(Manjaro) - Docker - MySQL 安装配置
Linux(Manjaro) - Docker - MySQL 安装配置 拉取mysql镜像 # 使用网易的 MySQL 镜像地址 docker pull hub.c.163.com/library/ ...
- docker的安装和简单配置
docker的安装和简单配置 docker是balabalabala...懒得介绍. 国内安装docker很蛋疼,按照官方配置好了软件源之后,几十MB的安装文件下载要半天,没办法,docker默认的软 ...
- docker+redis安装与配置,主从+哨兵模式
docker+redis安装与配置 docker安装redis并且使用redis挂载的配置启动 1.拉取镜像 docker pull redis:3.2 2.准备准备挂载的目录和配置文件 首先在/do ...
- CentOS双机中Docker下安装Mysql并配置互为主从模式
CentOS双机中Docker下安装Mysql并配置互为主从模式 目录 1.搜索镜像... 1 2.拉取镜像... 1 3.绑定端口: 1 4.配置文件(修改/etc/mysql/my.cnf文件): ...
- 在Docker中安装配置Oracle12c并实现数据持久化
在Docker中安装配置Oracle12c并实现数据持久化 选定镜像,并pull到系统中,一定要先配置加速,不然超级慢 eric@userver:~$ docker pull sath89/oracl ...
- Docker的安装,配置,更新和卸载
我们可以在Linux中安装Docker并运行Hello world应用程序.通过下面这些操作,我们将会学到更多有关于Docker的基础特征.我们将会学到如何: 安装Docker引擎 在一个容器中运行软 ...
- docker的安装以及jdk和tomcat的环境配置
准备工作:需要Linux kernel 3.8支持查看linux内核的版本:root@ubuntu-dev:~# cat /proc/version查看linux版本:root@ubuntu-dev: ...
- Docker 快速安装&搭建 Ngnix 环境,并配置反向代理
欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...
- Windows和Centos下Docker的安装配置
Windows和Centos下Docker的安装配置 windows环境下的安装(win10) 在Windows系统上需要利用toolbox来安装Docker,现在 Docker 有专门的 Win10 ...
随机推荐
- Burp suite基本配置介绍
实验目的 利用Burp Spider功能探测目标网站的目录结构. 实验原理 1)Burp Suite是Web应用程序测试的最佳工具之一,其多种功能可以帮我们执行各种任务.请求的拦截和修改,扫描web应 ...
- [Graphviz]一些简单的例子(未完待续)
本文参考:http://wenku.baidu.com/link?url=kTPIn5tBY4eboEPZeOZyLwHAq-fSMoTbagsqcG5-IcpL325tnnh3ES8aky-PBjP ...
- Element-UI tree 组件 点击后高亮显示的样式修改(背景色)
感觉默认的高亮背景色颜色太浅,修改一下: .el-tree-node:focus > .el-tree-node__content { background-color: #ccc !impor ...
- Flume介绍安装使用
APache Flume官网:http://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html#memory-channel 目录 ...
- ELK日志收集(SpringBoot)
目录 环境&准备 ES安装 Kibana安装 Logstash安装 Logstash配置 SpringBoot中logback-spring.xml配置 测试 启动 ES\Kibana\Log ...
- 2022年官网下安装RabbitMQ最全版与官网查阅方法
目录 一.Erlang环境部署 1.百度搜索"Erlang",或者访问网址:https://www.erlang.org/,找到DOWNLOAD双击进入. 2.找到支持的windo ...
- LGP3092题解
看 DP 的时候翻到的题,发现这题的坑鸽子了一年半 这个状态感觉比较厉害,还是来记录一下吧. 首先硬币数量很少让我们想到状压,可以想出来一个十分 navie 的状态:\(dp[S][n]\) 表示用过 ...
- LGP6011题解
昨天考试考到了这道题,那就来补一下题解吧. 题意简单不再阐述. 首先删除之后还要向左移动,很容易想到 ODT 平衡树,这个过于一眼,不再阐述. 重点说第二种方法. 向左平移的这个操作,我们是否可以用别 ...
- ArcMap操作随记(12)
1.[取色器]工具 [自定义]|[自定义模式]|[命令] 2.批量修改符号 [符号系统]→右键,[所有符号的属性] 3.将地图元素转换为图形 转换工具 4.好看的地图边框 [布局视图]→数据框上右键→ ...
- Spring MVC 04-- 接收前端参数json格式的方式
/** * 第一种:以RequestParam接收 * 前端传来的是json数据不多时:{"id":1},可以直接用@RequestParam来获取值 * * @param id ...