当前位置: 首页 > news >正文

Docker知识点

1. Docker 介绍

1.1 Docker 简介

Docker:Docker 是一个开源的应用容器引擎,让开发者可以将应用程序和所有依赖打包到一个轻量级、可移植的容器中,然后在任何支持 Docker 的环境中运行。

在传统的项目开发中,开发者经常遇到环境不一致的问题,比如代码在本地开发环境运行正常,但在测试或生产环境却出现各种错误,原因可能是操作系统版本、依赖库版本或配置差异。此外,传统部署方式需要手动安装和配置各种软件环境,过程繁琐且容易出错,不同服务器之间的环境也难以保持一致。

Docker 核心概念

Docker 是一种容器化技术,允许将应用程序及其依赖打包到一个轻量级、可移植的容器中。容器在隔离的环境中运行,确保一致性。

镜像与容器:镜像是只读模板,包含运行应用程序所需的所有文件和配置。容器是镜像的运行实例,具有可写层。

Dockerfile:用于定义镜像构建步骤的脚本文件。通过 docker build 命令执行。

Docker 常用命令

运行容器:

docker run -d --name my_container nginx

查看运行中的容器:

docker ps

停止容器:

docker stop my_container

删除容器:

docker rm my_container

构建镜像:

docker build -t my_image .

推送镜像到仓库:

docker push my_image

Docker 网络与存储

网络模式:

  • bridge:默认模式,容器通过虚拟网络桥接通信。
  • host:容器共享主机网络栈。
  • none:无网络配置。

数据卷:持久化存储数据的方式,独立于容器生命周期。

docker volume create my_volume
docker run -v my_volume:/data my_image

Docker Compose

用于定义和运行多容器应用程序的工具。通过 docker-compose.yml 文件配置服务。

示例:

version: '3'
services:web:image: nginxports:- "80:80"db:image: mysqlenvironment:MYSQL_ROOT_PASSWORD: password

启动服务:

docker-compose up -d

Docker 安全实践

最小化镜像:使用多阶段构建减少镜像大小和攻击面。

非 root 用户运行:在 Dockerfile 中指定非 root 用户以提高安全性。

FROM alpine
RUN adduser -D myuser
USER myuser

定期更新镜像:确保基础镜像和依赖库保持最新。

常见面试问题

Q: Docker 与虚拟机的区别?

A: Docker 容器共享主机操作系统内核,启动更快,资源占用更少。虚拟机需要完整的操作系统,资源消耗更大。

Q: 如何查看容器日志?

A: 使用 docker logs <container_id> 命令。

Q: 如何进入运行中的容器?

A: 使用 docker exec -it <container_id> /bin/bash 命令。

http://www.dtcms.com/a/348876.html

相关文章:

  • 【数据分享】中国地势三级阶梯矢量数据
  • 【无标题】对六边形拓扑结构中的顶点关系、着色约束及量子隧穿机制进行严谨论述。
  • 深度剖析Spring AI源码(七):化繁为简,Spring Boot自动配置的实现之秘
  • MySQL--基础知识
  • 基础篇(下):神经网络与反向传播(程序员视角)
  • 多机多卡微调流程
  • Node.js依赖管理与install及run命令详解
  • 【文献阅读】生态恢复项目对生态系统稳定性的影响
  • CI/CD持续集成及持续交付详解
  • Jwt令牌设置介绍
  • 关于熵减 - 电子圆柱
  • feat(compliance): 添加电子商务法技术解读
  • PCB电路设计学习4 PCB图布局 PCB图布线
  • Python - 100天从新手到大师:第十五天函数应用实战
  • HTTP 接口调用工具类(OkHttp 版)
  • 如何用单张gpu跑sglang的数据并行
  • Java全栈开发面试实战:从基础到高并发场景的深度解析
  • MATLAB 与 Python 数据交互:数据导入、导出及联合分析技巧
  • `free` 内存释放函数
  • 【蓝桥杯 2024 省 C】挖矿
  • K8s 实战:六大核心控制器
  • yggjs_rlayout框架v0.1.2使用教程 01快速开始
  • python---类
  • 服装生产跟单系统是什么?主要功能有哪些?
  • 【51单片机按键控制LED按下位移】2022-11-12
  • 若依4.7.8(springboot2.5.15)升级到4.8.1(springboot3.3.5)并集成Dubbo3客户端
  • cmake--CPack/deb
  • Linux系统编程——网络协议
  • The United Nations Is Already Dead
  • comfyUI背后的一些技术——CLIP