Docker

Docker

一、Docker

1、docker是什么
docker是一个工具,是一款软件
2、docker可以干什么
可以用它来安装软件|应用、安装mysql\redis\nginx... ,甚至可以用来部署项目。
3、为什么用来docker来安装软件
1、docker是使用沙箱机制来解决软件|应用之间互相干扰问题。
2、docker把软件|应用使用的系统函数库和用到的依赖,一起打包,做成一个镜像。
3、这些做出来的镜像,完美的匹配操作系统,因为他把用到的系统函数也一起打包了。
	3.1 MySQL安装程序+Linux的函数库+用到的其他依赖 ==> 镜像文件
		这些镜像文件都放在docker的仓库里
	3.2 只要在你的Linux系统里面,使用docker来拉取这个镜像即可。自己安装即可。
4、可以用docker来部署项目|应用
	4.1 自定义自己的镜像,把项目、依赖、系统函数打包成镜像。
	4.2 部署集群就很方便

二、Docker和虚拟机的差异

1、docker是一个系统进程;docker体积小,启动速度快、性能好。
2、虚拟机是在操作系统中的操作系统;虚拟机体积大、启动速度慢、性能一般。

三、Docker中名称的简介

1、镜像(Image)
	Docker将应用程序机器所需要的依赖、函数库、环境、配置等文件打包在其一起,称为镜像。
2、容器(Container)
	镜像中的应用程序运行后形成的进程就是容器。
	只是Docker会给容器做隔离,对外不可见。
3、DockerHub
	  DockerHub是一个Docker镜像的托管平台(类似的有阿里云镜像服务)。也被称为Docker Registry,
其实就是一个镜像仓库。
4、Docker架构
1. Docker是一个CS架构的程序。
1.1 服务端(server)Docker守护进程,负责处理Docker指令、管理镜像、容器等。
1.2 客户端(client):通过命令或RestAPIDocker服务端发送指令,可以在本地或远程向服务端发送。

在这里插入图片描述

四、Docker基本操作

1、镜像操作

在这里插入图片描述

1、语法
1、镜像名称一般分为两部分组成--> [repository]:[tag] --> 列如mysql:5.7
2、在没指定tag时,默认latest,代表最新版本的镜像。
2、拉取镜像
docker pull redis或redis:2.7.9
3、查看镜像
docker images
4、把镜像打成一个包
docker save -o xxx.tar xxx
xxx --> 镜像名称
5、删除镜像
docker rmi xxx或镜像id 
强制删除
docker rmi -f xxx
6、将镜像压缩包还原给镜像(将压缩包导入成镜像)
docker load -i xxx.tar
2、容器基本操作
1、语法
1、docker run --> 创建并运行一个容器
2--name --> 给容器起名字
3-p :  --> 将主机端口与容器端口映射,冒号左侧是主机端口,右侧是容器端口
4-d 后台运行容器
5、nginx: 镜像名称
2、创建一个容器
docker run --name mynginx -p 880:80 -d nginx
3、查看所有运行的容器以及状态
docker ps -a 
-a --> 查看所有运行
4、停止运行容器
docker stop mynginx
5、启动容器
docker start mynginx
6、暂停容器
docker pause mynginx
7、停止暂停容器
docker unpause mynginx
8、查看容器日志信息
docker logs mynginx
docker logs -f mynginx --> -f 实时查看日志信息
9、进入容器内部

在这里插入图片描述

1、语法
1、docker exec --> 进入容器内部
2-it --> 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
3、name --> 要进入容器的名称
4、bash --> 进入容器后执行的命令,bash是一个Linux终端交互命令
9.1 进入容器
docker exec -it mynginx bash
9.2 进入nginx的HTML所在目录
 cd /usr/share/nginx/html/
9.3 修改idex.html的内容
sed -i 's#Welcome to nginx# hellow world#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html
10、删除容器
docker rm mynginx
docker rm -f mynginx --> -f强制删除
11、数据持久化
持久化
1、RBD --> 每满多少时间,有多少个key发生变化,开始持久化。
2、AOF --> 每秒的持久化,每次操作的持久化。
docker run --name myredis -p 7379:6379 -d redis redis-server --appendonly yes
3、数据卷(容器数据管理)
1、解决容器与数据耦合的问题
2、数据卷(volume) 是一个虚拟的目录,指向主机文件系统中的某个目录。
3、数据卷的作用
	将容器与数据分离、解耦合,方便操作容器内的数据,保证数据安全。
 容器与数据耦合的问题
1. 不便于修改: 当我们要修改Nginx的HTML内部时,需要进入容器内部修改,很不方便。
2. 数据不可复用: 在容器内的修改对外是不可见的,所有修改对新建的容器是不可服用的。
3. 升级维护困难: 数据在容器内,如果要升级容器必然要删除旧容器,所有的数据都要跟着删除。

数据挂载与目录直接挂载

数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找。
目录挂载耦合度高,需要我们自己管理目录,目录容易查找。
1、数据卷操作基本语法
1、docker volume --> 命令是数据卷操作。
2、create --> 创建一个volume
3、inspect --> 显示一个或多个volume的信息
4、ls  --> 列出所有的volume
5、prune --> 删除未使用的volume
6、rm --> 删除一个或多个指定的volume
2、创建数据卷
docker volume create html
3、查看所有数据卷
docker volume ls
4、查看数据卷详细信息
docker volume inspect html
5、删除数据卷
docker volume rm aa
6、删除所有未使用的数据卷
docker volume prune
4、数据卷–挂载数据卷
1、挂载数据卷
数据卷的挂载或映射,只能在创建容器的时候设置。
1、docker run --> 创建并运行容器
2-- name mn --> 给容器起一个名字叫mn
3-v html:/root/html --> 把html数据卷挂载到容器内的/root/html之个目录中
4-p 8080:80 --> 把主机的8080端口映射到容器内的80端口
5、nginx --> 镜像名称
docker run --name mynginx -v html:/usr/share/nginx/html -p 9090:80 -d nginx 
2、目录直接挂载

1、语法

1-v [主机目录]:[容器目录]
2-v [主机文件]:[容器内文件]

1、将xxx.tar弄成镜像

docker load -i xxx.tar

2、创建映射容器

docker run --name mymysql -p 23306:3306 \
-v /tmp/mysql/data:/var/lib/mysql \
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7.25

3、测试

mysql -h 192.168.211.128 -P 23306 -u root -p

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值