本文使用Linux容器代替linux虚拟机,以ubuntu20.04为例
相关链接:
使用Dockerfile来创建一个自定义的镜像
Dockerfile是一个包含一组用于组装系统的指令的配置文件。通过Dockerfile,我们可以自动化地在任何其他机器上重建相同的编译环境。
(1)此示例中的Dockerfile文件
Dockerfile需要包含以下内容
something infomations
MAINTAINER geodoergeodoer@163.com LABEL name = “C++ Linux development environment” description = “Container for use with Visual Studio”
use aliyun and install build dependencies
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list \ && set -x; buildDeps=’rsync zip g++ make cmake gdb’ \ && apt-get update \ && apt-get install -y $buildDeps \ && apt-get purge -y —auto-remove $buildDeps
install and configure SSH for communication with Visual Studio
RUN apt-get install -y openssh-server \ && useradd -m -d /home/geodoer -s /bin/bash -G sudo geodoer \ && echo “geodoer:geodoer123” | chpasswd \ && mkdir -p /var/run/sshd \ && echo “PasswordAuthentication yes” >> /etc/ssh/sshd_config && ssh-keygen -A
expose port 22
EXPOSE 22
Copy File
COPY ./3rdlib_linux /cpp/3rdlib_linux ENV Cpp_3rdlib_DIR “/cpp/3rdlib_linux”
start ssh and enter bash
ENTRYPOINT [ “sh”, “-c”, “service ssh start; bash”]
**(2)然后我们可以基于这个Dockerfile来创建一个自定义的系统镜像**```dockerfiledocker build -t ubuntu-cppdev:0.1 .
(3)创建容器
docker run -it -p 5000:22 --name cppdev -d ubuntu-cppdev:0.1
配置ssh连接

- 密码是
geodoer123
后面的步骤就和Visual Studio+CMake跨平台开发一样了。
记录:写Dockerfile的过程
如果你没有足够把握,不能够直接写正确的Dockerfile。
可以先执行docker命令,确保它能工作,再翻译成Dockerfile
#----------------创建容器docker run -it -p 5000:22 --name cppdev-vs-ubuntu ubuntu:20.04 /bin/bash#----------------安装工具apt-get update#----------------安装、配置SSHapt-get install -y openssh-server#启动前手动创建/var/run/sshd,不然启动sshd的时候会报错mkdir -p /var/run/sshd#允许密码登录echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config && ssh-keygen -A#创建一个用户,用于ssh登录useradd -m -d /hone/geodoer -s /bin/bash -G sudo geodoer#设置该用户的密码echo "geodoer:geodoer123" | chpasswd#设置开机自启/lib/systemd/systemd-sysv-install enable ssh#启动sshservice ssh start#----------------安装Visual Studio CMake所要求环境apt-get install -y rsyncapt-get install -y zipapt-get install -y g++ make cmake gdb
