Git分布式控制软件
Git什么是版本控制?版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一 。– 百度百科
什么是集中化的版本控制系统?就是有一个集中管理的中央服务器,保存着所有文件的修改历史版本,而协同开发者通过客户端连接到这台服务器,从服务器上同步更新或上传自己的修改。
什么是分布式版本控制系统?分布式版本控制系统,就是远程仓库同步所有版本信息到本地的每个用户。
用户在本地就可以查看所有的历史版本信息,但是偶尔要从远程更新一下,因为可能别的用户有文件修改提交到远程哦。
用户即使离线也可以本地提交,push推送到远程服务器才需要联网。
每个用户都保存了历史版本,所以只要有一个用户设备没问题,就可以恢复数据。
Git介绍
Git官网
git是一个分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)(Linux之父)创作,于2005年发布。最初目的是为更好地管理Linux内核开发。Git 在本地磁盘上就保存着所有有关当前项目的历史更新,处理速度快;Git 中的绝大多数操作都只需要访问本地文件和资源,不用实时联网。
安装
L ...
docker-compose
简介Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 OpenStack(虚拟容器技术) 中的 Heat 十分类似。
其代码目前在 https://github.com/docker/compose 上开源。
Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications),同时可以对多个容器进行编排」,其前身是开源项目 Fig。
之前我们已经学习了 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Com ...
Dockerfile介绍
什么是DockerfileDockerfile可以认为是Docker镜像的描述文件,是由一系列命令和参数构成的脚本。主要作用是用来构建docker镜像的构建文件。
通过架构图可以看出通过DockerFile可以直接构建镜像
为什么要使用Dockerfile问题:在docker hub中官方提供了很多镜像的,已经能满足我们的所有服务,为什么还需要自定义镜像呢?
核心作用:是将我们自己的应用打包成镜像,这样就可以使我们的应用容器运行。
也可将基础的镜像,根据自己的配置,进行重新构建镜像,日后以便复用。
Dockerfile解析过程
Dockerfile的常用语法命令官方说明:https://docs.docker.com/engine/reference/builder/
保留字
作用
FROM
当前镜像是基于哪个镜像的 第一个指令必须是FROM
MAINTAINER
镜像维护者的姓名和邮箱地址(已废弃)
RUN
构建镜像时需要运行的指令
EXPOSE
当前容器对外暴露出的端口号
WORKDIR
指定在创建容器后,终端默认登录进来的工作目录,一个落脚点
...
Docker常用服务安装
1. 安装mysql
到docker hub上搜索mysql镜像,查看镜像的信息
拉取mysql镜像到本地
docker pull mysql:tag (tag不加默认最新版本)
运行mysql服务
在启动mysql的时候,不能直接使用run直接启动
12345678910111213[root@localhost ~]# docker run -d --name mysql -p 3307:3306 mysql:5.7.3378edf58974fa8ff51d495e47a2b4fe74c06927d99a6df3d191a9d6491529561a[root@localhost ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES[root@localhost ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS ...
Docker安装及配置
Docker的安装安装docker(Linux)
环境准备:CentOS 7
1234567891011121314151617181920# 系统内核是3.10以上的[root@localhost ~]# uname -r3.10.0-957.el7.x86_64# 系统版本[root@localhost ~]# cat /etc/os-releaseNAME="CentOS Linux"VERSION="7 (Core)"ID="centos"ID_LIKE="rhel fedora"VERSION_ID="7"PRETTY_NAME="CentOS Linux 7 (Core)"ANSI_COLOR="0;31"CPE_NAME="cpe:/o:centos:centos:7"HOME_URL="https://www.centos.org/"BUG_REPORT_URL="https://bugs.centos.org/"CENTOS_MANTISBT_PROJECT="CentOS-7"CENTOS_MANTISBT_PROJECT_VERSION="7"REDHAT_SUP ...
Docker介绍
什么是container(容器)?容器是一种快速的打包技术
Package Software into Standardized Units for Development, Shipment and Deployment
标准化
轻量级
易移植
Linux Container容器技术的诞生(2008年)就解决了IT世界里“集装箱运输”的问题。Linux Container(简称LXC)它是一种内核轻量级的操作系统层虚拟化技术。Linux Container主要由Namespace和Cgroup两大机制来保证实现
Namespace命名空间主要用于资源的隔离
Cgroup就负责资源管理控制作用,比如进程组使用CPU/MEM的限制,进程组的优先级控制,进程组的挂起和恢复等等。
容器的标准化docker != container
在2015年,由Google,Docker、红帽等厂商联合发起了OCI(Open Container Initiative)组织,致力于容器技术的标准化
容器运行时标准 (runtime spec)简单来讲就是规定了容器的基本操作规范,比如如何下载镜 ...
Docker中的网络配置
为什么提供网络功能?Docker运行通过外部访问容器或容器互联的方式来提供网络服务。
Docker网络配置当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。
同时,Docker 随机分配一个本地未占用的私有网段(在 RFC1918 中定义)中的一个地址给 docker0 接口。比如典型的 172.17.42.1,掩码为 255.255.0.0。此后启动的容器内的网口也会自动分配一个同一网段(172.17.0.0/16)的地址。
当创建一个 Docker 容器的时候,同时会创建了一对 veth pair 接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即 eth0;另一端在本地并被挂载到 docker0 网桥,名称以 veth 开头(例如 vethAQI2QT)。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker 就创建了在主机和所有容器之间一个虚拟共享网络。
注意:一般在使用docker网桥( ...
Docker相关操作
官方命令帮助文档:https://docs.docker.com/reference/
Docker辅助命令
显示docker的版本信息
1docker -version
显示docker的系统信息,包括镜像和容器的数量
1docker info
帮助命令
查看所有的docker帮助文档
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384[root@localhost ~]# docker --helpUsage: docker [OPTIONS] COMMANDA self-sufficient runtime for containersOptions: --config string Location of client config files (default "/ro ...
Docker可视化工具
Docker可视化工具GitHub地址:https://github.com/portainer/portainer
安装Portainer官方安装说明:https://www.portainer.io/installation/
拉去portainer镜像
启动portainer容器
查看启动的容器
123456[root@localhost ~]# docker pull portainer/portainer[root@localhost ~]# docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer5c113a47e16499c831d47663a728ec52b6075b2270410158e249501bdbfa7ea6[root@localhost ~]# docker psCONTAINER ID ...
Docker的镜像原理
镜像是什么?镜像是一种轻量级的,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时所需的库、环境变量和配置文件。
为什么一个镜像会那么大?
从上图看到,我们在官网下载tomcat和nginx都是几MB,为什么我们拉去的镜像,会有几百兆,下面我们看张图,更形象的理解什么是镜像
花卷很形象的描述一个镜像,一层一层的。一个软件镜像不仅仅是原来软件包,包含软件包所需的操作系统,软件自身依赖,以及自身软件包组成
镜像是分层处理的,我们看下图进一步的理解。
我们发现每个镜像有公共的部分,采用分层处理,则将公共部分提取出来
UnionFS(联合文件系统)Union文件系统是一种分层,轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。Union文件系统是Docker镜像的基础。这种文件系统特性:就是一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录
Docker镜像 ...