一、树莓派的安装

下载镜像

在 树莓派官网

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的安装的更多相关文章

  1. Linux(Manjaro) - Docker - MySQL 安装配置

    Linux(Manjaro) - Docker - MySQL 安装配置 拉取mysql镜像 # 使用网易的 MySQL 镜像地址 docker pull hub.c.163.com/library/ ...

  2. docker的安装和简单配置

    docker的安装和简单配置 docker是balabalabala...懒得介绍. 国内安装docker很蛋疼,按照官方配置好了软件源之后,几十MB的安装文件下载要半天,没办法,docker默认的软 ...

  3. docker+redis安装与配置,主从+哨兵模式

    docker+redis安装与配置 docker安装redis并且使用redis挂载的配置启动 1.拉取镜像 docker pull redis:3.2 2.准备准备挂载的目录和配置文件 首先在/do ...

  4. CentOS双机中Docker下安装Mysql并配置互为主从模式

    CentOS双机中Docker下安装Mysql并配置互为主从模式 目录 1.搜索镜像... 1 2.拉取镜像... 1 3.绑定端口: 1 4.配置文件(修改/etc/mysql/my.cnf文件): ...

  5. 在Docker中安装配置Oracle12c并实现数据持久化

    在Docker中安装配置Oracle12c并实现数据持久化 选定镜像,并pull到系统中,一定要先配置加速,不然超级慢 eric@userver:~$ docker pull sath89/oracl ...

  6. Docker的安装,配置,更新和卸载

    我们可以在Linux中安装Docker并运行Hello world应用程序.通过下面这些操作,我们将会学到更多有关于Docker的基础特征.我们将会学到如何: 安装Docker引擎 在一个容器中运行软 ...

  7. docker的安装以及jdk和tomcat的环境配置

    准备工作:需要Linux kernel 3.8支持查看linux内核的版本:root@ubuntu-dev:~# cat /proc/version查看linux版本:root@ubuntu-dev: ...

  8. Docker 快速安装&搭建 Ngnix 环境,并配置反向代理

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  9. Windows和Centos下Docker的安装配置

    Windows和Centos下Docker的安装配置 windows环境下的安装(win10) 在Windows系统上需要利用toolbox来安装Docker,现在 Docker 有专门的 Win10 ...

随机推荐

  1. Burp suite基本配置介绍

    实验目的 利用Burp Spider功能探测目标网站的目录结构. 实验原理 1)Burp Suite是Web应用程序测试的最佳工具之一,其多种功能可以帮我们执行各种任务.请求的拦截和修改,扫描web应 ...

  2. [Graphviz]一些简单的例子(未完待续)

    本文参考:http://wenku.baidu.com/link?url=kTPIn5tBY4eboEPZeOZyLwHAq-fSMoTbagsqcG5-IcpL325tnnh3ES8aky-PBjP ...

  3. Element-UI tree 组件 点击后高亮显示的样式修改(背景色)

    感觉默认的高亮背景色颜色太浅,修改一下: .el-tree-node:focus > .el-tree-node__content { background-color: #ccc !impor ...

  4. Flume介绍安装使用

    APache Flume官网:http://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html#memory-channel 目录 ...

  5. ELK日志收集(SpringBoot)

    目录 环境&准备 ES安装 Kibana安装 Logstash安装 Logstash配置 SpringBoot中logback-spring.xml配置 测试 启动 ES\Kibana\Log ...

  6. 2022年官网下安装RabbitMQ最全版与官网查阅方法

    目录 一.Erlang环境部署 1.百度搜索"Erlang",或者访问网址:https://www.erlang.org/,找到DOWNLOAD双击进入. 2.找到支持的windo ...

  7. LGP3092题解

    看 DP 的时候翻到的题,发现这题的坑鸽子了一年半 这个状态感觉比较厉害,还是来记录一下吧. 首先硬币数量很少让我们想到状压,可以想出来一个十分 navie 的状态:\(dp[S][n]\) 表示用过 ...

  8. LGP6011题解

    昨天考试考到了这道题,那就来补一下题解吧. 题意简单不再阐述. 首先删除之后还要向左移动,很容易想到 ODT 平衡树,这个过于一眼,不再阐述. 重点说第二种方法. 向左平移的这个操作,我们是否可以用别 ...

  9. ArcMap操作随记(12)

    1.[取色器]工具 [自定义]|[自定义模式]|[命令] 2.批量修改符号 [符号系统]→右键,[所有符号的属性] 3.将地图元素转换为图形 转换工具 4.好看的地图边框 [布局视图]→数据框上右键→ ...

  10. Spring MVC 04-- 接收前端参数json格式的方式

    /** * 第一种:以RequestParam接收 * 前端传来的是json数据不多时:{"id":1},可以直接用@RequestParam来获取值 * * @param id ...