Docker学习
一、出现的原因
在代码写好了之后,交给运维可是其他的电脑却无法正常工作,有环境和配置的差异,Docker的出现就可以将环境配置打包发给运维,阻止出现代码换环境就不能运行的情况。实现一次封装,到处运行的理念。缩小版,精简版的的Linux虚拟机环境。
二、作用
1、比linux的步骤少、 冗余少‘
2、容器虚拟化的技术,装相关的代码环境和技术;
3、减少运维的操作难度;
三、镜像\容器
举例:
1)王者所有铭文(仓库)->配置一套铭文(镜像)->使用的英雄(容器)
2)Person p1 =new Person()
Person p2 =new Person()
Person p3 =new Person()
实例化的时候,p1,p2,p3就相当于三个容器, Person类就相当于一个镜像。
镜像(image):一系列打包环境与配置的组成,实实在在保存在硬盘里的文件
容器(docker):使用镜像创建容器实例,一个容器运行服务的时候,就需要通过docker客户端创建一个对应的运行实例,也就是我们的容器。(镜像运行起来的样子),可以将容器看成简易版的Linux环境,每个容器都是隔离的,一个容器运行一个服务(装APP的地方)。
仓库:保存镜像的地方,仓库注册服务器很多仓库,一个仓库很多镜像,一个镜像可以创造实例很多的容器
四、docker和虚拟机的区别
虚拟机在中间的配置有一个Hypervisor层,可以装相关的系统,在此基础上进行app和软件的安装,但是在docker中,没有相关系统的支撑,直接通过相关的内核与app交互,启动app的时候不需要虚拟的操作系统启动,容器是秒级,虚拟机是分钟级
五、Docker操作
、Docker启动/关闭相关命令
systemctl start docker //Docker启动命令
systemctl status docker //Docker状态命令
docker info //查询Docker对应的信息
docker --help //查询docker相应的操作文档
systemctl enable docker //设置开机后重启
service docker restart //重启docker服务
六、镜像相关命令
docker images //查看镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
仓库源 标签 镜像id 创建时间 大小
docker search 镜像名字 //搜索镜像
docker pull 镜像名字 //拉取镜像
(分层下载), 后面可以【:tag】加上版本号,不然是最新的版本
eg:docker pull centos:7 //拉取centos7版本的镜像信息
docker rmi 镜像ID //根据镜像ID来删除镜像
docker rmi `docker image -q` //删除所有的镜像
docker commit -m="描述信息" -a="作者" 容器id 目标镜像名字, [tag]
七、容器相关的命令
docker ps #查看正在运行的容器 -a显示容器(不管是运行还是不运行的容器)
docker run #创建容器命令 -i 表示运行容器 -t表示容器启动并且进入命令
#--name 为创建的容器命名
#-v 表示目录的映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上
#-d 创建一个守护式的容器在后台运行,这样创建后不会自动登录容器
#-p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口,可以使用多个-p做多个端口映射 8080:8080
#-e, --env list 设置env
docker stop ID停止容器
docker start id
docker kill id
docker restart
docker rm -f id 删除容器
docker top 容器id 查看容器中进程信息;
docker inspect 容器id 查看容器的详细信息
docker attach 容器id 进入容器容器进行一些操作
docker exec -it 容器id 类似上面,打开新的终端
docker cp 容器id:path 本机路径(将docker中的文件拷贝到主机)
提交镜像
docker commit -m="提交信息" -a="作者" 容器id 目标镜像名
发布镜像到docker
docker login
docker push
八、容器数据卷
具名下载和匿名挂载,可以在-v不指定名字
docker volume 查看卷信息
容器继承
十、Dockerfile
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像,例子:比如拉取一个centos镜像(基础镜像),在此基础上安装jdk,go等相关环境重新生成的镜像(可以使用镜像创建容器,然后在容器中安装相关环境,然后将容器生成镜像,但是比较麻烦,所以使用相关的脚本来进行安装)。
发布镜像
docker login
docker push
如果看文这篇文章对自己有所帮助,请点赞支持,谢谢