xml地图|网站地图|网站标签 [设为首页] [加入收藏]
mysql安装配置,Taylor的树莓派
分类:操作系统

Dockerfile 语法

 

一、简介

  1.ADD

     ADD命令有两个参数,源和目标。它的基本作用是从源系统的文件系统上复制文件到目标容器的文件系统。如果源是一个URL,那该URL的内容将被下载并复制到容器中

  1. ADD /my_app_folder /my_app_folder 

 

[root@localhost ~]#  yum install -y mysql-server mysql mysql-devel

1.1 作者简介

Taylor
80后程序员,热爱技术、追求极致,爱玩、爱折腾,10年.NET开发,熟悉.NET、Java、Python等技术。

 2.ENTRYPOINT

    配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖,每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效。

  

[root@localhost ~]# service mysqld start

1.2 树莓派简介

树莓派是什么?

树莓派(Raspberry Pi),是一款只有一张信用卡大小的开源单板计算机, 它由英国的树莓派基金会开发,目的是以低价硬件及自由软件刺激在学校的
基本的电脑科学教育,在经历几代版本的更新迭代后,树莓派不仅支持Linux以及Linux的衍生版本系统,还支持Windows 10 IoT Core等全新的系统平台,
并且融入了众多的AI元素,是目前全球应用最广、最受电子爱好者、工程师、学生喜爱的开源单板计算机。

谁在玩树莓派?

通过上文的介绍我们可以了解到,树莓派最初的目的是致力于在校学生的计算机教育,无论是小学生、中学生还是大学生,都可以零基础入门。
随着树莓派的不断迭代、性能提升,其作用也在发生变化,除了计算机教育的应用,还被众多的嵌入式开发工程师、软件开发工程师等用来做各种实验项目。
如果你对树莓派或者编程感兴趣,无论你是否学过计算机编程,都可以零基础入门。

PS:《Taylor的树莓派》系列教程会陆续发布,希望热爱技术的你和我一起学习!

我们可以用树莓派做什么?

Linux系统学习
    利用树莓派学习Linux系统的基本操作和命令

Git服务器
    利用树莓派搭建局域网/外网的Git服务器,方便个人或小团队的代码管理

FTP服务器
    利用树莓派搭建局域网/外网的FTP服务器,建立个人或小团队的FTP站点

消息队列服务器
    利用树莓派搭建消息队列服务器,如:部署RPC服务端或消费者端进行消息处理等

爬虫服务器
    利用树莓派搭建分布式爬虫服务器,如:Python+RabbitMQ+redis的高并发分布式爬虫等

微服务部署
    利用树莓派部署基于Docker的微服务架构API,如.NET Core、Spring Boot等

物联网开发
    利用树莓派的串口连接各类传感器(如:温湿度传感器、光照传感器、烟雾传感器等)进行物联网开发

3.ENV 

   ENV命令用于设置环境变量。这些变量以”key=value”的形式存在,并可以在容器内被脚本或者程序调用。这个机制给在容器中运行应用带来了极大的便利。  

      ENV PATH /usr/local/nginx/sbin:$PATH

 

1.3 ARM简介

在学习任何嵌入式开发之前,最先要了解的就是嵌入式终端的CPU架构。

树莓派是典型的嵌入式开发板,其CPU架构自然是ARM,先来看下树莓派3B+的硬件配置:

博通BCM2837B0 SoC,集成四核ARM Cortex-A53(ARMv8)64位@ 1.4GHz CPU,集成博通 Videocore-IV GPU

内存:1GB LPDDR2 SDRAM

有线网络:千兆以太网(通过USB2.0通道,最大吞吐量 300Mbps)

无线网络:2.4GHz和5GHz 双频Wi-Fi,支持802.11b/g/n/ac

蓝牙:蓝牙4.2&低功耗蓝牙(BLE)

存储:Micro-SD

其他接口:HDMI,3.5mm模拟音频视频插孔,4x USB 2.0,以太网,摄像机串行接口(CSI),
显示器串行接口(DSI),MicroSD卡座,40pin扩展双排插针

尺寸:82mmx 56mmx 19.5mm,50克

ARM概念

ARM首先是一个公司,这家公司设计CPU并向各个CPU制造商授权许可,所以ARM公司是一家CPU设计公司。同时,ARM也是ARM公司主导设计的CPU系列的简称。

ARM版本区分

ARM版本号可以分为三类:

· 内核版本号,例如ARMv5,ARMv7,ARMv7a,ARMv8a...

· Soc版本号,例如Cortex-A8,Cortex-A9...

· 芯片型号,例如2410,2440,6410,S5PV210...

CPU设计原理和总线

CPU主要包括运算器,控制器,存储器通过总线与Flash与内存连接。

总线就类似于CPU中的道路,数据通过总线在CPU和外设之间传输,CPU也通过内部总线与SOC中的其他外设连接,例如UART设备,内部总线由于在芯片内部,
抗干扰能力强,运算速度更快。

总线分为两种,地址总线和数据总线:

地址总线用于传输地址,CPU通过地址总线寻址,告诉设备要取的数据在哪个地址中,地址总线的位数决定了寻址范围

数据总线用于传输数据,CPU通过数据总线与外部交换信息,将设备要的数据通过该总线发送给对方,数据总线的位数决定了CPU单次通信能交换的信息数量

总线的速度决定了CPU和外设互换信息的速度

CPU的地址总线和数据总线的位数可以不同,CPU的位数就指的是数据总线的位数

32位CPU的寻址范围是4G所以最多支持4G内存,数据总线是32位的,那么传输一个int和传输一个char的效率是一样的。

在64位系统下运行32位软件,唯一的差别就是32位软件仍然是32寻址机制,所以只有64位系统才能原生支持超过4G内存的寻址。

树莓派3B+使用的CPU为四核ARM Cortex-A53(ARMv8)64位,通过上文我们了解到32位的寻址空间有限,并不能真正发挥64位CPU的性能,有实验证明,64位CPU的树莓派比32位的效率提高近30倍。

支持ARM的系统

了解了树莓派的CPU,再来说下支持树莓派的系统,目前支持树莓派的系统有以下几种:

Raspbain Stretch        树莓派官方操作系统(图形界面版)
Raspbain Stretch Lite   树莓派官方操作系统(命令行版)
Ubuntu Mate             Ubuntu标准系统(图形界面版)
......
Ubuntu Server           Ubuntu服务器系统
Windows 10 IoT Core     Windows 10的物联网核心系统
CentOS-armhfp           Centos arm32位版
CentOS-AArch64          Centos arm64位版

说明:Centos系统官方只提供32位版本的img镜像下载,64位版系统提供.iso的镜像下载,树莓派无法烧录.iso镜像
Centos从ARMv8开始使用AArch术语表示,AArch是ARMv8的官方Linux体系结构名称
详见官方说明:https://seven.centos.org/2015/03/building-centos-linux-7-for-armv8/
官方镜像地址32位:http://mirror.centos.org/altarch/7/isos/armhfp/
官方镜像地址64位:http://mirror.centos.org/altarch/7/isos/aarch64/

更多系统,详见

4.EXPOSE 

   EXPOSE用来指定端口,使容器内的应用可以通过端口和外界交互。 

EXPOSE 80

mysql> grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;
Query OK, 0 rows affected (0.00 sec)

二、材料清单

树莓派3B+(2.5V电源 + USB线)x 1 约230-250元

闪迪TF卡(64G)x 1 约80-100元

TF卡读卡器 x 1 约10元

材料总价约300元

5.FROM 

  这个命令用于声明作者,并应该放在FROM的后面。   

    MAINTAINER authors_name 

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

三、烧录系统

镜像文件

树莓派的镜像文件为.img,下载的操作系统镜像为.img文件或raw.xz文件
本文使用CentOS for AArch64作为树莓派的操作系统,由于Centos官方未提供64位的img镜像下载,所以本文采用移植版的CentOS for AArch64
镜像下载地址:https://github.com/chainsx/centos64-rpi

使用工具

SDFormatter:TF卡格式化工具,用于格式化TF卡
下载地址:https://www.sdcard.org/chs/downloads/formatter_4/eula_windows/index.html

Win32DiskImager:镜像烧录工具,用于烧录img镜像
下载地址:https://sourceforge.net/projects/win32diskimager/

putty:SSH连接工具,用于ssh连接树莓派
下载地址:https://www.chiark.greenend.org.uk/~sgtatham/putty/

6.RUN

 

四、基础配置

7.USER

  USER命令用于设置运行容器的UID。

 

转载

4.1 扩展磁盘分区

系统烧录完成之后的系统分区为根分区+Linux分区,也就是TF卡的磁盘大小仅为系统镜像的大小,很显然这是不能接受的,我们要对磁盘进行重新分区,找回失去的磁盘空间

关于烧录分区

img镜像是一种可引导的分区文件,系统烧录完成后,磁盘被分为两个区。
一个是FAT16可读写的根分区,用来存放镜像引导文件和系统内核等文件。
一个是Linux的只读分区,用来存放Linux文件系统。
重新分区的目的就是将只读分区的剩余空间扩展出来,最大化磁盘剩余空间,用来存储其他文件

查看磁盘大小

[root@localhost ~]# df -h

进入分区工具

[root@localhost ~]# fdisk /dev/mmcblk0
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

磁盘分区

#删除分区(命令:d)
Command (m for help): d

#选择分区(删除默认分区)
Partition number (1,2, default 2): 输入2或直接回车

#列出分区表(命令:p)
Command (m for help): p
Device Boot             Start         End       Blocks   Id  System
/dev/mmcblk0p1   *        2048      131072       64512+   e  W95 FAT16 (LBA)

#新建分区(命令:n)
Command (m for help): n

#选择分区类型(选择默认类型,输入p)
Select (default p): p

#选择分区(选择默认分区)
Partition number (2-4, default 2): 输入2或回车

#选择第二分区起始位置(使用默认)
First sector (131073-124735487, default 133120): 回车

#选择第二分区结束位置(使用默认)
Last sector, +sectors or +size{K,M,G} (133120-124735487, default 124735487): 回车

#列出分区表(命令:p)
Command (m for help): p
 Device Boot            Start         End       Blocks   Id  System
/dev/mmcblk0p1   *        2048      131072       64512+   e  W95 FAT16 (LBA)
/dev/mmcblk0p2          133120   124735487    62301184   83  Linux

#把分区写进分区表,保存并退出(命令:w)
Command (m for help): w

重启系统

[root@localhost ~]# reboot

重启后调整分区大小(重要步骤!!!)

#要调整的分区为第二分区
[root@localhost ~]# resize2fs /dev/mmcblk0p2

查看磁盘大小

[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        59G  2.3G   54G   5% /
devtmpfs        454M     0  454M   0% /dev
tmpfs           459M     0  459M   0% /dev/shm
tmpfs           459M   12M  448M   3% /run
tmpfs           459M     0  459M   0% /sys/fs/cgroup
/dev/mmcblk0p1   63M   63M  2.0K 100% /boot
tmpfs            92M     0   92M   0% /run/user/0

8.WORKDIR

  WORKDIR命令用于设置CMD指明的命令的运行目录。

 

下面就构建一个简单的dockerfile

   1.需要一个基础镜像

      docker pull centos

   2.在某一个目录下面创建一个专门存放此demo的目录,也就是Dockerfile所在的context:

      

[root@docker ~]# mkdir docker_demo
[root@docker ~]# cd docker_demo/
[root@docker docker_demo]# touch Dockerfile
[root@docker docker_demo]# pwd
/root/docker_demo
[root@docker docker_demo]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 1 04:34 Dockerfile

 

下载nginx源码包到docker_demo这个目录下:

[root@docker docker_demo]# ll
total 960
-rw-r--r--. 1 root root      0 Nov  1 04:34 Dockerfile
-rw-r--r--. 1 root root 981687 Oct 17 09:20 nginx-1.12.2.tar.gz

以下是编写好的Dockerfile v1版:

[root@docker docker_demo]# cat Dockerfile
# base image
FROM centos
# MAINTAINER
MAINTAINER json_hc@163.com
# put nginx-1.12.2.tar.gz into /usr/local/src and unpack nginx
ADD nginx-1.12.2.tar.gz /usr/local/src
# running required command
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
RUN useradd -M -s /sbin/nologin nginx
# change dir to /usr/local/src/nginx-1.12.2
WORKDIR /usr/local/src/nginx-1.12.2
# execute command to compile nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install

ENV PATH /usr/local/nginx/sbin:$PATH

EXPOSE 80

[root@docker docker_demo]# docker build -t centos_nginx:v2 .
Sending build context to Docker daemon 985.6kB
Step 1/10 : FROM centos
---> 196e0ce0c9fb
Step 2/10 : MAINTAINER json_hc@163.com
---> Using cache
---> cde1d7830106
Step 3/10 : ADD nginx-1.12.2.tar.gz /usr/local/src
---> Using cache
---> 1e4d16340af0
Step 4/10 : RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
---> Using cache
---> 405835ad9b0b
Step 5/10 : RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
---> Using cache
---> 4002738cf7a6
Step 6/10 : RUN useradd -M -s /sbin/nologin nginx
---> Using cache
---> 02961c5c564d
Step 7/10 : WORKDIR /usr/local/src/nginx-1.12.2
---> Using cache
---> f1da71a93c5e
Step 8/10 : RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install
---> Using cache
---> cd2ad4c45004
Step 9/10 : ENV PATH /usr/local/nginx/sbin:$PATH
---> Running in 07ba2f7129bc
---> 9588fa1058aa
Removing intermediate container 07ba2f7129bc
Step 10/10 : EXPOSE 80
---> Running in 473cd847154a
---> 2031faf8894a
Removing intermediate container 473cd847154a
Successfully built 2031faf8894a
Successfully tagged centos_nginx:v2

 

$ docker images

$ docker run -d -p81:80 centos_nginx nginx -g "daemon off;"

$ docker ps -l

最后通过浏览器访问就可以了

   

1.关闭防火墙
[root@CentOS ~]# chkconfig iptables off

4.2 升级系统内核

由于移植版本的系统内核未提供无线网络、蓝牙等扩展功能的驱动,所以需要升级系统内核,否则无法开启树莓派的无线网卡

查看内核版本

#查看内核版本
[root@localhost ~]# cat /proc/version
Linux version 4.13.16-chainsx-edition-CX-v5 (root@ubuntu) (gcc version 5.4.0 20160609 
(Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.6)) #1 SMP PREEMPT Tue Feb 20 18:45:58 CST 2018

配置hosts

#编辑hosts
[root@localhost ~]# vi /etc/hosts
#输入以下内容(或参考 常见问题及解决 使用DNS检测网站检测最新的IP)
192.30.253.112 github.com
151.101.113.194 github.global.ssl.fastly.net

克隆项目

#从git克隆项目
[root@localhost ~]# git clone https://github.com/chainsx/firmware64-rpi
Cloning into 'firmware64-rpi'...
remote: Counting objects: 2928, done.
remote: Total 2928 (delta 0), reused 0 (delta 0), pack-reused 2928
Receiving objects: 100% (2928/2928), 65.13 MiB | 2.82 MiB/s, done.
Resolving deltas: 100% (517/517), done.
Checking out files: 100% (2895/2895), done.

进入目录

[root@localhost ~]# cd /root/firmware64-rpi

安装内核

[root@localhost ~]# cd install && sh install.sh
Install Image,dtbs
cp: cannot overwrite directory ‘/boot/overlays’ with non-directory
cp: error writing ‘/boot/vmlinuz-4.16.0-chainsx-edition-chainsx+v7’: No space left on device
Remove old modules
OK
Install modules
OK
Install firmware
OK
Install kernel_headers
OK
Configure files
#uncomment to overclock the arm. 700 MHz is the default.
arm_freq=700# NOOBS Auto-generated Settings:
hdmi_force_hotplug=1
config_hdmi_boost=4
overscan_left=24
overscan_right=24
overscan_top=16
overscan_bottom=16
disable_overscan=0
core_freq=250
sdram_freq=400
over_voltage=0
OK
You can reboot to use this new kernel.

重启系统

[root@localhost ~]# reboot

查看内核版本

[root@localhost ~]# cat /proc/version
Linux version 4.16.0-chainsx-edition-chainsx+v7 (root@ubuntu) (gcc version 5.4.0 20160609 
(Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.6)) #3 SMP PREEMPT Thu Mar 22 02:32:13 CST 2018

本文由澳门新葡亰手机版发布于操作系统,转载请注明出处:mysql安装配置,Taylor的树莓派

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文