Docker快速入门

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.icon-default.png?t=N7T8https://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小时售后支持,助企业无忧上云。icon-default.png?t=N7T8https://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环境
  • 编译和配置环境
  • 安装 

步骤一:先检测系统是否自带安装mysql:yum 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 TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \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/icon-default.png?t=N7T8https://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 3306:3306:设置端口映射

  • 容器是隔离环境,外界不可访问(容器它也有自己的IP地址),但是可以将宿主机(容器所在的机器称为宿主机)端口映射到容器内的端口当访问宿主机指定端口时,就是在访问容器内的端口了。
  • 容器内端口往往是由容器内的进程决定,例如MySQL进程默认端口是3306,因此容器内的端口一定是3306而宿主机端口则可以任意指定,一般与容器内保持一致。
  • 格式:-p 宿主机端口:容器内端口,示例中就是将宿主机的3306端口映射到容器内的3306端口 

  • MySQL客户端直连容器的端口会被拒绝访问! 

docker  inspect   容器名称:该命令将返回JSON格式的容器的详细信息,例如容器的ID、名称、状态、IP地址等。

​​​-e TZ=Asia/Shanghai

-e MYSQL_ROOT_PASSWORD=123

  • 格式:-e KEY=VALUE,是设置环境变量,配置容器内进程运行时的一些参数KEY和VALUE都由容器内进程决定
  • 案例中,TZ=Asia/Shanghai是设置时区;MYSQL_ROOT_PASSWORD=123是设置MySQL默认密码

mysql:设置镜像名称 或 指定运行的镜像名称,Docker会根据这个名字搜索并下载镜像

  • 镜像的名称不是随意的,而是要到DockerRegistry中寻找镜像运行时的配置也不是随意的,要参考镜像的帮助文档,这些在DockerHub网站或者软件的官方网站中都能找到。
  • 镜像名称结构的格式:REPOSITORY:TAG,例如mysql:8.0,其中REPOSITORY可以理解为镜像名,TAG是镜像的版本号
  • 在未指定TAG版本号的情况下,默认是latest,代表最新版本的镜像,也就是mysql:latest

docker  ps是一个Docker命令,用于列出正在运行的Docker容器的信息:

  • CONTAINER ID(容器ID):每个容器都有唯一的ID。
  • IMAGE(镜像):容器所使用的镜像
  • COMMAND(命令):容器启动时执行的命令
  • CREATED(创建时间):容器的创建时间
  • STATUS(状态):容器的运行状态 
  • PORTS(端口映射):容器内部服务与宿主机之间的端口映射关系

如果需要显示所有容器(包括已经停止的容器),可以使用docker ps -a命令!

  • Nginx容器的默认端口是80端口! 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/168474.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Learn runqlat in 5 minutes

内容预告 learn X in 5 系列第一篇. 本篇主要介绍进程时延统计方式和 rawtracepoint. runqlat "高负载场景下应用为何卡顿", "进程 A 为什么得不到调度". 当我们在工作生活中产生这样的疑问, 目标进程的调度时延是一个不错的观测切入点. runqlat 可以帮…

【网络编程】网络层——IP协议

文章目录 基本概念路径选择主机和路由器 IP协议格式分片与组装网段划分IP地址的数量限制私网IP地址和公网IP地址深入认识局域网路由 基本概念 TCP作为传输层控制协议&#xff0c;其保证的是数据传输的可靠性和传输效率&#xff0c;但TCP提供的仅仅是数据传输的策略&#xff0c…

C语言 每日一题 PTA 11.7 day13

1.求e的近似值 自然常数 e 可以用级数 1 1 / 1! 1 / 2! ⋯ 1 / n! ⋯ 来近似计算。 本题要求对给定的非负整数 n&#xff0c;求该级数的前 n 1 项和。 代码实现 #include<stdio.h> void main() {int a, i, j; double b 1; double c 1;printf("请输入一个数\n…

考研数据结构单链表的增删改查看这一篇就够了

目录 一. 单链表的特点 1.1 解引用拓展 &#x1f916; 二. 单链表的操作 2.1不带头节点的操作 2.1.1 打印 2.1.1.1 创建结点 2.1.2 尾插&#xff08;需要二级指针&#xff09; 注意形参的值不改变实参&#xff1a;&#xff08;精髓部分&#xff09; 2.1.3 头插 2.1.4…

苹果手机安装未上架APP应用测试教程

STEP 2&#xff1a;找到下载的描述文件&#xff08;如果没有找到&#xff0c;请到 设置 - 通用 - 描述文件 中查看&#xff09; STEP 3&#xff1a;安装描述文件 STEP 4&#xff1a;输入解锁密码安装描述文件 STEP 5&#xff1a;同意免责声明&#xff0c;安装描述文件 STEP 6…

单词规律问题

给定一种规律 pattern 和一个字符串 s &#xff0c;判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配&#xff0c;例如&#xff0c; pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。 示例1: 输入: pattern “abba”, s “dog cat cat d…

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

目录 1解题思路&#xff1a; 2代码如下&#xff1a; 3运行结果&#xff1a; 4总结&#xff1a; 5介绍&#xff1a; 1解题思路&#xff1a; 利用循环&#xff08;穷举法&#xff09;来 对 所 需要的数 进行确定 2代码如下&#xff1a; #include <stdio.h>int main() …

[蓝桥杯复盘] 第 3 场双周赛20231111

[蓝桥杯复盘] 第 3 场双周赛20231111 总结深秋的苹果1. 题目描述2. 思路分析3. 代码实现 鲜花之海1. 题目描述2. 思路分析3. 代码实现 斐波拉契跳跃2. 思路分析3. 代码实现 星石传送阵2. 思路分析3. 代码实现 六、参考链接 总结 做了后4题。https://www.lanqiao.cn/oj-contes…

react+星火大模型,构建上下文ai问答页面(可扩展)

前言 最近写的开源项目核心功能跑通了&#xff0c;前两天突发奇想。关于项目可否介入大模型来辅助用户使用平台&#xff0c;就跑去研究了最近比较活火的国内大模型–讯飞星火大模型。 大模型api获取 控制台登录 地址&#xff1a;https://console.xfyun.cn/app/myapp 新建应…

ceph-deploy bclinux aarch64 ceph 14.2.10

ssh-copy-id&#xff0c;部署机免密登录其他三台主机 所有机器硬盘配置参考如下&#xff0c;计划采用vdb作为ceph数据盘 下载ceph-deploy pip install ceph-deploy 免密登录设置主机名 hostnamectl --static set-hostname ceph-0 .. 3 配置hosts 172.17.163.105 ceph-0 172.…

火星加载WMTS服务

这是正常的加载瓦片 http://192.168.1.23:8008/geoserver/mars3d/gwc/service/wmts?tilematrixEPSG%3A4326%3A7&layermars3d%3Abuffer&style&tilerow46&tilecol197&tilematrixsetEPSG%3A4326&formatimage%2Fpng&serviceWMTS&version1.0.0&…

商越科技:渗透测试保障平台安全,推动线上采购高效运转

商越科技是数字化采购解决方案提供商&#xff0c;在同赛道企业中始终保持前列。商越科技通过自主研发的智能采购中台、SaaS应用及运营服务等为企业搭建专属的互联网采购平台&#xff0c;帮助企业实现采购数字化以及智能化转型&#xff0c;提高工作效率、降低采购成本。 打造数字…