容器化技术:Docker入门与实战

server/2024/10/20 6:31:14/

目录

      • 一、什么是Docker?
        • 1.1 Docker的核心概念
      • 二、Docker的安装与环境配置
        • 2.1 安装Docker
          • 在Linux(如Ubuntu)上安装Docker
          • 在Windows/macOS上安装Docker
        • 2.2 验证Docker安装
      • 三、Docker的基本使用
        • 3.1 拉取并运行镜像
        • 3.2 常用Docker命令
        • 3.3 Docker的工作流程
      • 四、Dockerfile的构建与解释
        • 4.1 构建Docker镜像
        • 4.2 运行Docker容器
      • 五、Docker Compose:管理多容器应用
        • 5.1 Docker Compose文件示例
        • 5.2 启动多容器应用
      • 六、Docker实战项目:构建一个简单的Web应用
        • 6.1 创建Flask应用
        • 6.2 编写requirements.txt
        • 6.3 构建镜像并运行容器
      • 七、总结

一、什么是Docker?

Docker是一个开源的容器化平台,它允许开发者将应用程序及其依赖打包到一个轻量级、可移植的容器中。Docker解决了传统应用在不同环境中运行的不一致性问题,确保了从开发环境到生产环境的无缝迁移。

1.1 Docker的核心概念
  1. 容器(Container):容器是一个轻量级的、独立的执行环境,它打包了应用程序的代码、运行时环境、库、配置文件等所有依赖,确保应用可以在任何环境中运行。
  2. 镜像(Image):镜像是容器的只读模板,包含了运行容器所需的一切环境和文件。容器是基于镜像启动的实例。
  3. Dockerfile:这是一个文本文件,定义了如何构建镜像。它包含一系列指令,用于指定镜像中的基础环境、依赖、配置等。
  4. Docker Hub:这是一个公共的镜像仓库,用户可以从中拉取镜像,或者将自己创建的镜像推送到该平台上。
  5. Docker引擎(Docker Engine):这是Docker的核心部分,负责管理容器的创建、运行和销毁等操作。

二、Docker的安装与环境配置

2.1 安装Docker

Docker支持多种操作系统,如Linux、Windows和macOS。以下是各操作系统的安装步骤简述。

在Linux(如Ubuntu)上安装Docker
sudo apt-get update
sudo apt-get install docker.io
sudo systemctl start docker
sudo systemctl enable docker
在Windows/macOS上安装Docker
  • 访问 Docker官网 下载并安装Docker Desktop。
  • 安装完成后,启动Docker Desktop即可。
2.2 验证Docker安装

安装完成后,可以通过以下命令来验证Docker是否成功安装:

docker --version

输出类似 Docker version 20.xx 表示安装成功。

三、Docker的基本使用

3.1 拉取并运行镜像

Docker提供了许多预构建的镜像,可以直接拉取并运行。以运行一个简单的hello-world镜像为例:

docker run hello-world

这条命令会执行以下操作:

  1. 从Docker Hub拉取hello-world镜像。
  2. 启动容器,并在终端输出"Hello from Docker!"的信息。
3.2 常用Docker命令
  1. 查看正在运行的容器
    docker ps
    
  2. 查看所有容器(包括已停止的)
    docker ps -a
    
  3. 停止容器
    docker stop <container_id>
    
  4. 删除容器
    docker rm <container_id>
    
  5. 删除镜像
    docker rmi <image_id>
    
3.3 Docker的工作流程

Docker的工作流程通常分为以下几个步骤:

  1. 构建镜像:基于Dockerfile创建自定义的应用镜像。
  2. 拉取镜像:从Docker Hub等镜像仓库拉取镜像。
  3. 运行容器:基于镜像启动一个或多个容器实例。
  4. 管理容器:对运行中的容器进行监控、日志查看和故障排查等。

四、Dockerfile的构建与解释

Dockerfile是定义镜像构建过程的核心文件。通过Dockerfile,开发者可以定义从基础镜像开始,到添加应用依赖和配置的整个过程。

以下是一个简单的Dockerfile示例,用于构建一个基于Python的Flask应用:

# 使用官方的Python基础镜像
FROM python:3.9-slim# 设置工作目录
WORKDIR /app# 复制当前目录下的所有文件到容器中的/app目录
COPY . /app# 安装Flask依赖
RUN pip install --no-cache-dir -r requirements.txt# 暴露容器的5000端口
EXPOSE 5000# 运行Flask应用
CMD ["python", "app.py"]
4.1 构建Docker镜像

在有了Dockerfile之后,可以通过以下命令构建镜像:

docker build -t my-flask-app .
4.2 运行Docker容器

构建完成后,可以通过以下命令运行容器:

docker run -d -p 5000:5000 my-flask-app

这将启动一个容器实例,并将主机的5000端口映射到容器的5000端口。

五、Docker Compose:管理多容器应用

如果一个应用需要多个服务(如数据库、缓存、后台服务等),可以使用Docker Compose来定义和管理多容器环境。docker-compose.yml文件可以定义多个容器的配置和依赖关系。

5.1 Docker Compose文件示例

以下是一个docker-compose.yml文件示例,用于定义一个Flask应用和一个PostgreSQL数据库服务:

version: '3'services:web:build: .ports:- "5000:5000"volumes:- .:/appdepends_on:- dbdb:image: postgres:13environment:POSTGRES_USER: userPOSTGRES_PASSWORD: passwordPOSTGRES_DB: flaskdb
5.2 启动多容器应用

使用以下命令来启动所有定义在docker-compose.yml中的服务:

docker-compose up

六、Docker实战项目:构建一个简单的Web应用

我们将构建一个简单的Flask应用,并将其容器化。项目结构如下:

/flask-app├── app.py├── requirements.txt└── Dockerfile
6.1 创建Flask应用

app.py中编写一个简单的Flask应用:

from flask import Flask
app = Flask(__name__)@app.route('/')
def hello_world():return 'Hello, Docker!'if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)
6.2 编写requirements.txt
Flask==2.0.1
6.3 构建镜像并运行容器
  1. 创建Dockerfile(参考前面示例)。
  2. 构建镜像:
    docker build -t flask-app .
    
  3. 运行容器:
    docker run -d -p 5000:5000 flask-app
    

浏览器访问 http://localhost:5000,你将看到"Hello, Docker!"。

七、总结

Docker通过容器化技术,简化了应用的开发、部署和运行过程。在本篇文章中,我们介绍了Docker的基础概念、安装与使用,以及如何使用Dockerfile构建自定义镜像。通过实际的Flask项目,你可以掌握Docker在实际项目中的应用,进一步理解容器化技术的强大之处。


http://www.ppmy.cn/server/133270.html

相关文章

[含文档+PPT+源码等]精品基于springboot实现的原生微信小程序汽车保养服务

基于Spring Boot实现的原生微信小程序汽车保养服务&#xff0c;其背景主要源于现代汽车保养行业的实际需求与移动互联网技术的快速发展。以下是对该背景的具体阐述&#xff1a; 一、汽车保养行业的实际需求 车主需求&#xff1a; 许多车主由于工作繁忙或对汽车保养知识缺乏足够…

Chromium 前端window对象c++实现定义

前端中window.document window.alert()等一些列方法和对象在c对应定义如下&#xff1a; 1、window对象接口定义文件window.idl third_party\blink\renderer\core\frame\window.idl // https://html.spec.whatwg.org/C/#the-window-object// FIXME: explain all uses of [Cros…

深入了解机器学习 (Descending into ML):线性回归

人们早就知晓&#xff0c;相比凉爽的天气&#xff0c;蟋蟀在较为炎热的天气里鸣叫更为频繁。数十年来&#xff0c;专业和业余昆虫学者已将每分钟的鸣叫声和温度方面的数据编入目录。Ruth 阿姨将她喜爱的蟋蟀数据库作为生日礼物送给您&#xff0c;并邀请您自己利用该数据库训练一…

java面试精选

mybatis的数据库连接池 数据库MyBatis本身不包含数据库连接池功能,但通常与其他第三方数据库连接池一起使用来管理数据库连接。以下是MyBatis常用的数据库连接池配置选项: C3P0 配置示例:<dataSource type="C3P0"><property name="driver" va…

基于springboot+微信小程序校园自助打印管理系统(打印1)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于springboot微信小程序校园自助打印管理系统实现了管理员、店长和用户。管理员实现了用户管理、店长管理、打印店管理、打印服务管理、服务类型管理、预约打印管理和系统管理。店长实现…

用C语言编写一个函数

输出给定的字符串中字母、数字、空格和其他字符的个数 &#xff08;1&#xff09;编写main函数 #include <stdio.h>int main() {return 0; }&#xff08;2&#xff09;编写计数函数 #include <stdio.h>void count_chars(char *str) {int letters 0; // 字母计数…

Python 魔术方法

在Python中&#xff0c;魔术方法&#xff08;Magic Methods&#xff09;或称为双下划线方法&#xff08;Dunder Methods&#xff09;&#xff0c;是一类具有特殊用途的方法&#xff0c;其名称前后都带有两个下划线&#xff08;如 __init__、__str__ 等&#xff09;。这些方法定…

vue开发环境、生产环境配置与nginx配置后端代理转发跨域

一、配置步骤 在Vue项目中,通常会在项目的环境配置文件中设置不同环境下的API接口地址。对于生产环境,你可以使用Nginx作为反向代理来处理后端地址的转发。 1.在Vue项目中的env文件夹下,找到env.production文件,并设置生产环境下的API接口地址: module.exports = {NODE…