iis 新建网站,给公司做网站要花多钱,跨境电商网站排行榜,灰色项目网站代做Docker是一个用来快速构建、运行和管理应用的工具。
Docker技术能够避免对服务器环境的依赖#xff0c;减少复杂的部署流程#xff0c;有了Docker以后#xff0c;可以实现一键部署#xff0c;项目的部署如丝般顺滑#xff0c;大大减少了运维工作量。
即使你对Linux不熟…Docker是一个用来快速构建、运行和管理应用的工具。
Docker技术能够避免对服务器环境的依赖减少复杂的部署流程有了Docker以后可以实现一键部署项目的部署如丝般顺滑大大减少了运维工作量。
即使你对Linux不熟悉你也能轻松部署各种常见软件、Java项目。
学习目标
能利用Docker部署常见软件能利用Docker打包并部署Java应用理解Docker数据卷的基本作用能看懂DockerCompose文件
1. 快速入门
要想让Dockert帮我们安装和部署软件首先要保证你的机器上有Docker我们可以在CentOS的虚拟机中安装Docker。
Docker安装的官方文档
Install Docker Engine on CentOS | Docker DocsLearn how to install Docker Engine on CentOS. These instructions cover the different installation methods, how to uninstall, and next steps.https://docs.docker.com/engine/install/centos/首先使用SSH客户端连接到我们的Linux虚拟机
1.1 卸载旧版
首先如果系统中已经存在旧的Docker则先卸载
yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 1.2 配置Docker的yum库
首先要安装一个yum工具
yum install -y yum-utils
安装成功后执行命令配置Docker的yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
1.3 安装Docker
最后执行命令安装Docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 验证Docker是否安装成功输入docker -v查看Docker的安装版本 docker image命令用于列出本地系统中存在的Docker镜像
在Docker中镜像是用于运行Docker容器的构建块镜像是Docker容器的基础即容器运行时所需要使用的文件系统。
Docker也是一个服务需要启动起来
1.4 启动和校验
# 启动Docker
systemctl start docker# 停止Docker
systemctl stop docker# 重启
systemctl restart docker# 设置开机自启
systemctl enable docker# 执行docker ps命令如果不报错说明安装启动成功
docker ps
输入systemctl enable docker命令让Docker开启自启
输入systemctl start docker启动Docker 1.5 配置镜像加速 这里以阿里云镜像加速为例
5.1 首先访问阿里云网站注册一个阿里云账号
阿里云-计算为了无法计算的价值阿里云——阿里巴巴集团旗下公司是全球领先的云计算及人工智能科技公司之一。提供免费试用、云服务器、云数据库、云安全、云企业应用等云计算服务以及大数据、人工智能服务、精准定制基于场景的行业解决方案。免费备案7x24小时售后支持助企业无忧上云。https://www.aliyun.com/
5.2 开通镜像服务
1. 在首页的产品中找到阿里云的容器镜像服务 5.3 点击管理控制台
5.4 找到镜像工具下的镜像加速器 具体命令如下
# 创建目录
mkdir -p /etc/docker# 复制内容注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json -EOF
{registry-mirrors: [https://xxxx.mirror.aliyuncs.com]
}
EOF# 重新加载配置
systemctl daemon-reload# 重启Docker
systemctl restart docker 2. 部署MySQL
Docker部署 VS 传统的Linux部署
回忆利用传统方式部署MySQL大概的步骤有
搜索并下载MySQL安装包上传至Linux环境编译和配置环境安装
步骤一先检测系统是否自带安装mysqlyum list installed | grep mysql
步骤二删除系统自带的MySQL及其依赖防止后面安装发生冲突
yum -y remove mysql-libs.x86_64
而我们利用Docker来安装一个MySQL软件仅仅需要一步即可
首先需要先停掉虚拟机中的MySQL确保你的虚拟机已经安装Docker且网络开通的情况下执行下面的命令即可安装Docker
\ 表示换行的意思
docker run -d \--name mysql \-p 3306:3306 \-e TZAsia/Shanghai \-e MYSQL_ROOT_PASSWORD123 \mysql MySQL安装完毕通过任意客户端工具即可连接到MySQL
大家可以发现当我们执行命令后Docker做的第一件事情是去自行搜索并下载了MySQL然后会自动运行MySQL我们完全不用插手非常方便~
而且这种安装方式你完全不用考虑运行的操作系统环境它不仅在CentOS系统是这样在Ubuntu系统、MacOS系统甚至是安装了WSL的Windows下都可以使用这条命令来安装MySQL。
要知道不同操作系统下的安装包、运行环境都是不相同的如果是手动安装必须手动解决安装包不同、环境不同、配置不同的问题。
镜像和容器
当我们利用Docker安装应用时Docker会自动搜索并下载应用镜像image镜像不仅包含应用本身还包含应用运行时所需要的环境、配置、系统函数库Docker会在运行镜像时创建一个隔离的环境称为容器Container。Docker的镜像能够做到跨平台忽略不同的操作系统之间的差异
而使用Docker这些完全不要考虑就是因为Docker会自行搜索并下载MySQL注意这里下载的不是安装包而是镜像镜像中不仅包含了MySQL本身还包含了其运行所需要的环境、配置、系统级函数库因此它在运行时就有自己独立的环境就可以跨系统运行也不需要手动再次配置环境了这套独立运行的隔离环境我们称为容器。
说明
镜像英文是image容器英文是container
因此Docker安装软件的过程就是自动搜索下载镜像然后创建并运行容器的过程·
镜像仓库
Docker会根据命令中的镜像名称自动搜索并下载镜像image那么问题来了它是去哪里搜索和下载镜像的呢这些镜像又是谁制作的呢
Docker官方提供了一个专门管理、存储镜像的网站并对外开放了镜像上传、下载的权利。 Docker官方提供了一些基础镜像然后各大软件公司又在基础镜像的基础上制作了自家软件的镜像全部都存放在这个网站这个网站就成了Docker镜像交流的社区
https://hub.docker.com/https://hub.docker.com/基本上我们常用的各种软件都能在这个网站上找到我们甚至可以自己制作镜像上传上去。
像这种提供存储、管理Docker镜像的服务器被称为DockerRegistry可以翻译为镜像仓库。
镜像仓库存储和管理镜像的平台Docker官方维护了一个公共的镜像仓库Docker Hub。
DockerHub网站是官方仓库阿里云、华为云会提供一些第三方仓库我们也可以自己搭建私有的镜像仓库。
官方仓库在国外下载速度较慢一般我们都会使用第三方仓库提供的镜像加速功能提高下载速度而企业内部的机密项目往往会采用私有镜像仓库。
总之镜像的来源有两种
基于官方基础镜像自己制作直接去DockerRegistry下载
总结
Docker本身包含一个后台服务我们可以利用Docker命令告诉Docker服务帮助我们快速部署指定的应用。Docker服务部署应用时首先要去搜索并下载应用对应的镜像然后根据镜像创建并运行容器应用就部署完成了。 Docker是做什么的 Docker可以帮助我们下载应用镜像创建并运行镜像的容器从而快速部署应用。 什么是镜像 将应用所需的函数库、依赖、配置等与应用一起打包得到的就是镜像。 什么是容器 为每个镜像的应用进程创建的隔离运行环境就是容器。 什么是镜像仓库 存储和管理镜像的服务就是镜像仓库。 DockerHub是目前最大的镜像仓库其中包含各种常见的应用镜像。 3. 命令解读
利用Docker快速的安装了MySQL非常的方便不过我们执行的命令到底是什么意思呢
所有的Docker命令都是以Docker为前缀
解读
docker run -d创建并运行一个容器容器是一个隔离环境-d则是让容器以后台进程运行
--name mysql-name给容器命名给容器起个名字叫mysql方便我们去区分不同的容器名字必须唯一当然也可以叫别的
-p 33063306设置端口映射
容器是隔离环境外界不可访问容器它也有自己的IP地址但是可以将宿主机容器所在的机器称为宿主机端口映射到容器内的端口当访问宿主机指定端口时就是在访问容器内的端口了。容器内端口往往是由容器内的进程决定例如MySQL进程默认端口是3306因此容器内的端口一定是3306而宿主机端口则可以任意指定一般与容器内保持一致。格式-p 宿主机端口容器内端口示例中就是将宿主机的3306端口映射到容器内的3306端口 MySQL客户端直连容器的端口会被拒绝访问
docker inspect 容器名称该命令将返回JSON格式的容器的详细信息例如容器的ID、名称、状态、IP地址等。 -e TZAsia/Shanghai
-e MYSQL_ROOT_PASSWORD123
格式-e KEYVALUE是设置环境变量配置容器内进程运行时的一些参数KEY和VALUE都由容器内进程决定案例中TZAsia/Shanghai是设置时区MYSQL_ROOT_PASSWORD123是设置MySQL默认密码
mysql设置镜像名称 或 指定运行的镜像名称Docker会根据这个名字搜索并下载镜像
镜像的名称不是随意的而是要到DockerRegistry中寻找镜像运行时的配置也不是随意的要参考镜像的帮助文档这些在DockerHub网站或者软件的官方网站中都能找到。镜像名称结构的格式REPOSITORYTAG例如mysql8.0其中REPOSITORY可以理解为镜像名TAG是镜像的版本号在未指定TAG版本号的情况下默认是latest代表最新版本的镜像也就是mysqllatest
docker ps是一个Docker命令用于列出正在运行的Docker容器的信息
CONTAINER ID容器ID每个容器都有唯一的ID。IMAGE镜像容器所使用的镜像COMMAND命令容器启动时执行的命令CREATED创建时间容器的创建时间STATUS状态容器的运行状态 PORTS端口映射容器内部服务与宿主机之间的端口映射关系 如果需要显示所有容器包括已经停止的容器可以使用docker ps -a命令
Nginx容器的默认端口是80端口