用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 标志表示在容器退出后自动删除容器。

相关推荐

  1. docker解决什么问题

    2024-07-18 12:08:04       36 阅读
  2. Gemini Pro 开发?API出来了

    2024-07-18 12:08:04       64 阅读
  3. 开源等于免费吗?事实说话

    2024-07-18 12:08:04       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 12:08:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 12:08:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 12:08:04       58 阅读
  4. Python语言-面向对象

    2024-07-18 12:08:04       69 阅读

热门阅读

  1. 如何实现MySQL的高可用

    2024-07-18 12:08:04       23 阅读
  2. docker安装指导

    2024-07-18 12:08:04       20 阅读
  3. 使用lxml库提取HTML中a标签的href和文本内容

    2024-07-18 12:08:04       23 阅读
  4. 一些数据库专家称,最新的 MySQL 版本令人失望

    2024-07-18 12:08:04       27 阅读
  5. NLP篇8 自然语言处理 使用注意力模型

    2024-07-18 12:08:04       20 阅读
  6. 测试用例设计方法

    2024-07-18 12:08:04       16 阅读
  7. Mongodb使用索引进行查询优化

    2024-07-18 12:08:04       22 阅读
  8. 计算机视觉——OpenCV C++实现凸包

    2024-07-18 12:08:04       22 阅读
  9. python logging 避免日志重复打印

    2024-07-18 12:08:04       22 阅读
  10. 23、nc文件快速切片与索引

    2024-07-18 12:08:04       23 阅读