本文使用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来创建一个自定义的系统镜像**
```dockerfile
docker 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
#----------------安装、配置SSH
apt-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
#启动ssh
service ssh start
#----------------安装Visual Studio CMake所要求环境
apt-get install -y rsync
apt-get install -y zip
apt-get install -y g++ make cmake gdb