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

掌握Docker命令与Dockerfile实战技巧:快速构建高效容器化应用

1. 介绍

Docker 是现代开发和运维的必备工具,集成了容器技术的优势。本文将记录 Docker 的常用指令,并会随着使用经验的积累进行不定期更新。

2. 常用命令

2.1 启动容器(前台交互模式)

docker run --privileged --volume /home/xx/project/:/project/ -it test_x86_deployed:latest /bin/bash
  • –privileged:授予容器额外的权限(例如设备访问)。
  • –volume /home/xx/project/:/project/:将宿主机的 /home/xx/project/ 目录挂载到容器内的 /project/ 目录。
  • -it:以交互模式启动容器,并连接终端。
  • /bin/bash:启动容器时进入 Bash 环境。

2.2 提交容器为镜像

docker commit -m "更新内容描述" -a "作者信息" [容器id] [输出镜像名称]
  • -m:提交镜像时添加提交信息。
  • -a:设置提交的作者信息。

启动容器(后台模式)

docker run --privileged --volume /home/xx/project/:/project/ -t -d test_x86_deployed:latest /bin/bash
  • -t:分配一个伪终端。
  • -d:以后台模式运行容器。

2.3 打开多个终端

docker exec -it [容器id] bash
  • exec:在运行中的容器中执行命令。
  • -it:进入交互式终端。

2.4 退出容器并删除容器

# 显示所有容器
docker ps -a# 停止容器
docker stop [容器id_or_名称]# 停止所有容器
docker stop $(docker ps -aq)# 删除所有容器
docker rm $(docker ps -aq)
  • docker ps -a:列出所有容器(包括停止的)。
  • docker stop:停止容器。
  • docker rm:删除容器。

2.5 保存容器为镜像

docker save -o <output-file>.tar <image-name>
  • -o .tar:指定保存的文件路径及名称。
  • :要保存的镜像名称。

2.6 加载镜像

docker load -i <output-file>.tar
  • -i .tar:加载镜像文件。

2.7 删除镜像

docker rmi [镜像id或镜像名称]
  • rmi:删除镜像。

3. Dockerfile 实战

3.1 介绍

Dockerfile 是一个文本文件,包含一系列指令,用于定义如何构建一个 Docker 镜像。通过这些指令,你可以指定操作系统、安装软件、配置环境变量、复制文件等,最终自动化构建容器镜像。

3.2 Dockerfile 基本结构

一个标准的 Dockerfile 包含以下指令:

FROM:指定基础镜像。
RUN:在镜像中执行命令(如安装软件包)。
COPY 或 ADD:将文件从宿主机复制到镜像中。
WORKDIR:设置工作目录。
CMD 或 ENTRYPOINT:容器启动时执行的命令。
EXPOSE:声明容器暴露的端口。
ENV:设置环境变量。
USER:指定执行容器命令的用户。

3.3 Dockerfile 实战练习

以下是一个基本的 Dockerfile 示例,构建一个 Python 环境的镜像:

# 1. 使用官方 Python 3.9 镜像作为基础镜像
FROM python:3.9-slim# 2. 设置工作目录为 /app
WORKDIR /app# 3. 将当前目录的文件复制到容器的 /app 目录
COPY . /app# 4. 安装 Python 依赖
RUN pip install --no-cache-dir -r requirements.txt# 5. 暴露容器的 80 端口(根据需要调整)
EXPOSE 80# 6. 设置环境变量(可选)
ENV APP_ENV=production# 7. 指定容器启动时执行的命令
CMD ["python", "app.py"]

3.4 构建与运行镜像

构建镜像:

docker build -t my-python-app .
  • -t my-python-app:指定构建镜像的标签(名字)。
  • .:表示 Dockerfile 所在的当前目录。

运行容器:

docker run -p 4000:80 my-python-app
  • -p 4000:80:将容器的 80 端口映射到宿主机的 4000 端口。
  • my-python-app:你之前构建的镜像名称。

4. 小结

本文介绍了 Docker 的一些常用命令和 Dockerfile 的基本使用。Dockerfile 可以帮助你快速构建和部署容器化应用,熟练掌握这些指令,将大大提升你在容器化应用开发与管理中的效率。如果你有其他问题,或希望了解更多 Docker 的高级功能,欢迎继续关注后续更新。

相关文章:

掌握Docker命令与Dockerfile实战技巧:快速构建高效容器化应用

1. 介绍 Docker 是现代开发和运维的必备工具&#xff0c;集成了容器技术的优势。本文将记录 Docker 的常用指令&#xff0c;并会随着使用经验的积累进行不定期更新。 2. 常用命令 2.1 启动容器&#xff08;前台交互模式&#xff09; docker run --privileged --volume /hom…...

Virtualbox硬盘扩容

前言 有没有使用虚拟机安装操作系统的时候&#xff0c;虚拟硬盘一开始分配的虚拟硬盘空间不够用&#xff1f;在后期去扩容的伙伴们&#xff0c;下面我看看如何扩容virtualbox的虚拟硬盘&#xff1f; 重新分配虚拟硬盘大小 在virtualbox菜单选择【管理】-【工具】-【虚拟介质…...

10G光纤反射内存卡

在科技日新月异的今天&#xff0c;数据存储技术正以前所未有的速度发展&#xff0c;其中&#xff0c;“10G光纤反射内存卡”作为新一代存储技术的佼佼者&#xff0c;正逐步引领着数据存储领域的新风尚。本文将深入探讨这一创新产品的技术原理、性能优势、应用场景以及未来展望&…...

信创数据防泄漏中信创沙箱是什么样的安全方案

在信息化与工业化融合创新&#xff08;信创&#xff09;的快速发展中&#xff0c;企业面临着日益复杂的数据安全挑战。SDC沙盒技术以其独特的安全机制和先进的设计理念&#xff0c;为信创环境提供了强有力的数据保护支持。以下是SDC沙盒在信创领域支持能力的几个关键侧重点&…...

虚幻引擎结构之TArray

1.TArray 简介 TArray 是虚幻引擎提供的一个动态数组容器&#xff0c;用于存储相同类型的元素集合。它是一个模板类&#xff0c;能够容纳任意类型的数据&#xff0c;为用户提供了一套简便的方法来添加、删除、访问和操作数组中的元素。作为虚幻引擎的核心数据结构之一&#xff…...

【搭建一个网上商城系统】

搭建一个网上商城系统是一个复杂但有序的过程&#xff0c;涉及多个关键步骤。以下是一些主要的步骤&#xff1a; 确定运营模式 选择适合的模式&#xff1a;根据企业的规模、业务形态和目标市场&#xff0c;选择合适的电商平台运营模式&#xff0c;如B2C&#xff08;商对客&am…...

【gopher的java学习笔记】Spring Boot Starter初探

转到java这边后&#xff0c;这天需要搭一个java的web service出来&#xff0c;如果是以前golang的话&#xff0c;那我就可以非常熟练的用gin搭建一个web service出来&#xff0c;核心逻辑就是写好一些rest接口实现后再加上最为灵魂的一句&#xff1a; // 启动Gin服务器在8080端…...

web服务器之云主机、物理机租用、服务器托管的区别

云主机、物理机租用和服务器托管是三种不同的Web服务器部署方式&#xff0c;它们各有特点&#xff0c;适用于不同需求的用户。以下是这三种服务的区别&#xff1a; 云主机&#xff08;Cloud Hosting&#xff09;&#xff1a; 资源分配&#xff1a;基于虚拟化技术&#xff0c;多…...

centos制作离线安装包

目录 1.yumdownloader与repotrack怎么选择&#xff1f; yumdownloader --resolve repotrack 总结 2.环境准备 3.安装 1.yumdownloader与repotrack怎么选择&#xff1f; yumdownloader --resolve 和 repotrack 都是与 YUM&#xff08;Yellowdog Updater Modified&#xf…...

论文解读——掌纹生成网络 RPG-Palm升级版PCE-Palm

该文章是2023年论文RPG-Palm的升级版 论文&#xff1a;PCE-Palm: Palm Crease Energy Based Two-Stage Realistic Pseudo-Palmprint Generation 作者&#xff1a;Jin, Jianlong and Shen, Lei and Zhang, Ruixin and Zhao, Chenglong and Jin, Ge and Zhang, Jingyun and Ding,…...

Android修行手册 - 移动端几种常用动画方案对比

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…...

16 循环语句——for循环

#字符串是可以进行迭代的 for 循环: for 变量 in 可迭代的东西: 代码 把可迭代的东西中的每一项内容拿出来&#xff0c;挨个的赋值给变量&#xff0c;每一次的赋值都要执行一次循环体(代码) s "你好呀&#xff0c;我叫赛利…...

代码随想录-笔记-其八

让我们开始&#xff1a;动态规划&#xff01; 70. 爬楼梯 - 力扣&#xff08;LeetCode&#xff09; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; class Solution { public:int climbStairs(i…...

Effective C++ 条款 15:在资源管理类中提供对原始资源的访问

文章目录 条款 15&#xff1a;在资源管理类中提供对原始资源的访问核心思想原始资源的访问方式标准库中的实现示例设计建议总结 条款 15&#xff1a;在资源管理类中提供对原始资源的访问 核心思想 为什么需要访问原始资源&#xff1f; 在使用 RAII&#xff08;Resource Acquis…...

Linux高并发服务器开发 第五天(压缩解压缩/vim编辑器/查找替换/分屏操作/vim的配置)

目录 1.压缩和解压缩 1.1压缩 1.2解压缩 2.vim编辑器 2.1vim的3种工作模式 2.2切换编辑模式 2.3保存和退出 2.4光标移动 2.5复制粘贴 2.6剪切、删除 2.7查找 替换 2.7.1查找 2.7.2替换 3.分屏操作 3.1快速翻屏 3.2分屏 4.vim的配置 4.1系统配置 4.2用户配置…...

C++ 面向对象编程:关系运算符重载、函数调用运算符重载

对 、<、> 三个运算符分别进行重载&#xff0c;可见以下代码&#xff1a; #include<iostream> using namespace std;class location { public:location(int x1, int y1) :x(x1), y(y1){};bool operator(const location& l1) const{return x l1.x && …...

拉普拉斯分布极大似然估计

在拉普拉斯分布中&#xff0c;概率密度函数 (PDF) 表示为&#xff1a; f ( x ∣ μ , b ) 1 2 b exp ⁡ ( − ∣ x − μ ∣ b ) , f(x | \mu, b) \frac{1}{2b} \exp\left(-\frac{|x - \mu|}{b}\right), f(x∣μ,b)2b1​exp(−b∣x−μ∣​), 其中 μ \mu μ 是位置参数&…...

VLMs之Gemma 2:PaliGemma 2的简介、安装和使用方法、案例应用之详细攻略

VLMs之Gemma 2&#xff1a;PaliGemma 2的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;2024年12月4日&#xff0c;PaliGemma 2是一个基于Gemma 2系列语言模型的开源视觉语言模型 (VLM) 家族。PaliGemma 2 通过提供一个规模化、多功能且开源的VLM家族&#xff0c;…...

qwenvl 代码中的attention pool 注意力池如何理解,attention pool注意力池是什么?

qwenvl 中的attention pool如何理解&#xff0c;其实这就是一个概念的问题 看qwenvl的huggingface的代码的时候&#xff0c;发现代码里有一个Resampler 以及attn_pool&#xff0c;这和之前理解的连接池 线程池 表示资源复用的意思不太一样&#xff0c;查了一下&#xff1a; 注…...

源码分析之Openlayers中GeometryCollection类

概述 本文主要介绍GeometryCollection类,GeometryCollection类继承于Geometry类,关于Geometry类,参考这篇文章源码分析之Openlayers中Geometry基类介绍 GeometryCollection类就是一组几何对象的集合. 源码分析 GeometryCollection类源码实现 GeometryCollection类源码实现…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

sshd代码修改banner

sshd服务连接之后会收到字符串&#xff1a; SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢&#xff1f; 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...

boost::filesystem::path文件路径使用详解和示例

boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类&#xff0c;封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解&#xff0c;包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...

鸿蒙Navigation路由导航-基本使用介绍

1. Navigation介绍 Navigation组件是路由导航的根视图容器&#xff0c;一般作为Page页面的根容器使用&#xff0c;其内部默认包含了标题栏、内容区和工具栏&#xff0c;其中内容区默认首页显示导航内容&#xff08;Navigation的子组件&#xff09;或非首页显示&#xff08;Nav…...