需求
- 为了不混淆生产环境,使用Docker搭建运行环境
- 在本地CLion中编写代码,在远程服务器的Docker里运行代码
环境
- Clion装在本地Windows 11
- 远程服务器Ubuntu 20.04
Clion连接服务器内的Docker
Docker
Docker安装 (仅供参考)
1
2
curl -sSL https://get.docker.com/ | sh
sudo chmod 777 /var/run/docker.sock
Docker创建容器
1
sudo docker run --privileged -itd --name helib -p 12022:22 ubuntu:20.04 bash
1
2
命令解释:`--privileged`提高权限,不然可能没办法debug;`--name`指定容器名字;`-p`指定端口,用于服务器端口映射到Docker内端口,由于后续需要通过ssh连接Docker容器,故映射到**22**端口;使用的镜像为ubuntu:20.04,镜像随意;bash指定运行终端
PS. 可以加个`-v`参数指定挂载目录
进入容器:由于前面用了-d
让容器在后台运行,所以需要用exec
命令进入容器
1
sudo docker exec -it helib bash
安装ssh等服务
- Ubuntu (sudo)
1
apt update && apt install openssl openssh-server -y
然后可能需要设置时区,我选的6(Asia),31(Hong Kong)
1
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
1
service ssh restart
可以将 ssh 加入开机启动:
1
echo "service ssh restart" >> ~/.bashrc
设置Docker容器的root密码,用于后续连接:
1
passwd root
CentOS (sudo)
1 2 3 4 5
yum install openssh-server # 安装OpenSSH服务 systemctl enable sshd # 启动SSH服务并设置为开机启动 systemctl start sshd firewall-cmd --zone=public --add-port=22/tcp --permanent # 开启SSH端口 firewall-cmd --reload
测试连接
CLion
- Settings -> Build… -> Toolchains -> ‘+’ -> Remote Host
- 可以自定义名字,然后设置连接
- 按下图填写,注意port应该填写的是Docker对外映射的端口,我这里就应该是12022,而不是22,测试连接没问题就可以了
- 设置CMake:Settings -> Build… -> CMake,指定toolchains就行
- 另外,如果想把代码啥的也同步到Docker上,则添加SFTP:Settings -> Build… -> Deployment,添加SFTP,设置Mappings,见下图:
- 下面这个看自己情况设置
至此,CLion可以顺利连接到服务器里的Docker啦