目录
1、 什么是Docker
2、安装Docker
CtenOS7:
win
ubuntu
3、Docker架构
4、配置Docker镜像加速器
5、Docker服务相关命令
6、Docker 镜像相关的命令
7、Docker 容器相关命令(重要)
8、Docker容器的数据卷(共享文件夹)
8.1 思考
8.2 数据卷
8.2.1 配置数据卷
8.2.2 数据卷容器
9、Docker应用部署
9.1 Mysql 部署
需求
实现步骤
注意:
1、搜索Mysql 镜像
2、拉起Mysql镜像
3、创建容器 包含内容有mysql:5.6
4、查看docker容器中是否存在mysql
9.2 Tomcat 部署
需求:
实现步骤
9.3 Nginx 部署
需求:
实现步骤:
9.4 Redis 部署
需求:
实现步骤:
10、DockerFile
docker 镜像原理
操作系统组成部分:
制作镜像(重点)
1、容器转为镜像
2、dockerfile
3、定义dockerfile 发布springboot项目
3、自定义ubuntu镜像
11、Docker 服务编排
1、服务编排概念
2、Docker Compose概述
2.1 安装 Docker Compose
2.2 卸载docker Compose
2.3 使用dockercompose 编排nginx+springboot 项目
12、Docker 私有仓库
1、搭建私有仓库
编辑
2、上传镜像到私有仓库
3、从私有仓库拉取镜像
13、Docker 相关概念
docker容器虚拟化与传统虚拟机比较
- Docker是一个开源的应用容器引擎;
- 诞生于2013年初,基于Go语言实现,doCloud公司出品(改名为Docker Inc);
- Docker可以让开者打包他们的运用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上。
- 容器时完全使用沙箱机制,相互隔离;
- 容器性能开销极低。
- Docker从17.03版本之后分为CE(CommunityEdition:社区版(免费))和EE(Enterprise Edition:企业版(收费))
小结:docker是一种容器技术,解决软件跨环境迁移问题
Docker可以运行在MAC,Windows,CtenOS,UBUNTU等操作系统上。官网
Docker: Accelerated, Containerized Application Development
安装完成即可看到版本就安装成功
当下载失败就继续执行
下载路径:Index of win/static/stable/x86_64/
1、安装docker:sudo apt-get install -y docker.io
2、启动docker服务:systemctl start docker
3、设置开机启动:systemctl enable docker
4、查看docker状态:systemctl status docker
5、停止docker服务:systemctl stop docker
6、查看docker版本:docker version
- 镜像(image):Docker镜像,就相当于是一个root文件系统。比如官方镜像Ubuntu:16.04就包含了完整的一套Ubuntu16.04最小系统的root文件系统。
- 容器(Container):镜像和容器的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义吗,容器时镜像运行时实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可以看成一个代码控制中心,用来保存镜像。
默认情况下,将来熊docker hub(https://hub.docker.com/)上下载docker镜像,太慢。一般都会配置镜像加速器。
- USTC:中科大镜像加速器(https://docker.mirrors.ustc.edu.cn)需要到相应的配置文件中更改其配置
- 阿里云:(登陆阿里云,会生成一个自己独有的加速器地址,直接黏贴即可)
- 腾讯云: 与阿里云类似
- 网易云: 与阿里云类似
配置:
将其命令中的代码都复制过来直接执行即可;
如果使用的是中科大镜像加速镜像那么就将daemon.json 中的
替换一下即可;
- 启动docker服务:
- 停止docker服务:
- 重启docker服务:
- 查看docker服务状态:
- 开机启动docker服务:
- 查看镜像:
- 搜索镜像:
- 拉起镜像:(下载)
- 删除镜像:
-
通过docker 下载软件可以去官网查看,默认下载是最新版本
Docker Hub
版本信息
在下载时需要软件名和版本号之间用 : 隔开
docker pull redis:5.0
official 下 [OK] 表示是官方版本
- 查看容器:
- 创建容器:
表示已经进入了 容器;
- 启动容器:
- 停止容器:
- 删除容器:
- 查看容器信息:
- 退出容器
- 进入容器:
查看docker容器配置文件:
- Docker 容器删除后,在容器中产生的数据还在吗?
- Docker 容器和外部及其可以直接交换文件吗?
- 容器之间相互进行数据交互?
1、外部及其与容器之间是不互通的,但是外部及其与宿主机器互通
2、容器之间交换数据
- 数据卷是宿主机中的一个目录或文件
- 当容器目录和数据卷目录绑定后,对方的修改会立即同步
- 一个数据卷可以被多个容器同时挂载
- 一个容器也可以被挂在多个数据卷
作用:
- 容器数据持久化
- 外部及其和容器间接通信
- 容器之间数据交换
8.2.1 配置数据卷
创建启动容器时,使用 -v 参数设置数据卷
docker run .. -v 宿主机目录(文件): 容器内目录(文件)
注意事项:
- 目录必须是绝对路劲
- 如果目录不存在,会自动创建
- 可以挂在多个数据卷
8.2.2 数据卷容器
所容器进行数据交换:
1、多个容器挂在同一个数据卷
2、数据卷容器
配置数据卷容器
1、创建启动c3 数据卷容器,使用 -v 参数设置数据卷
2、创建启动 c1 c2 容器,使用 --volumes-form 参数 设置数据卷
3、将创建完成的容器绑定到数据卷中
数据卷:
1、数据卷概念:
宿主机的一个目录或文件
2、数据卷作用
容器数据持久化
客户端和容器数据交换
容器间数据交换
3、数据卷容器
创建一个容器,挂在一个木兰路,让其他容器继承自该容器(--volume-from)
通过简单方式实现数据卷配置
需求
在docker容器中部署Mysql,并通过外部的Mysql客户端操作Mysql数据库
实现步骤
- 搜索Mysql镜像
- 拉起mysql镜像
- 创建容器
- 操作容器中的Mysql
注意:
- 容器内的网络服务和外部机器不能直接通信
- 外部机器和宿主机可以直接通信
- 宿主机和容器可以直接通信
- 当容器中的网络服务需要被外部机器访问时,可以将容器中提供服务的端口映射到宿主机的端口上。外部术器访问宿主机的该端口,从而间接访问容器的服务。
- 这种操作称为:端口映射
1、搜索Mysql 镜像
2、拉起Mysql镜像
3、创建容器 包含内容有mysql:5.6
参数说明
-p 3307:3306 :将容器 3306端口映射到宿主机的 3307端口
-v $PWD/config:/etc/mysql/conf.d:将主机当前目录下的 config/mysql.conf 挂载到容器的/etc/mysql/my.conf。配置目录
-v $PWD/logs:/logs :将主机当前目录下的logs目录挂载到容器的/logs。的日志目录
-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂在到容器的:/var/lib/mysql 。数据目录
-e MYSQL_ROOT_PASSWORD= :mysql 初始化root用户密码
4、查看docker容器中是否存在mysql
第一步:就去容器
第二步:链接mysql
mysql -uroot -p
第三部:测试外部链接mysql
容器和宿主机之间的端口映射是:3306-->3307
需求:
在docker容器中部署tomcat,通过外部机器访问Tomcat部署项目。
实现步骤
1)搜索Tomcat镜像
2)拉取Tomcat镜像
3)创建容器
参数说明:
-p 8080:8080:将日期的8080端口映射到主机的8080 端口
-v $PWD:/user/local/tomcat/webapps:将主机中当前目录挂在到容器的webapps
进入c_tomcat:
4)部署项目
在 tomcat 目录下穿件一个index.html 文件在里面写入内容即可查看
5)测试访问
http://127.0.0.1:8080/index.html
需求:
在docker 容器中部署Nginx,并通过外部及其访问Nginx;
实现步骤:
1)搜索Nginx镜像
2)拉取Nginx镜像
3)创建容器
参数说明:
-p 81:80:将容器的80 单口映射到主机的81端口
-v $PWD/conf/nginx.conf/etc/nginx/nginx.conf:将主机当前目录下的/conf/nginx.conf挂在到容器的:/etc/ngingx/nginx.conf。配置目录
-v $PWD/logs:/var/log/nginx:将主机当前目录下的logs目录挂在到容器的/var/log/nginx。日志目录
4)测试访问
在nginx目录下的html目录下创建index.html文件
需求:
在docker容器中部署Redis,并通过外部及其访问Redis
实现步骤:
1)搜索redis镜像
2)拉取redis镜像
3)创建容器
参数说明:
6380:6379:将容器内6379映射到外部机器的6380
4)访问容器
docker镜像本质是什么?
docker操作系统的ISO镜像为什么只有200MB,而一个centos操作系统ios 文件需要几个G?
docker中一个tomcat镜像为什么有500MB,而一个tomcat安装包只有70MB?
操作系统组成部分:
- 进程调度子系统
- 进程通信子系统
- 内存管理子系统
- 设备管理子系统
- 网络通信子系统
- 网络通信子系统
- 作业控制子系统
linux 文件系统由bootfs 和rootfs两部分组成
bootfs:包含bootloaber(引导加载程序)和kernel(内核)
rootfs:root 文件系统,包含的就是典型Linux系统中的/div,/proc,/bin,/etc等表中目录和文件
不同的linux发行版,bootfs基本一样,二rootfs不同,如ubuntu,contos等
docker镜像是由特殊的文件系统叠加而成
最底端是bootfs,并使用宿主机的bootfs
第二层是root文件系统rootfs,称为base image
然后再往上可以叠加其他的镜像文件
统—文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。
一个镜像可以放在另一个镜像的上面。位于下面的镜像称为父镜像,最底部的镜像成为基础镜像。
当从一个镜像启动容器时,Docker会在最顶层加载一个读写文件系统作为容器
docker镜像的本质是什么?
是一个分层的文件系统
docker操作系统的ISO镜像为什么只有200MB,而一个centos操作系统ios 文件需要几个G?
Contos的ISO文件包含bootfs和rootfs,而docker的contos 镜像复用操作系统boofts,只有rootfs和其他镜像层
docker中一个tomcat镜像为什么有500MB,而一个tomcat安装包只有70MB?
由于docker中镜像是分层的,tomcat虽然只有70MB,但他需要依赖于父镜像和基础镜像,所有整体个对外暴露的tomcat镜像大小500多MB
docker如何制作?
1、容器转为镜像
docker commit 容器id 镜像名称:版本号
docker save -o 压缩文件名称 镜像名称:版本号
docker load -i 压缩文件名称
2、dockerfile
Dockerfile概念
- dockerfile是一个文本文件
- 包含了一条条的指令
- 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
- 对于开发人员:可以为开发团队提供一个完全一直的开发环境
- 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了
- 对于运维人员:在部署时,可以实现应用的无缝移植
Docker网址:https://hub.docker.com/
3、定义dockerfile 发布springboot项目
将springboot项目打包
找到jar包
实现步骤:
下载java:8
1、定义父镜像:FROM java8
2、定义作者:MAINTAINER itheima<>
3、将jar包添加到容器:ADD springboot.jar app.jar
4、定义容器启动执行的命令:CMD java -jar app.jar
5、通过dockerfile构造镜像:docker bulid -f dockerfile 文件镜像名称:版本
构建完成
启动 应用
启动成功,访问
java接口
3、自定义ubuntu镜像
需求:
自定义ubuntu镜像。要求
1、默认登陆路径为/usr
2、可以使用vim
实现步骤:
1、定义父镜像:FROM ubuntu:版本号
2、定义作者信息: maintainer xidida<xidida@@.com>
3、执行安装vim命令:RUN apt update, apt install -y vim
4、定义容器启动执行的命令:CMD /bin/bash
工具镜像创建容器:
微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大。
- 要从Dockerfile build image或者去dockerhub拉取image
- 要创建多个container
- 要管理这些container (启动停止删除)
服务编排:按照一定的业务规则批量管理容器
Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止。使用步骤:
- 利用Dockerfile定义运行环境镜像
- 使用docker-compose.yml定义组成应用的各服务
- 运行docker-composeup启动应用
2.1 安装 Docker Compose
Releases · docker/compose · GitHub
2.2 卸载docker Compose
2.3 使用dockercompose 编排nginx+springboot 项目
1、创建docker-compose目录
2、编写docker-compose.yml 文件
3、创建https://blog.csdn.net/weixin_/article/details/nginx/conf.d目录
4、在https://blog.csdn.net/weixin_/article/details/nginx/conf.d目录下编写 xidida.conf 文件
Docker官方的Dockerhub (https://hub.docker.com)是一个用于管理公共镜像的仓库,我们可以上面拉取镜像到本地,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么我们就需要搭建自己的私有仓库来存储和管理自己的镜像。
http://192.168.183.138:5000/v2/_catalog
在打完标记后删除最好按照名字删除,如果使用id 删除则会两个都删除
上传完成可以查看:
容器就是将软件打包成标准化单元,以用于开发、交付和部署。
- 容器镜像是轻量的、可执行的独立软件包,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。
- 容器化软件在任何环境中都能够始终如一地运行。
- 容器赋予了软件独立性,使其免受外在环境差异的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。
相同:
- 容器和虚拟机具有相似的资源隔离和分配优势
不同:
- 容器虚拟化的是操作系统,虚拟机虚拟化的是硬件。
- 传统虚拟机可以运行不同的操作系统,容器只能运行同一类型操作系统
到此这篇docker版本(docker版本号)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/28757.html