从零开始玩转Docker:轻松开启容器化之旅

news/2025/2/11 20:09:51/

一、什么是 Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。简单来说,Docker 就像是一个超级 “快递箱”,能把你的应用程序及其运行所需要的各种 “零件”(如依赖的软件库、配置文件等)一股脑打包起来,不管这个应用要在什么样的服务器环境中运行,只要有能接收这个 “快递箱” 的地方,它就能稳定运行,完全不用担心因为环境不同而出现问题。

二、为什么要用 Docker

  1. 环境一致性:在开发和运维过程中,“在我机器上好好的,怎么到你那不行了” 这种问题屡见不鲜。Docker 通过容器化技术,保证了应用在不同环境下的一致性,无论是开发、测试还是生产环境,应用的运行环境都是一模一样的。
  1. 快速部署:传统的应用部署方式,需要在服务器上安装各种依赖软件,配置复杂的环境,这个过程可能需要数小时甚至数天。而使用 Docker,只需要拉取已经打包好的镜像,启动容器,几分钟内就能完成应用的部署。
  1. 资源隔离:每个 Docker 容器相互隔离,它们之间不会相互干扰,各自使用自己的资源(如 CPU、内存等),这样可以提高服务器资源的利用率,同时也增强了应用的安全性。

下面用一个简单的表格来对比传统部署方式和 Docker 部署方式:

对比项

传统部署方式

Docker 部署方式

环境配置

复杂,易出错

简单,镜像自带环境

部署时间

环境一致性

难保证

易保证

资源利用率

三、Docker 核心概念

  1. 镜像(Image):可以把镜像想象成一个 “模板”,它包含了运行一个应用所需要的所有东西,包括代码、运行时环境、库、依赖项等。你可以从 Docker Hub(一个公共的镜像仓库)上下载各种现成的镜像,也可以自己创建镜像。
  2. 容器(Container)容器是镜像的运行实例,就像是根据 “模板” 生产出来的一个个 “产品”。一个镜像可以创建多个容器,每个容器相互独立,互不影响。可以用下面这张图来直观地理解镜像和容器的关系
  3. 仓库(Repository):仓库是用来存放镜像的地方,类似于代码仓库。Docker Hub 是最常用的公共仓库,里面有海量的镜像供大家下载使用。同时,你也可以搭建自己的私有仓库。

四、Docker 基本操作

1. 安装 Docker:不同的操作系统有不同的安装方式(具体可以看官网Ubuntu | Docker Docs),以 Ubuntu 为例,只需要在终端中执行以下命令:

sudo apt-get updatesudo apt-get install docker.io

2. 拉取镜像:使用docker pull命令从仓库中拉取镜像,比如拉取一个官方的 Nginx 镜像:

docker pull nginx

3. 运行容器:拉取镜像后,就可以使用docker run命令来运行容器了。下面的命令会在后台运行一个 Nginx 容器,并将容器的 80 端口映射到主机的 8080 端口:

docker run -d -p 8080:80 nginx

此时,在浏览器中访问http://localhost:8080,就可以看到 Nginx 的欢迎页面啦!

4. 查看容器:使用docker ps命令可以查看正在运行的容器

docker ps

如果想要查看所有容器(包括已经停止的),可以使用docker ps -a命令。

5. 停止和启动容器:停止容器可以使用docker stop命令,后面跟上容器的 ID 或名称;启动已经停止的容器可以使用docker start命令。

# 停止容器docker stop <容器ID或名称># 启动容器docker start <容器ID或名称>

五、总结

通过以上内容,相信你已经对 Docker 有了一个初步的了解。Docker 作为容器化技术的代表,在当今的软件开发和运维领域发挥着越来越重要的作用。它不仅简化了应用的部署和管理,还提高了开发和运维的效率。希望这篇文章能帮助你开启 Docker 的学习之旅!

大功告成!


http://www.ppmy.cn/news/1571231.html

相关文章

zabbix v7.2.3容器运行Proxy代理服务器启用IPV6访问

本文系在openEuler22.03系统上部署zabbix v7.2.3的Proxy代理服务器容器&#xff0c;并启用IPV6功能以便监控IPV6网元的实战化实践。openEuler22.03原生docker包不支持ip6tables自动配置功能&#xff0c;需提前将docker引擎进行升级&#xff0c;详细操作请参见本人前文&#xff…

黑马 Linux零基础快速入门到精通 笔记

初识Linux Linux简介 提及操作系统&#xff0c;我们可能最先想到的是windows和mac&#xff0c;这两者都属于个人桌面操作系统领域&#xff0c;而Linux则属于服务器操作系统领域。无论是后端软件、大数据系统、网页服务等等都需要运行在Linux操作系统上。 Linux是一个开源的操作…

Qt 数据库SQLite 使用【01】基本功能

1.开发背景 Qt 开发过程中难免需要存储数据&#xff0c;可以选择保存到本地文件&#xff0c;但是查找比较麻烦&#xff0c;所以就有了数据库&#xff0c;主要是方便查找数据&#xff0c;增删改查等操作&#xff0c;而 SqLite 属于数据库中轻量级的存在&#xff0c;适合本地数据…

python爬虫--简单登录

1&#xff0c;使用flask框架搭建一个简易网站 后端代码app.py from flask import Flask, render_template, request, redirect, url_for, sessionapp Flask(__name__) app.secret_key 123456789 # 用于加密会话数据# 模拟用户数据库 users {user1: {password: password1}…

驱动开发系列36 - Linux Graphics 2D 绘制流程

一: 概述 在Linux中,2D绘制流程是操作系统、图形库、显示协议、驱动程序等多个组件协调工作的结果。整体流程如下步骤所示: 1. 客户端请求:客户端程序(如GTK、Qt应用程序)通过X11协议与Xorg-Server通信(或通过Wayland协议与Wayland合成器通信)、请求绘制2D图形,比如绘制…

基于Kotlin中Flow扩展重试方法

最近项目中统一采用Kotlin的Flow来重构了网络请求相关代码。 目前的场景是,接口在请求的时候需要一个accessToken值,因为此值会过期或者不存在,需要刷新,因此最终方案是在使用Flow请求的时候先获取accessToken值然后再进行接口请求,而获取accessToken值的方法已经封装成了…

FastReport 加载Load(Stream) 模板内包含换行符不能展示

如下代码 当以FastReport 载入streams时 当模板内包含换行符时会导致不能正常生成pdf System.Xml.XmlDocument newFrxXml new System.Xml.XmlDocument(); newFrxXml.Load(fileName);FastReport.Report report new FastReport.Report();using (var memStream new MemoryStre…

w200基于spring boot的个人博客系统的设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…