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

用Docker来开发

未完成。。。

现在好像用Docker是越来越多了。之前其实也看过docker的原理,大概就是cgroup那些,不过现在就不看原理了,不谈理论,只看实际中怎么用,解决眼前问题。

用docker来做开发,其实就是解决的编译环境的差异,就像关大象进冰箱有几步,这里也有两步。1 创建docker。2 使用docker编译。

1 创建docker

理论上创建docker还是很简单,首先是创建一个Dockerfile,如下:

# 使用 Ubuntu 作为基础镜像
FROM ubuntu:20.04# 设置非交互模式,避免 tzdata 配置时的交互提示
ENV DEBIAN_FRONTEND=noninteractive# 更新包列表并安装必要的工具
RUN apt-get update && \apt-get install -y \build-essential \cmake \&& apt-get clean# 创建工作目录
WORKDIR /workspace# 将当前目录下的所有文件复制到工作目录中
COPY . .# 指定默认的入口命令
CMD ["./build.sh"]

然后执行命令:

# 构建 Docker 镜像
docker build -t my_cpp_project_image .

看起来很简单,但是过程中还是遇到了一些问题:

首先说没权限

直接chmod可以解决

sudo chmod 777 /var/run/docker.sock

然后遇到的超时。这个算是在国内的老面孔了。

说是更换服务器可以解决,还在尝试。

如何完美解决 “error pulling image configuration: download failed after attempts=6: dial tcp 59.188.250.54-CSDN博客

error pulling image configuration: download failed after attempts=6: dial tcp 47.88.58.234:443: conn-CSDN博客

2 使用docker编译

上面说了入口是build.sh,所以创建这个文件

#!/bin/bash# 创建并进入 build 目录
mkdir -p build
cd build# 运行 cmake 和 make
cmake ..
make# 运行编译生成的可执行文件(如果需要)
./my_cpp_project

创建代码:

进入Docker进行编译

# 运行 Docker 容器进行编译
docker run --rm -v "$PWD":/workspace my_cpp_project_image

这个的意思是:docker run --rm -v "$PWD":/workspace my_cpp_project_image:运行一个临时容器,使用当前目录挂载到容器内的 /workspace 目录中,并执行默认的入口命令(即 ./build.sh 脚本)。--rm 标志表示在容器退出后自动删除容器。

http://www.lryc.cn/news/402004.html

相关文章:

  • 从0开始的STM32HAL库学习2
  • 【MySQL篇】Percona XtraBackup工具备份指南:常用备份命令详解与实践(第二篇,总共五篇)
  • Spock单元测试框架使用介绍和实践
  • web安全之跨站脚本攻击xss
  • TCP与UDP的理解
  • 有效应对服务器遭受CC攻击的策略与实践
  • STM32判断休眠
  • TikTok内嵌跨境商城全开源_搭建教程/前端uniapp+后端源码
  • 前端学习(二)
  • 链接追踪系列-10.mall-swarm微服务运行并整合elk-上一篇的番外
  • 用Agent大模型,我发现了Prompt工程师的10大必备技能
  • 【GraphRAG】微软 graphrag 效果实测
  • 十大常用加密软件排行榜|2024企业常用加密软件推荐
  • lua 游戏架构 之 资源加载 LoaderManager (一)
  • 【人工智能】-- 迁移学习
  • Flink源码学习资料
  • HarmonyOS4.0开发-环境配置
  • GESP CCF C++ 三级认证真题 2024年6月
  • 华为的热机备份和流量限制
  • Vite的WebSocket
  • Vue3项目基于Axios封装request请求
  • html(抽奖设计)
  • Linux·权限与工具(上)
  • 成为CMake砖家(2): macOS创建CMake本地文档的app
  • 基于opencv的图片加水印实现方案
  • STM32 IAP 需要关注的一些事
  • 高并发服务器-使用多进程(Multi-Process)实现【C语言】
  • 线程控制
  • Spring Data Jpa 原生SQL联表查询返回自定义DTO
  • Hadoop3:HDFS存储优化之小文件归档