linux之docker学习
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学习的更多相关文章
- Docker学习笔记二(linux下安装Docker)
Docker学习笔记二(linux下安装Docker) 1.在线安装linux Docker 这种方式首先要保证linux 环境下可以上网,当然,小编是在自己的电脑上安装了虚拟机,在虚拟机上安装了,l ...
- Docker学习总结
本文作为总结性文章,不会详细讲解Docker.但会把已学习的.了解的内容按照由易到难的顺序串起来,更多的是帮助Docker新手快速的了解Docker,知道目前处在哪个阶段,接下来该学些什么,避免碰太多 ...
- docker学习资料整理(持续更新中..)
docker最近可以说火得一踏糊涂,跟 51大神在交流技术的时候这个东西会多次被提到,当我们还玩vm+linux/freebsd的时候,人家已经上升到更高层次了,这就是差距,感觉好高大上的样子,技术之 ...
- Docker学习笔记之一,搭建一个JAVA Tomcat运行环境
Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...
- Docker学习总结之Run命令介绍
Docker学习总结之Run命令介绍 本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢! 在使用Docker时,执行最多的命令某 ...
- docker~学习笔记索引
回到占占推荐博客索引 使用docker也有段时间了,写了不少文章与总结,下面把它整理个目录出来,方便大家去学习与检索! docker~学习笔记索引 docker~linux下的部署和基本命令(2017 ...
- docker学习笔记(一)—— ubuntu16.04下安装docker
docker学习笔记(一)—— ubuntu16.04下安装docker 原创 2018年03月01日 14:53:00 标签: docker / ubuntu 1682 本文开发环境为Ubuntu ...
- docker 学习资料收集
Docker中文网 http://www.docker.org.cn/book/ docker镜像怎么迁移到其他的服务器 http://www.talkwithtrend.com/Question/1 ...
- 优秀的云计算工程师需要学什么?云计算Docker学习路线
云计算工程师要学什么?随着互联网的快速发展,云计算这个词大家并不陌生,但是云计算究竟是做什么的,想要从事云计算要学习什么,很多都不知道,那么今天就给大家讲一下云计算. 云计算是基于互联网的相关服务的增 ...
随机推荐
- 完整验证码类(validityHelper)(代码+使用)
using System; using System.Web; using System.Drawing; using System.Security.Cryptography; namespace ...
- docker 2 容器数据卷
docker 启动tomcat docker run -it -p 8888:8080 tomcat 提交一个容器使之成为一个镜像 docker commit -a=“作者” -m=“提交信息” 模板 ...
- 查找nginx安装的路径
你可以用这两个命令,找安装启用的路径 netstat -tnlp|grep nginx 然后看到一行记录,复制最后的一个数据(进程ID) ps -aux |grep 进程ID 就可以看到 NINGX的 ...
- Oracle 学习总结 - 表和索引的性能优化
表的性能 表的性能取决于创建表之前所应用的数据库特性,数据库->表空间->表,创建数据库时确保为每个用户创建一个默认的永久表空间和临时表空间并使用本地管理,创建表空间设为本地管理并且自动段 ...
- C#new出来的结构体内存分配在堆上
如题,有同事说因为结构体是值类型,所以 new出来的也是分配在栈上的.我的直觉是但凡使用new的东西都在堆上分配内存,除非C#对结构体做了特殊处理. new int[10]这个说明不了什么,因为数组是 ...
- ARP协议,以及ARP欺骗
1.定义: 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到网络上 ...
- Mac打开swf文件
在网上搜怎么打开swf文件,找到一个简易的方法, 在文本编辑器里输入以下内容,保存成html格式,直接在浏览器打开 <html> <body> <embed src=&q ...
- 解决error: only position independent executables (PIE) are supported
在Android.mk文件中添加以下内容 LOCAL_CFLAGS += -pie -fPIE LOCAL_LDFLAGS += -pie -fPIE 原帖地址:http://blog.csdn.ne ...
- 23.week4
调通了 剩下的就是核心的部分
- python批量操作Linux服务器脚本,ssh密码登录(执行命令、上传、下载)(一)
-*- paramiko.util.log_to_file( ssh = paramiko.SSHClient() ssh.set_missing ...