git命令和docker命令

1、git

git是分布式的版本控制工具

git可以通过本地仓库管理文件的历史版本记录

# 本地仓库操作的命令
# 初始化本地库
git init
# 添加文件到暂存区
git add .
git checkout 暂存区要撤销的文件名称
# 提交暂存区文件
git commit -m '注释'


# 版本穿梭
# 查看提交记录
git log
git reflog
# 版本穿梭
#      直接使用穿梭后的版本文件
git reset --hard 提交版本id
#      使用穿梭后的版本文件+ 穿梭前的修改
git reset --soft 提交版本id


# 删除git管理的文件
git rm 要删除的文件
git add .
git commit -m '注释'


# 本地分支管理
# 一条时间线上的历史版本记录 就是一个分支
# 通过Head指针指向分支 分支指向一个提交id

# 查看分支信息(所有分支+分支指向的提交id)
git branch -v
# 创建分支
git branch 分支名称
# 切换分支
git checkout 分支名称
# 删除分支 
git branch -d 分支名称
# 合并分支(在当前分支中去合并另一个分支的内容)
git merge 要合并的分支名称

# 分支合并冲突解决
# 查看冲突文件信息
git status
# 编辑冲突文件(保留需要的代码,删除冲突标志) 保存
vim ...
# 重新提交

git也可以通过远程仓库协作开发管理历史版本记录

#gitlab/gitee/github都是远程仓库
#	- gitlab是一个开源项目,用来搭建局域网的远程仓库
#	- 远程仓库需要使用账号密码才可以连接访问,账号还需要有对应的权限(决定账号是否可以访问远程仓库、或者推送更新到远程仓库...)

# 先在远程仓库中创建一个空仓库
# 本地创建标识(origin)连接空仓库
git remote add origin 远程仓库地址
# 查看远程仓库的标志
git remote 
# 推送本地仓库到远程仓库(远程分支不存在会自动创建)  需要使用账号连接
git push origin 本地分支:远程分支
# 拉取远程仓库最新的代码到本地
git pull origin 远程分支名称




# git工作流程(进入公司工作)
# 1、克隆远程仓库    需要使用账号连接
git clone 远程仓库地址
# 2、开发(写代码) 可能要切换分支
# 3、提交到本地仓库
git add .
git commit -m '备注'
# 4、推送自己的代码(涉及到远程仓库版本的修改:慎重)
git push origin  自己的分支:远程分支名称

# 协作冲突
# 解决三板斧
# 1、先拉取最新版本
git pull origin 分支
# 2、手动解决冲突
# 3、在提交推送到远程仓库
git add .
git commit -m 'xx'
git push origin 本地分支:远程分支

git常见问题:

你们公司开发中使用了哪些分支,某一个分支你们用来干什么?
master:生产分支
release:预发布分支
devlope: 开发分支(以后开发都是基于此分支进行)
	- feature:功能分支(某个程序员开发独立功能使用的分支)
hotfix:bug修复分支
什么是PR: pull request
	- 推送到远程仓库的分支,申请合并

2、docker

虚拟机
	测试:
	- mysql等中间件安装多个比较繁琐
	- 一个虚拟机只能装一个操作系统(一个系统中启动的服务不能重复、监听的端口号都是唯一的)
	生产中:
	- 快速水平扩展(mysql读写压力过大,同时启动多个分摊访问压力)	
		如果通过服务器 安装多个虚拟机的方式 安装多个中间件解决,每个虚拟机都是一个完整的设备,占内存磁盘空间较大
虚拟化容器技术:
	在一台服务器中安装一个工具(软件):
		- 工具可以创建多个进程,每个进程按照我们需要的最小环境准备部署需要的中间件或者程序

2.0 镜像加速器配置

docker hub远程仓库服务器在国外 下载速度较慢

为了提高下载速度 可以使用国内的镜像服务器(网易、阿里云)


2.1 docker概念

docker镜像仓库
	- 存放的镜像文件的仓库
	- docker镜像仓库地址:https://hub-stage.docker.com/
docker镜像: 类似于类
	- 特殊的文件:包含了一个镜像创建容器运行时的文件
	- docker可以基于镜像文件创建容器
docker容器: 类似于对象
	- 使用镜像文件运行后的进程
	- 每个容器对应一个docker的进程
	- 每个容器对应自己独立的一个环境,容器间互相独立隔离、和操作系统也是隔离的
	- 每个容器有自己的一套环境和自己的任务
docker用来虚拟化一个个的容器,每个容器是一个独立的环境可以运行程序	

2.2 镜像命令

搜索镜像:
	docker search 镜像名称
	docker search redis
下载镜像:
	docker pull 镜像名称[:tag]
	docker pull redis
	docker pull redis:6.2.14
查询镜像:
	docker images
	docker images -q   :只查询所有镜像id
	
删除镜像:
	docker rmi  镜像名称[:tag]   删除指定版本的镜像
	docker rmi  $(docker images -q) 查询所有镜像的id 全部删除

2.3 容器命令

2.3.1 创建容器

执行时会新创建容器

# 查看运行中的容器
docker ps
# 查看所有容器
docker ps -a
# 创建容器: 如果镜像不存在会自动下载   默认前台阻塞运行
docker run redis:7

# 1、创建守护式容器: 以守护的方式运行
#  -d  :守护启动容器
docker run -d redis:7
# --name: 配置容器名称(必须唯一)
docker run -d --name 'ertao' redis:7
# 2、创建交互式容器: 容器创建后自动进入到容器内部
#  -it :交互启动并打开指定终端       
docker run -it --name 'santao' redis:7  /bin/bash
# 进入容器内部:支持基础的linux命令
#  退出并关闭容器:输入exit+回车
#  退出不关闭容器: ctrl键+p键+q键

# 3、重新进入容器内部
# 重新进入容器 并使用容器内默认的终端(ctrl+c结束时会导致容器关闭)
docker attach ertao
# 重新进入容器并创建新的终端:
#  -it :交互方式进入容器    exit退出时,容器不会被关闭
docker exec -it  容器名称/id  /bin/bash

2.3.2 容器启动停止暂停恢复删除

#在已创建的容器的基础上进行的操作
docker start 容器id/容器名称
docker stop 容器id/容器名称
docker restart 容器id/容器名称
docker pause 容器id/容器名称
docker unpause 容器id/容器名称
docker kill 容器id/容器名称

# 查看正在运行中的容器
docker ps 
# 查看所有容器
docker ps -a
# 删除容器
docker rm 容器名称/id
# 删除未运行的所有容器
docker rm $(docker ps -qa)
# -f强制删除
docker rm -f 容器名称/id

2.3.3 容器端口配置

docker run -d  -p 6379:6379  -p 6380:6379 redis:7

容器日志查看:以后用来排查容器启动失败/请求处理失败的错误日志

# -f 跟随查看
# -n 查看最后的多少行
docker logs -f -n5 myredis1

查看容器详情信息:

docker inspect 容器名称/id

容器拷贝文件

2.3.4 容器目录挂载

为了保证容器内的数据安全,容器可以将自己内部的某些文件挂载到服务器(虚拟机)磁盘上,就算容器被误删除了,数据仍然存在不会丢失
但是,仍然有概率丢失,所以以后一般不会使用docker部署mysql

数据卷管理: volume命令基本不用

#数据卷:为docker容器准备的目录,存放docker容器产生的数据或者配置
# 查看所有的已创建的数据卷
docker volume ls
# 创建数据卷:暂时没有用(没有容器绑定)
docker volume create myredis2-data
# 查看数据卷详情:
docker volume inspect myredis2-data
# 删除指定数据卷
docker volume rm myredis2-data
# 删除未使用数据卷
docker volume prune
数据卷挂载:相对路径挂载数据卷
	- docker自动创建目录挂载
	- 不同的容器内部的程序产生的数据持久化的目录不同,所以挂载时容器内的目录不一定是什么
	- -v 用来挂载目录:相对路径表示由docker来在磁盘上创建目录和容器内的指定目录挂载
	-   -v  服务器内目录:容器内目录
	docker run -d --name myredis2 -p 7379:6379 -v myredis2-data:/data redis:7
目录挂载:绝对路径目录
	- 需要我们手动创建目录 然后配置挂载
	- 我们先创建 /myredis2-data 目录, 使用该目录挂载容器内的 data目录
	docker run -d --name myredis2 -p 7379:6379 -v /myredis2-data:/data redis:7
	
在容器挂载的目录中添加文件会不会挂载到容器内部?
	在本地目录中新增的文件或者对文件进行的修改 也会上传到容器的内部

docker创建redis容器 挂载配置文件和 数据文件目录

# 创建自定义目录
mkdir /myredis4
# 进入自定义目录
cd /myredis4/
# 创建存放redis配置文件的目录
mkdir ./conf
# 创建挂载redis持久化数据文件的目录
mkdir ./data
# 创建redis配置文件
vim /myredis4/conf/redis.conf  
protected-mode no
daemonize no
databases 16
port 6380
dir /data/

# 创建redis容器: 配置端口号映射、指定目录和配置文件挂载
#  redis-server /etc/redis/redis.conf 指的是容器创建后再容器内执行redis启动命令并使用我们挂载到容器内的配置文件
docker run -p 7381:6380 --name myredis4 -v /myredis4/conf/redis.conf:/etc/redis/redis.conf  -v /myredis4/data:/data -d redis:7 redis-server /etc/redis/redis.conf

2.3.5 容器文件复制

# 将虚拟机opt/a目录下的 文件复制到容器内的 /opt目录下
docker cp  /opt/a/pangju.txt myredis4:/opt/
# 将容器内的文件下载到虚拟机当前目录下
docker cp myredis4:/opt/pangju.txt ./

exec: 可以重新进入容器内,也可以再容器外 让容器执行命令打印结果

docker exec -it  myredis4  cat /etc/redis/redis.conf
docker exec -it  myredis4  ll /etc

2.3.6 迁移备份

docker支持将运行中的容器创建为镜像,将镜像打为tar包,也支持将镜像的tar包加载还原为镜像文件使用

# 将容器保存为镜像
docker commit 容器名称/id  自定义镜像名称:自定义版本号
# 镜像打包为tar我呢间
docker save -o 压缩包路径+名称   镜像名称:版本号
# 要恢复镜像的服务器 拿到压缩包以后
# 还原压缩包为镜像文件
docker load -i 压缩包路径+名称
# 使用镜像创建容器运行

===========================================================

3、自定义镜像-dockerfile

dockerfile 可以按照dockerfile语法定义一个文件,按照文件的配置准备好需要的其他文件,docker可以自动根据他们创建一个镜像文件使用

下面的内容:了解 按照课件过一遍

4、docker图形化工具

可以管理镜像和容器

你可能感兴趣的:(docker,git,git,docker,容器)