docker

一 docker简介

1.什么是虚拟化
	将一台计算机虚拟出多个逻辑计算机,每个逻辑计算机可运行不同的操作系统
	应用程序相互独立不受影响
2.问题:为什么会有docker出现
	一款产品从开发到测试再到上线,不同环境,不同的机器,运维人员都要去进行配置
	这对运维人员就是灾难,如何解决 所以docker出现了提出 软件可以带环境安装
3.什么是Docker
	Docker 是一个开源的应用容器引擎,基于Go语言开发(解释)
	可以让开发者打包应用及相关依赖到一个容器里面 然后发布到其他任何linux机器上
	实现 一次封装,到处运行
4.Docker应用场景
	① Web应用的自动化打包和发布
	② 自动化测试和持续集成、发布(jenkins)
	使用Docker可以实现开发人员的开发环境、测试人员的测试环境、运维人员的生产环境的一致性。
5.docker容器与虚拟机比较(画图)
	a.Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,
		而传统虚拟机则是在硬件层面实现虚拟化
	b.与传统的虚拟机相比,Docker优势体现为启动速度快、占用体积小。
	c.容器虚拟化的是操作系统,而不是硬件,因此容器更容易移植,效率也更高
6.Docker组成部分
	Docker是一个客户端-服务器(C/S)架构程序
	https://blog.csdn.net/syaziou/article/details/79329584
	a.docker客户端与服务器
		docker client向docker daemon发送请求,docker daemon完成相应的任务,并把结果返还给容器
	b.docker镜像(类)
		一个只读的模板,就跟一个操作系统镜像一个意思
	c.docker容器(对象)
		容器就是镜像的运行实例  
		镜像是创建容器的软件 , 容器是由镜像运行产生的运行实例
	d.docker仓库
		保存docker镜像的地方,就跟maven仓库一个意思
		Registry分为公共和私有两种。Docker公司运营公共的Registry叫做Docker Hub。
		用户可以在Docker Hub注册账号,分享并保存自己的镜像

二 Docker安装与启动

1.docker的安装
	a.ip地址
		ip addr
	c.安装需要的软件包
		sudo yum install -y yum-utils device-mapper-persistent-data lvm2  (centos7.6)
	d.设置yum源为阿里云
		sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
	e.安装docker
		sudo yum install docker-ce -y
	f.安装后查看docker版本
		docker -v
2.docker的启动/停止
	a.启动
		systemctl start docker
	b.停止
		systemctl status docker
		systemctl stop docker
		systemctl restart docker
	c.开机启动
		systemctl enable docker
	d.查看docker概要信息
		docker info
	e.查看docker帮助文档
		docker --help
3.docker常见命令
	a.查看镜像
		docker images
	b.搜索镜像
		 docker search nginx
	c.拉取镜像         
		docker pull 镜像名称  (不指定版本,会下载最新的版本)
	d.删除镜像	
		docker rmi 镜像ID
		删除所有镜像
		docker rmi `docker images -q`
4.容器相关命令	
	a.查看运行的容器
		docker ps					查看正在运行的容器
		docker ps -a				查看所有容器
		docker ps –l				查看最后一次运行的容器
		docker ps -f status=exited	查看停止的容器
	b.交互式方式创建容器(前台)
		docker run -it --name=mycentos centos /bin/bash
		# docker run:表示创建容器
		# -it:表示运行容器并进入它的命令行
		# --name=mycentos:给当前的容器命名
		# centos: 使用该镜像创建
		# /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
		执行之后我们可以把每个容器都看成一个小电脑或者服务器
	c.退出当前容器
		exit  
		退出之后,容器也退出了,没有删除
	d.创建后台容器(守护式方式创建容器 后台)
		docker run -id --name=mycentos2 centos
	*进入容器
		docker exec -it mycentos2  /bin/bash
		退出之后容器没有退出
	e.启动与停止容器
		docker start mycentos2
		docker stop mycentos2
	f.删除容器
		docker rm mycentos2
5.文件拷贝
	a.概念
		把操作系统里面的文件拷贝到容器当中
	b.命令
		linux操作系统到容器
			docker cp 需要拷贝的文件或目录 容器名称:容器目录
			touch a.txt 
			例如: docker cp a.txt mycentos2:/usr/
		进入到容器当中
			docker exec -it mycentos2 /bin/bash
		看容器中有哪些文件
			cd /usr/local 		ls
		容器到操作系统(需要退出容器)
			docker cp 容器名称:容器目录 需要拷贝的文件或目录
			例如: docker cp mycentos2:/usr/local/a.txt ./
6.目录挂载
	a.概念	
		将宿主机的目录与容器内的目录进行映射(共享)
	b.命令
										   宿主机目录:容器目录
		docker run -id --name=mycentos3 -v /usr/local/mydata:/usr/local/mydata centos
		进入cd /usr/local/mydata 
		touch b.txt 
		vim b.txt 编辑内容
		进入容器看看内容
			docker exec -it mycentos3 /bin/bash
			cd /usr/local/mydata 
			ls 
			cat b.txt
			exit
7.查看容器IP地址和信息
	*信息
	docker inspect mycentos3
	*ip地址
	docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos3
8.删除容器
	docker stop mycentos3
	docker rm mycentos3
	docker rmi 6f5604be75c1

三 应用部署

1.mysql部署
	a.拉取mysql镜像
		docker pull centos/mysql-57-centos7 
	b.创建容器
		#docker run -di --name=容器名字 -p 宿主机端口:容器端口 -e MYSQL_ROOT_PASSWORD=mysql密码 镜像名称
		 docker run -di --name=mysql88 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123 centos/mysql-57-centos7 
		利用docker ps 看是否映射成功
	
	下面操作不用做	
	c.docker之mysql连接 Authentication plugin 'caching_sha2_password' cannot be loaded
		1.docker exec -it mysql88 bash
		2.mysql -uroot -p 密码	
		3.ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123';
		4.FLUSH PRIVILEGES;
2.Nginx部署
	a.拉取镜像
		docker pull nginx
	b.创建Nginx容器
		gitlab-ctl
		docker run -di --name=mynginx3 -p 82:80 nginx
		docker exec -it mynginx  /bin/bash
		vi /etc/nginx/nginx.conf
3.redis部署
	a.拉取镜像
		docker pull redis
	b.创建容器
		docker run -di --name=myredis -p 6389:6379 redis
		docker exec -it myredis  /bin/bash
4.docker安装tomcat
	a.拉取镜像
		docker pull tomcat
	b.创建Nginx容器
		docker run -di --name=mytomcat -p 8090:8080 tomcat
		docker cp myweb.war mytomcat:/usr/local/tomcat/webapps/
		https://www.cnblogs.com/yds941268778/p/12748308.html

四 迁移与备份

1.容器保存为镜像
	a.命令
		docker commit myredis my_redis_image
	b.看当前系统的镜像
		docker images
	c.创建备份redis容器
		docker run -di --name=my_redis_image_instance -p 6399:6379 my_redis_image
	d.可以看到一个新的容器
		docker ps 
2.镜像备份	
	docker  save -o my_redis_image.tar my_redis_image
3.镜像恢复与迁移
	a.需要先删除原有镜像
		docker stop my_redis_image_instance
		docker rm my_redis_image_instance
		docker rmi my_redis_image
		docker load -i my_redis_image.tar
		docker images

五 Dockerfile

1.什么是Dockerfile
	之前我们都是用的别人的镜像,如果我们想自己开发一个镜像就需要用到dockerfile
	Dockerfile其实就是一个文本文件,由一系列命令和参数构成
2.操作步骤
	a.创建目录	
		mkdir –p /usr/local/software/my_docker
	b.上传jdk-8u152-linux-x64.tar.gz文件到目录/usr/local/software/my_docker
	c.创建dockerfile文件
		vim Dockerfile
		参看资料里面的文件
	d.执行命令构建镜像
		docker build -t='jdk1.8' .
	e.执行 
		docker run -it --name=myjdk jdk1.8 /bin/bash

六 Docker私有仓库
1.拉取私有仓库镜像
docker pull registry
2.启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry
3.访问地址
http://10.211.55.95:5000/v2/_catalog
4.创建并修改配置文件
vim /etc/docker/daemon.json
{
“registry-mirrors”: [“https://8y2y8njn.mirror.aliyuncs.com”],
“insecure-registries”:[“10.211.55.95:5000”]
}
5.重启docker服务
systemctl restart docker
6.标记此镜像为私有仓库的镜像
docker tag redis 10.211.55.95:5000/private_redis
7.再次启动私服容器(因为上面重启的docker服务)
docker start registry
8.上传标记的镜像
docker push 10.211.55.95:5000/private_redis
9.从私有仓库拉取镜像(在另外一台机器上拉取)
也需要配置vim /etc/docker/daemon.json 这个文件
{
“registry-mirrors”: [“https://8y2y8njn.mirror.aliyuncs.com”],
“insecure-registries”:[“10.211.55.95:5000”]
}
需要重启另外一台服务器
systemctl restart docker
docker pull 10.211.55.95:5000/private_redis
docker images

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值