Docker 基础与实战指南(1)

米饭2天前行业资讯6

Docker 可以使项目的部署变得简单,大大减少了运维工作量。


即便你对 Linux 不熟悉,你也能轻松部署各种常见软件、Java项目。


linux 上安装 docker 这里就不进行讲解,我使用的 linux 是 ubuntu。如果一样的友友,可以参考下面这个视频,进行安装,或者自己网上找资料,只要能装上就行。


Ubuntu安装docker并运行测试【docker默认最新,虚拟机版本22.04】_哔哩哔哩_bilibili


一、Docker 快速入门

1.1 部署 MYSQL

首先,我们利用 Docker 来安装一个 MySQL 软件,大家可以对比一下之前传统的安装方式,看看哪个效率更高一些。


如果是利用传统方式部署 MySQL,大概的步骤有:


搜索并下载MySQL安装包

上传至Linux环境

编译和配置环境

安装

而使用 Docker 安装,仅仅需要一步即可,在命令行输入下面的命令(建议采用 CV 大法):

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql

运行效果如图:(大家安装的时候,在红色的地方可能会卡住,请耐心等待)

image-20241111100516843 MySQL 安装完毕!通过任意客户端工具即可连接到 MySQL,大家可以使用自己的 Mysql 客户端工具,进行连接,如果连接上,说明 mysql 就安装成功了。(注意:这里安装的 Mysql 的密码为:123,上面安装时指定的)。

image-20241111101125673

大家可以发现,当我们执行命令后,Docker 做的第一件事情,是去自动搜索并下载了 MySQL,然后会自动运行 MySQL,我们完全不用插手,是不是非常方便。


而且,这种安装方式你完全不用考虑运行的操作系统环境,它不仅仅在 Ubuntu 系统是这样,在 CentOS 系统、macOS 系统、甚至是装了 WSL 的 Windows 下,都可以使用这条命令来安装 MySQL。


要知道,不同操作系统下其安装包、运行环境是都不相同的!如果是手动安装,必须手动解决安装包不同、环境不同的、配置不同的问题!(已经头大了)


而使用 Docker,这些完全不用考虑。就是因为 Docker 会自动搜索并下载 MySQL。注意:这里下载的不是安装包,而是镜像。镜像中不仅包含了 MySQL 本身,还包含了其运行所需要的环境、配置、系统级函数库。因此它在运行时就有自己独立的环境,就可以跨系统运行,也不需要手动再次配置环境了。这套独立运行的隔离环境我们称为容器。


说明:


镜像:英文是image

容器:英文是container

因此,Docker安装软件的过程,就是自动搜索下载镜像,然后创建并运行容器的过程。


Docker 官方提供了一个专门管理、存储镜像的网站,并对外开放了镜像上传、下载的权利。Docker 官方提供了一些基础镜像,然后各大软件公司又在基础镜像基础上,制作了自家软件的镜像,全部都存放在这个网站。这个网站就成了 Docker 镜像交流的社区:


hub.docker.com


这个网站是在海外,访问起来会比较慢。


像这种提供存储、管理 Docker 镜像的服务器,被称为 DockerRegistry,可以翻译为镜像仓库。DockerHub 网站是官方仓库,阿里云、华为云会提供一些第三方仓库,我们也可以自己搭建私有的镜像仓库。


官方仓库在国外,下载速度较慢,一般我们都会使用第三方仓库提供的镜像加速功能,提高下载速度。而企业内部的机密项目,往往会采用私有镜像仓库。


总结:


Docker 本身包含一个后台服务,我们可以利用 Docker 命令告诉 Docker 服务,帮助我们快速部署指定的应用。Docker 服务部署应用时,首先要去搜索并下载应用对应的镜像,然后根据镜像创建并允许容器,应用就部署完成了。


用一幅图标示如下:

image-20241111103123719

1.2 命令解读:

利用 Docker 快速的安装了 MySQL,非常的方便,下面我们来学习一下上面安装 Mysql 执行的指令。

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql

解读:


最后面的 \ 是换行,我们可以将上面这些指令放在一行内执行。


docker run -d :创建并运行一个容器,-d则是让容器以后台进程运行。


--name mysql : 给容器起个名字叫mysql,可以叫别的。


-p 3306:3306 : 设置端口映射。


容器是隔离环境,外界不可访问。但是可以将宿主机端口映射到容器内的端口,当访问宿主机指定端口时,就是在访问容器内的端口了。

容器内端口往往是由容器内的进程决定,例如 MySQL 进程默认端口是 3306,因此容器内端口一定是 3306;而宿主机端口则可以任意指定,一般与容器内保持一致。

格式: -p 宿主机端口:容器内端口,示例中就是将宿主机的 3306 映射到容器内的 3306 端口。

-e TZ=Asia/Shanghai : 配置容器内进程运行时的一些参数。


格式:-e KEY=VALUE,KEY 和 VALUE 都由容器内进程决定。

案例中,TZ=Asia/Shanghai是设置时区;MYSQL_ROOT_PASSWORD=123是设置 MySQL 默认密码。

mysql : 设置镜像名称,Docker 会根据这个名字搜索并下载镜像。


格式:REPOSITORY:TAG,例如mysql:8.0,其中REPOSITORY可以理解为镜像名,TAG是版本号。

在未指定TAG的情况下,默认是最新版本,也就是mysql:latest。

镜像的名称不是随意的,而是要到 DockerRegistry 中寻找,镜像运行时的配置也不是随意的,要参考镜像的帮助文档,这些在DockerHub 网站或者软件的官方网站中都能找到。


如果我们要安装其它软件,也可以到 DockerRegistry 中寻找对应的镜像名称和版本,阅读相关配置即可。


本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!  

云掣基于多年在运维领域的丰富时间经验,编写了《云运维服务白皮书》,欢迎大家互相交流学习:

《云运维服务白皮书》下载地址:https://fs80.cn/v2kbbq

想了解更多大数据运维托管服务、数据库运维托管服务、应用系统运维托管服务的的客户,欢迎点击云掣官网沟通咨询:https://yunche.pro/?t=shequ


相关文章

微服务保护和分布式事务(1)

微服务保护和分布式事务(1)

一、微服务保护保证服务运行的健壮性,避免级联失败导致的雪崩问题,就属于微服务保护。为了方便讲解,下面的商品服务是故障方,购物车服务是故障调用方。1.1 微服务保护方案:微服务保护的方案有很多,比如:请...

【网络】NAT、代理服务、内网穿透(2)

【网络】NAT、代理服务、内网穿透(2)

2.代理服务器代理服务器(Proxy Server)的功能就是代理网络用户去取得网络信息,代理服务器又分为正向代理和反向代理。(1)正向代理正向代理,是一个位于客户端和目标服务器之间的服务器,客户端并...

IDC:疫情下,第三方云管理服务市场逆势增长!

IDC:疫情下,第三方云管理服务市场逆势增长!

IDC预测,中国第三方云管理服务在2019年到2023年间将保持54.7%的增长率,2023年市场规模预计达到32.1亿美元。2019年第三方云管理服务市场呈现出如下特点:云管理服务成为众多服务商的战...

Linux 安装Docker完整教程(六)

Linux 安装Docker完整教程(六)

背景近些年随着云原生的发展,Docker在云原生中的作用使得它也蓬勃发展起来。今天这篇文章就带大家一起实现一下在Linux操作系统下Docker的部署过程,收藏起来,以备不时之需。当然,如果对Dock...

MSP 的现场服务管理

MSP 的现场服务管理

什么是现场服务管理现场服务管理 (FSM) 是确保有效规划、安排和执行现场服务活动所遵循的做法。它涉及有效利用资源,如人员、技术和材料,以满足客户的服务期限和标准。FSM还涉及现场技术人员,服务交付经...

ubuntu下如何查看显卡及显卡驱动

ubuntu下如何查看显卡及显卡驱动

ubuntu下如何查看显卡及显卡驱动使用nvidia-smi 工具查看查看显卡型号nvida-smi -L$ nvidia-smi -L GPU 0:&nbs...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。