Centos配置

查看centos系统版本命令:

cat /etc/centos-release

配置阿里云yum源

1.下载安装wget
yum install -y wget2.备份默认的yum
mv /etc/yum.repos.d /etc/yum.repos.d.backup3.设置新的yum目录
mkdir -p /etc/yum.repos.d4.下载阿里yum配置到该目录中,选择对应版本
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo5.更新epel源为阿里云epel源
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo6.重建缓存
yum clean all
yum makecache7.看一下yum仓库有多少包
yum repolist

升级系统内核

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpmyum --enablerepo=elrepo-kernel install -y kernel-ltgrep initrd16 /boot/grub2/grub.cfggrub2-set-default 0reboot

查看centos系统内核命令

uname -r
uname -a

查看CPU命令

lscpu

查看内存命令

free
free -h

查看硬盘信息

fdisk -l

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
setenforce 0

网桥过滤

vi /etc/sysctl.confnet.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
net.ipv4.ip_forward=1
net.ipv4.ip_forward_use_pmtu = 0生效命令
sysctl --system

命令补全

安装bash-completion
yum -y install bash-completion bash-completion-extras
使用bash-completion
source /etc/profile.d/bash_completion.sh

上传文件

yum -y install lrzsz
1.鼠标拖拽上传文件
2.下载文件2.1下载一个文件sz filename2.2下载多个文件sz filename1 filename22.3下载dir目录下所有文件,不包含dir下的文件夹sz dir/*

同步时间

安装软件
yum -y install ntpdate向阿里云服务器同步时间
ntpdate time1.aliyun.com删除本地时间并设置时区为上海
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime查看时间
date -R || date

安装docker

阿里云开发者平台

开发者平台官网地址:可以参考阿里云官网提供的docker安装教程进行安装。

https://www.aliyun.com/

安装docker前置条件

yum install -y yum-utils device-mapper-persistent-data lvm2

添加源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast

查看docker版本

yum list docker-ce --showduplicates | sort -r

安装docker

安装最新版:推荐大家安装最新版本
yum -y install docker-ce
安装指定版本:
语法规则:yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
yum -y install docker-ce-18.06.3.ce-3.el7 docker-ce-cli.x86_64
yum -y install docker-ce-19.03.9-3.el7 docker-ce-cli-19.03.9-3.el7

开启dock而服务

systemctl start docker
systemctl status docker

安装阿里云镜像加速器

mkdir -p /etc/dockertee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://复制自己的加速器地址.mirror.aliyuncs.com"]
}
EOF例如:
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://es4orw3p.mirror.aliyuncs.com"]
}
EOFsystemctl daemon-reload
systemctl restart docker

设置docker开启启动服务

systemctl enable docker

docker命令

docker -v
docker version
docker info

docker命令分类

Docker环境信息 — docker [info|version]

容器生命周期管理 — docker

[create|exec|run|start|stop|restart|kill|rm|pause|unpause]

容器操作管理 — docker [ps|inspect|top|attach|wait|export|port|rename|stat]

容器rootfs命令 — docker [commit|cp|diff]

镜像仓库 — docker [login|pull|push|search]

本地镜像管理 — docker [build|images|rmi|tag|save|import|load]

容器资源管理 — docker [volume|network]

系统日志信息 — docker [events|history|logs]

官网地址

https://docs.docker.com/engine/reference/run/

Docker镜像(image)

Docker Hub地址

docker hub类似maven远程仓库地址

https://hub.docker.com/

pull命令

docker pull tomcat:9.0.20-jre8
docker pull tomcat:9.0.20-jre8-slim
docker pull tomcat:9.0.20-jre8-alpine

常用参数

-a, --all-tags=true|false : 是否获取仓库中所有镜像,默认为否;

–disable-content-trust : 跳过镜像内容的校验,默认为 true;

images命令

docker images
docker image ls

各个选项说明:

REPOSITORY**:**表示镜像的仓库源

TAG**:**镜像的标签

IMAGE ID**:**镜像ID

CREATED**:**镜像创建时间

SIZE**:**镜像大小

save命令

备份镜像

mkdir -p /data
cd /data
docker save tomcat:9.0.20-jre8-alpine -o tomcat9.tar
docker save tomcat:9.0.20-jre8-slim > tomcat9.slim.tar

常用参数

-o :输出到的文件

多个镜像

mkdir -p /data
cd /datadocker save \
tomcat:9.0.20-jre8-alpine \
tomcat:9.0.20-jre8-slim \
tomcat:9.0.20-jre8 \
-o tomcat9.0.20.tar

load命令

导入镜像

mkdir -p /data
cd /datadocker load -i linux.tar
docker load < tomcat9.0.20.tar

常用参数

–input , -i : 指定导入的文件。

–quiet , -q : 精简输出信息。

search命令

不推荐使用search命令查找镜像,不够直观。

docker search tomcat

常用参数

-f, --filter filter : 过滤输出的内容;

–limit int :指定搜索内容展示个数;

–no-index : 不截断输出内容;

–no-trunc :不截断输出内容;

inspect命令

通过 docker inspect 命令,我们可以获取镜像的详细信息,其中,包括创建者,各层的数字摘要

docker inspect tomcat:9.0.20-jre8-alpine
docker inspect -f {{".Size"}} tomcat:9.0.20-jre8-alpine

history命令

通过 docker history命令,可以列出各个层的创建信息

docker history tomcat:9.0.20-jre8-alpine

tag命令

标记本地镜像,将其归入某一仓库

docker tag tomcat:9.0.20-jre8-alpine my/tomcat:9

rmi命令

通过如下两个都可以删除镜像:

docker rmi tomcat:9.0.20-jre8-alpine
docker image rm tomcat:9.0.20-jre8-alpine

清理镜像

docker image prune

常用参数

-a, --all : 删除所有没有用的镜像,而不仅仅是临时文件;

-f, --force :强制删除镜像文件,无需弹出提示确认;

Docker容器(container)

新建并启动容器

语法

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

运行容器

docker run -itd -p 8080:8080 --name tomcat9 tomcat:9.0.20-jre8-alpine

常用参数

-d, --detach=false: 后台运行容器,并返回容器ID

-i, --interactive=false: 以交互模式运行容器,通常与 -t 同时使用

docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

docker run -it --rm -p 8080:8080 tomcat:9.0.20-jre8-alpine

**-**P, --publish-all=false: 随机端口映射,容器内部端口随机映射到主机的端口。不推荐各位小伙伴

使用该参数

-p, --publish=[]: 指定端口映射,格式为:主机(宿主)端口:容器端口,推荐各位小伙伴们使用

**-**t, --tty=false: 为容器重新分配一个伪输入终端,通常与 -i 同时使用

–name=“nginx-lb”: 为容器指定一个名称

-h , --hostname=“”: 指定容器的hostname

-e , --env=[]: 设置环境变量,容器中可以使用该环境变量

–net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型

–link=[]: 添加链接到另一个容器;不推荐各位小伙伴使用该参数

**-**v, --volume : 绑定一个卷

–privileged=false: 指定容器是否为特权容器,特权容器拥有所有的capabilities

–restart=no:指定容器停止后的重启策略

no:容器退出时不重启

on-failure:容器故障退出(返回值非零)时重启

always:容器退出时总是重启,推荐各位小伙伴们使用

–rm=false: 指定容器停止后自动删除容器,不能以docker run -d启动的容器

容器日志

docker logs -f tomcat9

常用参数

-f : 跟踪日志输出

–tail :仅列出最新N条容器日志

删除容器

需要先停止运行中的容器再删除,否则无法删除容器
docker stop tomcat9
按照容器名称删除
docker rm tomcat9
按照容器ID删除
docker rm 8dd95a95e687

常用参数

-f :通过 SIGKILL 信号强制删除一个运行中的容器。

-l :移除容器间的网络连接,而非容器本身。

-v :删除与容器关联的卷。

列出容器

查看运行中的容器
docker ps tomcat9
查看所有容器
docker ps -a tomcat9

常用参数

-a :显示所有的容器,包括未运行的。

-q :只显示容器编号。

输出详情介绍:

CONTAINER ID: 容器 ID。

IMAGE: 使用的镜像。

COMMAND: 启动容器时运行的命令。

CREATED: 容器的创建时间。

STATUS: 容器状态。

状态有7种:

created(已创建)

restarting(重启中)

running(运行中)

removing(迁移中)

paused(暂停)

exited(停止)

dead(死亡)

PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。

NAMES: 自动分配的容器名称。

实用技巧

停止所有运行容器
docker stop $(docker ps -qa)
删除所有的容器
docker rm $(docker ps -aq)
docker rm $(docker stop $(docker ps -q))
删除所有的镜像
docker rmi $(docker images -q)

创建容器

docker create **:**创建一个新的容器但不启动它。用法同 docker run命令。

docker create -it --name tomcat9 -p 8080:8080 9.0.20-jre8-alpine

常用参数

大部分参数用法与docker run命令参数相同

启动、重启、终止容器

docker start tomcat9
docker stop tomcat9
docker restart tomcat9

进入容器

有bash命令的linux系统:例如centos
docker exec -it tomcat9.1 /bin/bash
没有bash命令的linux系统:例如alpine系统
docker exec -it tomcat9.2 sh

常用参数

-i :即使没有附加也保持STDIN 打开

-t :分配一个伪终端

查看容器

docker inspect tomcat9

常用参数

-f :指定返回值的模板文件。

-s :显示总的文件大小。

–type :为指定类型返回JSON。

更新容器

docker update :可以动态地更新容器配置。可以更新一个或多个容器配置。多个容器名称或ID之间使

用空格分隔。但update命令不是很成熟,有很多配置项不能动态更新。推荐大家还是rm容器后,再重

新run一个新的镜像

更新容器restart策略
docker update --restart always tomcat9

杀掉容器

docker kill :杀掉一个运行中的容器。

docker kill tomcat9

常用参数

-s :向容器发送一个信号

docker网络

docker安装后会自动创建3种网络:

bridge

host

none

docker network ls

网络模式

Docker模式网络 配置 说明
host模式 –net=host 容器和宿主机共享Network namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
container模式 –net=container:NAME_or_ID 容器和另外一个容器共享Network namespace。kubernetes中的pod就是多个容器共享一个Network namespace。创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。
none模式 –net=none 容器有独立的Network namespace,并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP等。该模式关闭了容器的网络功能。
bridge模式 –net=bridge (默认为该模式)。此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。
Macvlan network 容器具备Mac地址,使其显示为网络上的物理设备
Overlay (覆盖网络): 利用VXLAN实现的bridge模式

bridge网络

Docker 创建一个容器的时候,会执行如下操作:

• 创建一对虚拟接口/网卡,也就是veth pair,分别放到本地主机和新容器中;

• 本地主机一端桥接到默认的 docker0 或指定网桥上,并具有一个唯一的名字,如 vetha596da4;

• 容器一端放到新容器中,并修改名字作为 eth0,这个网卡/接口只在容器的名字空间可见;

• 从网桥可用地址段中(也就是与该bridge对应的network)获取一个空闲地址分配给容器的 eth0,并配置默认路由到桥接网卡 vetha596da4。

完成这些之后,容器就可以使用 eth0 虚拟网卡来连接其他容器和其他网络。

如果不指定–network,创建的容器默认都会挂到 docker0 上,使用本地主机上 docker0 接口的 IP 作为所有容器的默认网关。

查看docker0网络,在默认环境中,一个名为docker0的linux bridge自动被创建好了,其上有一个
docker0 内部接口,IP地址为172.17.0.1/16
ip a查看docker 网络
docker network ls查看bridge网络详情。主要关注Containers节点信息。
docker network inspect bridge

link容器

学习docker run命令的link参数

–link=[]: 添加链接到另一个容器;不推荐各位小伙伴使用该参数

docker run -itd --name nginx1 nginx:1.19.3-alpine
docker run -itd --name nginx2 --link nginx1 nginx:1.19.3-alpinedocker exec -it nginx2 sh
ping 172.17.0.2
ping www.baidu.com
ping nginx1docker rm -f nginx1
docker rm -f nginx2

新建bridge网络

docker network create -d bridge my-bridge查看bridge信息
docker network ls
docker network inspect my-bridgedocker run -itd --name nginx1 --network my-bridge nginx:1.19.3-alpine查看bridge信息
docker network inspect my-bridge

把一个运行中容器连接到my-bridge网络

docker run -itd --name nginx2 nginx:1.19.3-alpine
docker network connect my-bridge nginx2查看bridge信息
docker network inspect my-bridgedocker exec -it nginx1 sh
ping nginx2docker exec -it nginx2 sh
ping nginx1docker rm -f nginx1
docker rm -f nginx2

none网络

注意,容器使用none模式,是没有物理地址和IP地址。我们可以进入到nginx1容器里,执行ip a命令看看。只有一个lo接口,没有其他网络接口,没有IP。也就是说,使用none模式,这个容器是不能被其他容器访问。这种使用场景很少,只有项目安全性很高的功能才能使用到。例如:密码加密算法容器。

docker run -itd --name nginx1 --network none nginx:1.19.3-alpinedocker network inspect none

host网络

我们使用前面命令,启动一个nginx的nginx2容器,连接到host网络。然后docker network inspect host, 看看容器信息。

docker run -itd --name nginx2 --network host nginx:1.19.3-alpinedocker network inspect host

这里来看,也不显示IP地址。那么是不是和none一样,肯定不是,不然也不会设计none和host网络进行区分。下面我们进入nginx2容器,执行ip a看看效果。我们在容器里执行ip a,发现打印内容和在linux本机外执行ip a是一样的。

docker exec -it nginx2 sh
ip a

容器使用了host模式,说明容器和外层linux主机共享一套网络接口。VMware公司的虚拟机管理软件,其中网络设置,也有host这个模式,作用也是一样,虚拟机里面使用网络和你自己外层机器是一模一样的。这种容器和本机使用共享一套网络接口,缺点还是很明显的,例如我们知道web服务器一般端口是80,共享了一套网络接口,那么你这台机器上只能启动一个nginx端口为80的服务器了。否则,出现端口被占用的情况。

网络命令汇总

docker network --help网络常用命令汇总connect     Connect a container to a networkcreate      Create a networkdisconnect  Disconnect a container from a networkinspect    Display detailed information on one or more networksls          List networksprune      Remove all unused networksrm            Remove one or more networks

查看网络

查看网络 –
docker network ls# 作用:查看已经建立的网络对象
# 命令格式:docker network ls [OPTIONS]
# 命令参数(OPTIONS):-f, --filter filter 过滤条件(如 'driver=bridge’)--format string 格式化打印结果--no-trunc 不缩略显示-q, --quiet 只显示网络对象的ID
# 注意:默认情况下,docker安装完成后,会自动创建bridge、host、none三种网络驱动# 命令演示
docker network ls
docker network ls --no-trunc
docker network ls -f 'driver=host'

创建网络

创建网络 –
docker network create# 作用:创建新的网络对象
# 命令格式:docker network create [OPTIONS] NETWORK
# 命令参数(OPTIONS):-d, --driver string 指定网络的驱动(默认 "bridge")--subnet strings 指定子网网段(如192.168.0.0/16、172.88.0.0/24)--ip-range strings 执行容器的IP范围,格式同subnet参数--gateway strings 子网的IPv4 or IPv6网关,如(192.168.0.1)
# 注意:host和none模式网络只能存在一个docker自带的overlay 网络创建依赖于docker swarm(集群负载均衡)服务192.168.0.0/16 等于 192.168.0.0~192.168.255.255 192.168.8.0/24172.88.0.0/24 等于 172.88.0.0~172.88.0.255
# 命令演示
docker network ls
docker network create -d bridge my-bridge
docker network ls

网络删除

网络删除 –
docker network rm
# 作用:删除一个或多个网络
# 命令格式:docker network rm NETWORK [NETWORK...]
# 命令参数(OPTIONS):无

查看网络详细信息

查看网络详细信息
docker network inspect
# 作用:查看一个或多个网络的详细信息
# 命令格式:docker network inspect [OPTIONS] NETWORK [NETWORK...]或者 docker inspect [OPTIONS] NETWORK [NETWORK...]
# 命令参数(OPTIONS):-f, --format string 根据format输出结果

使用网络

使用网络 –
docker run –-network
# 作用:为启动的容器指定网络模式
# 命令格式:docker run/create --network NETWORK
# 命令参数(OPTIONS):无
# 注意:默认情况下,docker创建或启动容器时,会默认使用名为bridge的网络

网络连接与断开

网络连接与断开 –
docker network connect/disconnect
# 作用:将指定容器与指定网络进行连接或者断开连接
# 命令格式:docker network connect [OPTIONS] NETWORK CONTAINERdocker network disconnect [OPTIONS] NETWORK CONTAINER
# 命令参数(OPTIONS):-f, --force 强制断开连接(用于disconnect)

小练习

docker network create -d bridge --subnet=172.172.0.0/24 --gateway 172.172.0.1 my-network172.172.0.0/24: 24代表子码掩码是255.255.255.0
172.172.0.0/16: 16 代表子码掩码docker network lsdocker run -itd --name nginx3 -p 80:80 --net my-network --ip 172.172.0.10
nginx:1.19.3-alpine--net my-network:选择存在的网络
--ip 172.172.0.10:给nginx分配固定的IP地址docker network inspect my-networkdocker stop nginx3
docker start nginx3docker network inspect my-network

docker数据卷

什么是数据卷

当我们在使用docker容器的时候,会产生一系列的数据文件,这些数据文件在我们删除docker容器时是会消失的,但是其中产生的部分内容我们是希望能够把它给保存起来另作用途的,Docker将应用与运行环境打包成容器发布,我们希望在运行过程钟产生的部分数据是可以持久化的的,而且容器之间我们希望能够实现数据共享。通俗地来说,docker容器数据卷可以看成使我们生活中常用的u盘,它存在于一个或多个的容器中,由docker挂载到容器,但不属于联合文件系统,Docker不会在容器删除时删除其挂载的数据卷。

特点:

  1. 数据卷可以在容器之间共享或重用数据

  2. 数据卷中的更改可以立即生效

  3. 数据卷中的更改不会包含在镜像的更新中

  4. 数据卷默认会一直存在,即使容器被删除

  5. 数据卷的生命周期一直持续到没有容器使用它为止

容器中的管理数据主要有两种方式:

数据卷:Data Volumes 容器内数据直接映射到本地主机环境

数据卷容器:Data Volume Containers 使用特定容器维护数据卷

cp命令

当然还有最原始的copy方式,这个也是管理数据的方式,但是基本不会用到。

**docker cp

Docker实战教程相关推荐

  1. Docker 实战教程之从入门到提高 (五)

    本系列的前四篇文章,我们学习了如何在 Ubuntu 操作系统安装 Docker,并且通过实战练习,了解了 Docker 和宿主机操作系统文件目录互相隔离的实现原理,以及 Docker Volume 的 ...

  2. Docker 实战教程之从入门到提高 (四)

    本系列的前三篇文章,我们学习了如何在 Ubuntu 操作系统安装 Docker,并且通过实战练习,了解了 Docker 和宿主机操作系统文件目录互相隔离的实现原理,以及 Docker Volume 的 ...

  3. Docker 实战教程之从入门到提高(二)

    本系列第一篇文章,Docker 实战教程之从入门到提高 (一),我们已经介绍了如何在 Ubuntu 操作系统中安装 Docker,以及 Proxy 和 Insecure Registry 的配置. 本 ...

  4. 尚硅谷Docker实战教程-笔记02【安装docker、镜像加速器配置】

    尚硅谷大数据技术-教程-学习路线-笔记汇总表[课程资料下载] 视频地址:尚硅谷Docker实战教程(docker教程天花板)_哔哩哔哩_bilibili 尚硅谷Docker实战教程-笔记01[理念简介 ...

  5. 尚硅谷Docker实战教程学习总结文档

    目录 Docker与微服务实战(2022版) 1.基础篇(零基础小白) 1.1.Docker简介 1.1.1.怎么去学习Docker 1.1.2.是什么 1.1.2.1.为什么会有docker的出现? ...

  6. Docker教程(一) Docker入门教程

    Docker教程(一) Docker入门教程 本文链接:https://blog.csdn.net/yuan_xw/article/details/51935278 Docker教程(一) Docke ...

  7. Docker实战 (docker swarm的应用,docker集群的构建,在docker集群中部署服务)

    Docker实战 ----docker swarm的应用,docker集群的构建,在docker集群中部署服务 转载来源:https://blog.csdn.net/No_red/article/de ...

  8. 【NAS备份】摆脱丢数据的噩梦,群晖备份硬核实战教程分享

    前言 大家好,我是村雨Mura,本期来聊一聊我是如何用 NAS 轻松.完整地备份自己数据的. 首先,硬件再好不如备份 即便从小的线材到硬盘的质量都用最好的,也很难保证不丢数据,宇宙射线.硬盘不可逆衰减 ...

  9. STM32全链路开发实战教程专栏总目录(2022.10.19更新)

    文章目录 专栏说明 一.开发环境相关 二.STM32裸机开发 STM32CubeMX系列教程 玩转嵌入式屏幕显示 嵌入式开源小组件的使用 mbedtls开源安全库 DW1000 UWB芯片开发笔记 L ...

最新文章

  1. 调用个别f5 负载端口为80的vs时,返回值为空的问题
  2. 独家|华为进行组织架构调整 CloudAI升至第四大BG
  3. 如何使用robots禁止各大搜索引擎爬虫爬取网站
  4. 10岁起编程,并不认为自己是“黑客”
  5. Docker原理之CGroups
  6. shell执行docker命令卡挂住_Docker官方文档翻译4
  7. 算法笔记_100:蓝桥杯练习 算法提高 三个整数的排序(Java)
  8. opensource项目_最佳Opensource.com:硬件
  9. MySQL 的 Web 界面、前端或 GUI 工具
  10. 【Elasticsearch】es 使用Rollup在Elasticsearch 6.3中合并旧日志 上卷 Rollup
  11. SQL语言入坑—1.数据的检索、排序、过滤、分组
  12. Django知识总结
  13. 寻找阿姆斯特朗数(北理乐学)
  14. 短视频网站源码干货分享:如何实现背景音乐和美颜功能
  15. Linux系统密码忘记教程
  16. Excel下的数据挖掘:学生成绩统计分析实战之总体分析
  17. Difference between Static video and Single image ?静态视频和单张图像的区别
  18. 端口输出报错**Error** test5.ASM(60) Constant too large
  19. 在html5中,用于获得用户当前位置的方法
  20. 【ClickHouse内核】MergeTree表引擎语法结构

热门文章

  1. 技术管理从入门到提高:RRR技术管理框架
  2. jsp 配置 oracle数据库连接池,tomcat5/tomcat4中配置数据库(oracle)连接池
  3. linux firefox插件开发教程,Linux下firefox插件开发
  4. 猴子摘桃子计算机程序框图,大班数学教案及教学反思《小猴子摘桃子》
  5. Git个人仓库服务器搭建
  6. 中学生应该如何选择零食
  7. 大数据应用导论 Chapter02 | 大数据的采集与清洗
  8. Windows子系统的安装与使用
  9. 新世界七大奇观协会 N7W基金组织首次全球投票
  10. bottle:python web框架学习