Docker 基础与实战指南(1)

米饭6个月前行业资讯320

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


相关文章

如何为阿里云服务器配置域名

如何为阿里云服务器配置域名

域名是互联网上的门牌号,它将用户输入的网址转换为服务器的IP地址,从而让用户能够访问到服务器上托管的网站或应用。阿里云作为国内领先的云服务提供商,提供了强大的服务器和域名管理服务。本文将详细介绍如何为...

【Docker】深入了解 Docker:终极命令指南(上)

【Docker】深入了解 Docker:终极命令指南(上)

Docker 是现代开发中不可或缺的工具,能够简化应用程序的部署和管理。在本文中,我们将深入探讨 Docker 的核心命令,帮助您在日常工作中高效使用这一强大平台。1. 系统信息命令了解 D...

Linux 中通过 cpulimit 限制服务的CPU占用率

Linux 中通过 cpulimit 限制服务的CPU占用率

通常做资源限制有多种方法,比如用 CGroup 方法、system-run等,cpulimit 只是其中的一种方式。安装sudo apt update sud...

Linux 安装Docker完整教程(六)

Linux 安装Docker完整教程(六)

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

Docker:技术架构的演进之路

Docker:技术架构的演进之路

前言技术架构是指在软件开发和系统构建中,为了满足业务需求和技术要求,对系统的整体结构、组件、接口、数据流以及技术选型等方面进行的详细设计和规划。它是软件开发过程中的重要组成部分,为开发团队提供了明确的...

MyBatisPlus从零到一:快速入门与核心功能详解(6)

MyBatisPlus从零到一:快速入门与核心功能详解(6)

四、分页插件MybatisPlus 提供了很多的插件功能,进一步拓展其功能。目前已有的插件有:PaginationInnerInterceptor:自动分页TenantLineInnerInterce...

发表评论    

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