1.redis主从同步

可以主从数据同步,从库只读,只能手动切换主备关系
2.redis哨兵
-准备redis主从数据库环境
-准备redis哨兵(可以有一个,可以有多个)
-哨兵检测redis主库状态,主库挂了的话,找一个从库顶替
3.redis-cluster(redis3.0之后,官方提供的集群方案)
-主从+哨兵
-codis(redis集群方案,豆瓣的开发,开源的软件)

1.docker介绍
docker是linux容器方案
docker可以很大的解决环境依赖问题

virtualenv是什么?
python解释器的虚拟环境,和操作系统无关
在机器上可以配置多个python解释器

docker环境依赖解决问题:
1.在物理操作系统上的一个环境隔离(虚拟环境)

docker使用命令回顾:
镜像
docker image ls
docker images
docker pull 镜像名 #docker仓库,dockerhub
docker push 镜像名 #把本地的镜像推送到 dockerhub仓库
docker search 镜像名
docker rmi 删除镜像
docker version #查看docker版本,查看到server 和client两个端
systemctl start docker #启动docker
docker save 镜像名 > /data/centos.tar.gz #导出镜像
docker load < /data/centos.tar.gz #导入镜像
docker run 镜像名 #运行镜像文件,产生一个容器实例

容器
docker start 容器id
docker stop 容器id
docker exec -it 容器id #进入正在运行的容器
-i 交互式操作
-t 开启一个终端

docker run 镜像名 #创建容器实例
docker rm 容器id #删除容器记录,必须提前docker stop 容器id ,只能杀死已经停止的容器
docker ps #查看容器正在运行记录
docker ps -aq #显示所有容器记录的id号
-a 显示所有容器记录
-q 显示容器id

docker rm `docker ps -aq` #一次性删除所有容器记录

docker container ls #查看容器正在运行记录
docker commit 容器id记录 #提交这个容器,创建一个新的镜像
docker logs #查看容器运行日志
-f #不间断打印容器日志

docker port #查看容器的端口映射关系(外部访问到容器内的端口)
docker run -d centos -P
-d 后台运行
-P 随机映射端口
-p 9000(宿主机):5000(容器内)
--name 给创建的容器记录,添加别名

仓库

1.docker pull

2.docker run #如果没有这个镜像,直接docker run 它也会内部去下载这个镜像

#脚本的概念就是,将你想做的事,写入到一个文件中,然后执行这个文件,就是执行一个脚本

#假如我想定制一个自己的 docker镜像
#首先得有一个基础操作系统镜像
#FROM centos #基于这个centos的镜像,然后定制我自己的镜像
#底下通过docker提供的指令,添加,自定制自己的规则,然后创建自己的镜像文件
#FROM centos #基于这个centos的镜像,然后定制我自己的镜像
#RUN yum install vim -y
#RUN yum install nginx -y

#仅仅只有这3句的dockerfile,就能定制一个拥有nginx和vim的centos镜像文件

#此时我构建出的这个centos-vim-nginx镜像文件,就可以传给14期的所有同学用

#咱们14期的同学,就可以 docker load 或者docker pull 这个镜像,docker run centos-vim-nginx

FROM scratch #制作base image 基础镜像,尽量使用官方的image作为base image

FROM centos #使用base image

FROM ubuntu:14.04 #带有tag的base image

#相当于代码注释,告诉别人,你的镜像文件的信息是什么
LABEL version=“1.0” #容器元信息,帮助信息,Metadata,类似于代码注释
#定义一个dockerfile的作者信息
LABEL maintainer="wupeiqidsb"

#开始定制自己的镜像需求
#对于复杂的RUN命令,避免无用的分层,多条命令用反斜线换行,合成一条命令!
RUN yum update && yum install -y vim \
Python-dev #反斜线换行
#RUN指令,相当于在centos中执行了一堆命令
RUN hostnamectl set-hostname mydocker
RUN yum install redis -y

#写上3条就会执行者3条

WORKDIR /root #相当于linux的cd命令,改变目录,尽量使用绝对路径!!!不要用RUN cd
WORKDIR /test #如果没有就自动创建
WORKDIR demo #再进入demo文件夹
WORKDIR s14
WORKDIR /opt

RUN pwd /opt

#ADD和COPY
#宿主机linux有自己的磁盘,文件夹
#容器空间 也有自己的文件夹

#我们使用docker一定是想将宿主机的文件,添加到容器中

#ADD就是添加宿主机的文件,到容器当中
#ADD还有一个解压缩的功能

# /opt
ADD and COPY
#把宿主机的hello文件,放入到容器的 / 根目录下
# 这个hello文件的相对路径,是以Dockerfile文件所在目录为相对路径

ADD hello / #把本地文件添加到镜像中,吧本地的hello可执行文件拷贝到镜像的/目录

#把与dockerfile同级的一个test.tar.gz压缩文件,拷贝添加到容器的 根 / 目录中,并且解压缩
# 远程传输 并且 tar -zxvf
ADD test.tar.gz / #添加到根目录并解压

WORKDIR /root #切换工作目录到 /root

#把dockerfile同级的那个hello文件 拷贝到容器的/root/test/hello

ADD hello test/ #进入/root/ 添加hello可执行命令到test目录下,也就是/root/test/hello 一个绝对路径

COPY hello test/ #等同于上述ADD效果

ADD与COPY
-ADD除了COPY功能还有解压功能

添加远程文件/目录使用curl或wget

ENV #环境变量,尽可能使用ENV增加可维护性
ENV MYSQL_VERSION 5.6 #设置一个mysql常量
RUN yum install -y mysql-server=“${MYSQL_VERSION}”

RUN ./cofigure --prefix=/opt/
RUN make&& make install

#dockerfile实验

1.准备一个flask代码,准备python代码
from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello():
return "hello docker,i am sbwueiqi, i am in s14 "
if __name__=="__main__":
app.run(host='0.0.0.0',port=8080)

2.准备Dockerfile,准备好所有需要的文件
[root@node1 /data/mydocker 10:33:53]#ls
CentOS-Base.repo Dockerfile epel.repo myflask.p
Dockerfile myflask.py手动创建两个文件
CentOS-Base.repo # 从这里下载 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
epel.repo # 从这里下载 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

cat Dockerfile
FROM centos
LABEL maintainer="Chao Yu<yc_uuu@163.com>"
ADD CentOS-Base.repo /etc/yum.repos.d/
ADD epel.repo /etc/yum.repos.d/
RUN yum clean all
RUN yum install python-pip -y
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple flask
COPY myflask.py /app/
WORKDIR /app
EXPOSE 8080
CMD ["python","myflask.py"]
1.引入一个centos镜像,为基础镜像
2.作者注释信息
3.添加本地的两个yum文件,到容器的/etc/yum.repos.d/底下
4.清空yum缓存
5.yum安装pip工具
6.pip安装flask模块,指定清华源
7.拷贝本地的flask代码,到容器的/app/目录下
8.切换工作目录,到/app底下
9.暴露容器的8080端口,然后在运行镜像时候,加上-p参数,指定端口映射
10.执行命令,运行flask

3.构建docker镜像文件
docker build -t yuchao163/s14-flask-docker .
#构建当前目录的Dcokerfile,然后构建出一个名为yuchao163/s14-flask-docker 这个的镜像文件
-t tag参数,给镜像加上标记名
dockerhub账户名:yuchao163

dockerhub账户名/镜像名 #是为了后面讲docker镜像,推送到dockerhub

4.查看镜像是否构建完成
docker images

5.运行这个镜像文件,产生容器实例

docker run -p 9000:8080 -d 43d
-p 映射9000端口到容器的8080
-d 后台运行
43d 镜像id

6.查看已经运行的docker实例

docker ps

7.学习dockerhub,发布自己的docker镜像
1.我可以先下载其他人的docker镜像

docker pull yuchao163/hello-world-docker

2.上传自己的docker镜像
docker login #登录自己的docker hub账号 ,输入密码
#docker就会有你自己的dockerhub账号信息 yuchao163

3.更改docker镜像的名字,也就是加上一个tag标记
docker tag s14/centos-vim yuchao163/s14-centos-vim
docker tag 现有镜像名字 dockerhub账户名/新的镜像名
4.登录后可以推送镜像文件,此时推送给的是自己的yuchao163账号仓库下
docker push yuchao163/s14-hello-docker

5.登录https://hub.docker.com/查看自己推送的公网镜像

8.构建公司私有docker仓库,其实就是搭建一个api服务器,通过api可以下载镜像
1.下载docker官方提供的私有仓库镜像
docker pull registry
2.查看镜像
docker images
3.启动一个私有仓库容器
docker run -d \
-p 5000:5000 \
-v /opt/data/registry:/var/lib/registry \
registry
4.此时可以检查容器进程
docker ps
5.此时私有仓库就打开了5000端口,通过端口映射,访问宿主机的5000端口,查看是否通信
yum install telnet -y

telnet 127.0.0.1 5000 #检测5000端口是否通信

6.修改本地镜像的tag标签,标注我要往哪push镜像
docker tag docker.io/hello-world 192.168.12.96:5000/s14-hello

7.修改docker配置,允许非安全的传输方式

1.vim /etc/docker/daemon.json,写入信息,私有仓库地址,都得改成自己的
{"registry-mirrors": ["http://95822026.m.daocloud.io"],
"insecure-registries":["192.168.12.96:5000"]
}
2.修改docker.server
vim /lib/systemd/system/docker.service
#写入如下信息,请在[service]中写入
[Service]
EnvironmentFile=/etc/docker/daemon.json

8.重启docker服务,使得生效
systemctl daemon-reload #重新加载docker配置文件

systemctl restart docker #重启docker服务

9. #重启docker服务,会停止容器,因此要再次启动

docker ps -a
docker start b23bcfe42e80 #启动这个私有仓库容器

10.推送本地镜像到 私有仓库 192.168.12.96:5000
docker push 192.168.12.96:5000/s14-hello

11.此时访问api接口,查看私有仓库的数据
http://192.168.12.96:5000/v2/_catalog

docker的数据集挂载功能
-v 参数 挂载宿主机的文件:容器内的文件夹
-v /opt/data:/opt/s14/

docker run -p 8000:8080 -v /opt/s14:/opt/data/ -d 43d
启动容器,通过-v参数挂载
挂载容器内的/opt/data/文件夹,其实访问的是宿主机的/opt/s14/

-p 7000:5000

redhat enterprice linux
1.熟悉linux环境Python OOP编程,擅长RHEL/centos7操作系统
2.熟悉linux常用命令
3.熟练使用virtualenvwrapper管理python多个解释器环境
4.熟练mysql关系型数据库,CURD,mysql主从复制
5.熟练NoSQL非关系型数据库redis,mongodb
6.熟练redis主从配置,数据持久化RDB、AOF、redis哨兵维护redis主从高可用,了解redis-cluster
7.擅长nginx上线python项目,使用uwsgi+nginx+supervisor管理python项目
8.熟练nginx反向代理,负载均衡配置
9.熟悉docker安装配置,常用docker命令,编写dockerfile构建镜像,构建私有docker仓库
10.熟悉linux下运维管理软件saltstack
11.熟悉ubuntu操作系统

linux之docker学习的更多相关文章

  1. Docker学习笔记二(linux下安装Docker)

    Docker学习笔记二(linux下安装Docker) 1.在线安装linux Docker 这种方式首先要保证linux 环境下可以上网,当然,小编是在自己的电脑上安装了虚拟机,在虚拟机上安装了,l ...

  2. Docker学习总结

    本文作为总结性文章,不会详细讲解Docker.但会把已学习的.了解的内容按照由易到难的顺序串起来,更多的是帮助Docker新手快速的了解Docker,知道目前处在哪个阶段,接下来该学些什么,避免碰太多 ...

  3. docker学习资料整理(持续更新中..)

    docker最近可以说火得一踏糊涂,跟 51大神在交流技术的时候这个东西会多次被提到,当我们还玩vm+linux/freebsd的时候,人家已经上升到更高层次了,这就是差距,感觉好高大上的样子,技术之 ...

  4. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

  5. Docker学习总结之Run命令介绍

    Docker学习总结之Run命令介绍 本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢! 在使用Docker时,执行最多的命令某 ...

  6. docker~学习笔记索引

    回到占占推荐博客索引 使用docker也有段时间了,写了不少文章与总结,下面把它整理个目录出来,方便大家去学习与检索! docker~学习笔记索引 docker~linux下的部署和基本命令(2017 ...

  7. docker学习笔记(一)—— ubuntu16.04下安装docker

    docker学习笔记(一)—— ubuntu16.04下安装docker 原创 2018年03月01日 14:53:00 标签: docker / ubuntu 1682 本文开发环境为Ubuntu ...

  8. docker 学习资料收集

    Docker中文网 http://www.docker.org.cn/book/ docker镜像怎么迁移到其他的服务器 http://www.talkwithtrend.com/Question/1 ...

  9. 优秀的云计算工程师需要学什么?云计算Docker学习路线

    云计算工程师要学什么?随着互联网的快速发展,云计算这个词大家并不陌生,但是云计算究竟是做什么的,想要从事云计算要学习什么,很多都不知道,那么今天就给大家讲一下云计算. 云计算是基于互联网的相关服务的增 ...

随机推荐

  1. flex学习笔记 使用函数,显示实时更新的标签

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...

  2. 【ASP.NET 问题】Win7中IIS被防火墙阻止导致外网无法访问的解决方法。

    今天装了IIS7.0,把网站发布了上去,但局域网的其他电脑始终无法访问主机上的网站. 于是想到防火墙的原因,把防火墙关掉,可以正常访问,但是打开就不行. 于是去网上找资料,总算搞定了. 原来在防火墙的 ...

  3. MongoDB 全部笔记

    1. MongoDB: 是NOSQL的一种, 特长是分布式用的,用于处理爬虫数据 2. mongoDB 与 redis mongoDB是最像关系型的非关系型数据,更加适用于大数据,redis则更倾向于 ...

  4. H5自动准备杂记

    由于之前没做过UI自动化,近期准备做H5自动化,要学的东西还是很多. 1.本地debug环境:android studio + android SDK(想要调试通要关注:驱动.手机开发者模式要打开) ...

  5. c++Builder debug DataSet Visualizer

    c++Builder debug DataSet Visualizer delphi 正常,c++builder报错. fdMemTable->SaveToFile("d:\\DSdb ...

  6. UI5-学习篇-13-Eclipse 开发UI5应用

    1.Eclipse环境配置及组件安装 UI5-学习篇-1-Eclipse开发工具及环境搭建 2.创建项目 3.设置代理映射 打开WebContent->WEB-INF->web.xml文件 ...

  7. DJango之视图函数

    一)Django WEB框架 2) request.path和request.get_full_path() 是请求的路径 3)render:页面渲染 4)redirect:页面跳转 3)模板语法: ...

  8. SQL Server 优化---为什么索引视图(物化视图)需要with(noexpand)强制查询提示

    本文出处:http://www.cnblogs.com/wy123/p/6694933.html 第一次通过索引视图优化SQL语句,以及遇到的一些问题,记录一下. 语句分析 最近开发递交过来一个查询统 ...

  9. is not writable or has an invalid setter method错误的解决

    java中在配置spring时,遇到is not writable or has an invalid setter method的错误一般是命名方式的问题 需要写成private userInfoD ...

  10. FMS Dev Guide学习笔记(验证客户端)

    一.开发交互式的媒体应用程序 1.使用客户端对象的属性     当一个客户端连接上服务器上的一个应用,服务端就会创建一个包含这个客户端信息的客户端对象并且将它传递给application.onConn ...