# LaozuCppDocker **Repository Path**: MyDearest35/laozu-cpp-docker ## Basic Information - **Project Name**: LaozuCppDocker - **Description**: C++的容器打包技术 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-09 - **Last Updated**: 2025-05-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LaozuCppDocker ## 介绍 C++的容器打包技术,以来实现跨平台的编译和运行 1. 原文链接 https://www.bilibili.com/video/BV1gK4y1R7hD/ 2. 特别鸣谢 师祖 Docker 指导 https://gitee.com/xiaoyudi_xyz 2. 该项目是一个 C++ 的 Docker 容器,旨在提供一个跨平台的编译和运行环境。 ## 软件架构 1. 语言 C++ 2. 操作系统 Ubantu ## 安装教程 ### 宿主机安装 1. VS Code 插件安装 1. Docker 微软 2. Dev Containers 微软 2. Docker Desktop 安装 1. 先去查找最新 docker 镜像源,这里可以先用下面的,但不确保一定生效 ```shell { "registry-mirrors": [ "https://docker.1ms.run", "https://docker.xuanyuan.me" ] } ``` 2. Docker Desktop Setting 设置镜像源 1. Docker Desktop -> Settings -> Docker Engine !["DockerEngineSetting.png"](./MarkDown/DockerEngineSetting.png "Docker引擎设置") 3. Docker Hub 官网 https://hub.docker.com/ 1. Ubuntu 镜像 官网 https://hub.docker.com/_/ubuntu ### 构建docker镜像 ```shell docker build -t cpp_laozu . ``` 初次构建等待时间可能比较长,因为需要下载镜像和安装 ```shell ❯ docker build -t cpp_laozu . [+] Building 0.8s (10/10) FINISHED docker:desktop-linux => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 3.02kB 0.0s => WARN: NoEmptyContinuation: Empty continuation line (line 49) 0.0s => [internal] load metadata for docker.io/library/ubuntu:25.04 0.7s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [1/6] FROM docker.io/library/ubuntu:25.04@sha256:79efa276fdefa2ee3911db29b0608f8c0561c347ec3f4d4139980d43b168 0.0s => CACHED [2/6] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezo 0.0s => CACHED [3/6] RUN apt-get update 0.0s => CACHED [4/6] RUN apt-get install -y build-essential cmake git 0.0s => CACHED [5/6] RUN apt-get install -y openssh-server gdb pkg-config valgrind systemd-coredump 0.0s => CACHED [6/6] RUN apt-get install -y libboost-all-dev libssl-dev 0.0s => exporting to image 0.0s => => exporting layers 0.0s => => writing image sha256:aee700481d34bf1617aa34293ae3dbf05fcfe93bfbdedb239637ee39d0b388ed 0.0s => => naming to docker.io/library/cpp_laozu 1 warning found (use docker --debug to expand): - NoEmptyContinuation: Empty continuation line (line 49) ``` 解释该命令的各个部分: docker build: 这是 Docker 命令的一部分,用于构建 Docker 镜像。 - -t cpp_tutorials: -t 参数用于指定构建的镜像的标签(tag)。在这个例子中,镜像的标签被设置为 cpp_tutorials,您可以根据需要自行更改。 - .: 这表示 Dockerfile 的路径,. 表示当前目录。Dockerfile 是一个包含构建指令的文本文件,它定义了如何构建 Docker 镜像。 使用这个命令,您可以在当前目录中的 Dockerfile 中定义的环境中构建一个名为 cpp_tutorials 的 Docker 镜像。Docker 将按照 Dockerfile 中指定的指令执行构建过程,并生成一个可用的镜像。 请确保在运行该命令之前,您已经在当前目录中创建了正确的 Dockerfile,并且 Docker 已经正确安装和配置在您的系统上。 构建完成后,您可以使用 docker images 命令来查看已经构建的镜像列表,其中应该包含您新构建的 cpp_tutorials 镜像。 ### 确认镜像构建成功 ```shell docker images ``` 可以看到成功构建了cpp_tutorials镜像 ```shell ❯ docker images REPOSITORY TAG IMAGE ID CREATED SIZE cpp_laozu latest aee700481d34 8 minutes ago 1.56GB ``` ### 在容器中运行镜像 ```shell docker run --name cpp_laozu_container -v $PWD/cpp:/cpp -it cpp_laozu ``` 该命令的各个部分的解释如下: - 需要用到 $PWD 替代点号'.' 以来表示宿主机的相对路径 - docker run: 这是 Docker 命令的一部分,用于在容器中运行镜像。 - --name cpp_laozu_container: --name 参数用于指定容器的名称。在这个例子中,容器的名称被设置为 cpp_tutorials_container,您可以根据需要自行更改。 - -v $PWD/cpp:/cpp: -v 参数用于将主机的目录(/Users/hejun/project/cpp_tutorials)与容器内部的目录(/cpp_tutorials)进行挂载(映射)。这样可以在容器内访问主机上的文件和目录。 - -it: -i 和 -t 参数一起使用,以交互模式运行容器,并分配一个终端(TTY)以便与容器进行交互。 - cpp_laozu: 这是要运行的镜像的名称。 使用这个命令,您可以在一个新的容器中运行名为 cpp_tutorials 的镜像。容器将会创建,并在交互模式下启动,您可以在容器的终端中执行命令和操作。 在容器中,您通过 -v 参数将主机上的 /Users/hejun/project/cpp_tutorials 目录挂载到容器内的 /cpp_tutorials 目录。这使得容器内的操作可以访问主机上的文件和目录,方便在开发环境中共享和处理代码。 ### 容器其他可选的操作 1. 查看容器 ```shell ❯ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 94713fff1d94 cpp_laozu "/bin/bash" 5 minutes ago Up 8 seconds cpp_laozu_container ``` 2. 进入正在运行的容器 ```shell docker start -i cpp_laozu_container ``` 3. 停止容器 ```shell docker stop cpp_laozu_container ``` 4. 删除容器 ```shell docker rm cpp_laozu_container ``` 5. 删除镜像 ```shell docker rmi cpp_laozu ``` ## 使用说明 1. VS Code 附加到容器 !["AttachContainer.jpg"](./MarkDown/AttachContainer.jpg "VS Code 附加到容器") !["TrustContainer.png"](./MarkDown/TrustContainer.png "附加到容器的信任警告") 2. 进入容器 打开文件夹 !["DockerOpenFolder.jpg"](./MarkDown/DockerOpenFolder.jpg "VS Code 在容器打开文件夹") !["ConnectDockerFolder.jpg"](./MarkDown/ConnectDockerFolder.jpg "VS Code 连接容器成功") 3. 在容器的 VS Code 安装插件 1. C/C++ 微软 2. C/C++ Extension Pack 微软 3. CMake Tools 微软