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

news/2024/12/28 11:09:38/

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:删除镜像。

Dockerfile__80">3. Dockerfile 实战

3.1 介绍

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

Dockerfile__84">3.2 Dockerfile 基本结构

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

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

Dockerfile__97">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 的高级功能,欢迎继续关注后续更新。


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

相关文章

npm : 无法加载文件 D:\Nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本

npm : 无法加载文件 D:\Nodejs\node_global\npm.ps1&#xff0c;因为在此系统上禁止运行脚本 1、问题详情 npm : 无法加载文件 D:\Nodejs\node_global\npm.ps1&#xff0c;因为在此系统上禁止运行脚本&#xff0c;具体如下图所示&#xff1a; 2、解决方法 1.使用命令 get-Ex…

PDF书籍《手写调用链监控APM系统-Java版》第7章 插件与链路的结合:Tomcat插件实现

本人阅读了 Skywalking 的大部分核心代码&#xff0c;也了解了相关的文献&#xff0c;对此深有感悟&#xff0c;特此借助巨人的思想自己手动用JAVA语言实现了一个 “调用链监控APM” 系统。本书采用边讲解实现原理边编写代码的方式&#xff0c;看本书时一定要跟着敲代码。 作者…

Vue 3 具名插槽传值详解

Vue 3 具名插槽传值详解 Vue 3 的具名插槽不仅支持内容插入&#xff0c;还支持通过作用域插槽传递值&#xff08;又称插槽作用域&#xff09;。这使得父组件能够动态接收来自子组件的数据&#xff0c;从而实现更加灵活的组件开发。 在本文中&#xff0c;我们将深入讲解 Vue 3…

《人工智能如何加速药物研发进程:从新药发现到临床试验的突破》

在当今医药领域&#xff0c;药物研发的复杂性和高成本使得新药的推出面临诸多挑战。而人工智能&#xff08;AI&#xff09;正以其强大的能力为药物研发带来新的契机&#xff0c;助力加速新药发现和临床试验过程。 新药发现阶段 靶点识别与筛选 药物研发的第一步是确定药物作…

蓝桥杯速成教程{三}(adc,i2c,uart)

目录 一、adc 原理图​编辑引脚配置 Adc通道使能配置 实例测试 ​编辑效果显示 案例程序 badc 按键相关函数 测量频率占空比 main 按键的过程 显示界面的过程 二、IIC通信-eeprom 原理图AT24C02 引脚配置 不可用状态&#xff0c;用的软件IIC 官方库移植 At24c02手册 ​编辑…

服务器压力测试怎么做

在部署任何Web应用程序或服务之前&#xff0c;进行服务器压力测试&#xff08;也称为负载测试&#xff09;是确保系统能够处理预期用户流量的关键步骤。通过模拟大量并发请求&#xff0c;可以评估服务器的性能、稳定性和响应时间&#xff0c;识别潜在瓶颈&#xff0c;并优化资源…

手机动态壁纸设置教程安卓手机和苹果手机都可以

安卓手机适配机型包括小米、红米、华为、荣耀、oppo、vivo、真我、one plus等国内主流机型都可以设置。在应用商店或者应用市场下载空空鱼里的动画提示里就可以设置&#xff0c;并且内部有很多壁纸素材可以下载和自定义自己相册里的视频做壁纸。

水利水电安全员考试题库及答案

一、判断题 1.本质安全管理体系的建设方法主要有制度建设沟通与培训执行与依从三个方面。 答案&#xff1a;正确 2.本质安全管理体系纠正问题是针对体系评审中发现的问题&#xff0c;研究制定及落实改进措施的过程&#xff0c;主要任务是纠正体系 存在的问题&#xff0c;确保…