文章目錄
-
- 需求
- Clion連接配接伺服器内的Docker
-
- Docker
- CLion
- Docker内配置HElib庫
- 參考
需求
- HElib庫是用C++編寫的同态加密開源庫,一般在Linux下使用
- 為了不混淆生産環境,使用Docker搭建HElib運作環境
- 本地在Windows下開發,使用的IDE為Clion,本地無HElib運作環境
- 綜上,需求是,讓CLion連接配接搭建好HElib的Docker上,在本地CLion中編寫代碼,在遠端伺服器的Docker裡運作代碼
Clion連接配接伺服器内的Docker
Docker
- Docker安裝略
- Docker建立容器
sudo docker run -it --name helib -p 12022:22 ubuntu:20.04 bash
指令解釋:–name指定容器名字;-p指定端口,用于伺服器端口映射到Docker内端口,由于後續需要通過ssh連接配接Docker容器,故映射到22端口;使用的鏡像為ubuntu:20.04,鏡像随意;bash指定運作終端
PS. 可以加個-v參數指定挂載目錄
- 進入Docker後,先退出然後再重新開機進入(想讓容器一直運作不關閉我就這麼幹的)
在容器内:exit # 退出後容器也會退出 sudo docker start helib # 啟動容器 sudo docker exec -it helib bash # 進入容器,之後再退出容器也不會退出了
- 安裝ssh等服務
apt update apt install ssl openssh-server -y echo "PermitRootLogin yes" >> /etc/ssh/sshd_config service ssh restart passwd root # 設定Docker容器的root密碼,用于後續連接配接
- 測試連接配接
- 在Docker外,用ssh測試連接配接:
,輸入Docker的root密碼,成功如下:ssh [email protected] -p 12022
Clion連接配接Docker,使用HElib庫
- 在Docker外,用ssh測試連接配接:
CLion
- Settings -> Build… -> Toolchains -> ‘+’ -> Remote Host
Clion連接配接Docker,使用HElib庫 - 可以自定義名字,然後設定連接配接
Clion連接配接Docker,使用HElib庫 - 按下圖填寫,注意port應該填寫的是Docker對外映射的端口,我這裡就應該是12022,而不是22,測試連接配接沒問題就可以了
Clion連接配接Docker,使用HElib庫 - 設定CMake:Settings -> Build… -> CMake,指定toolchains就行
Clion連接配接Docker,使用HElib庫 - 另外,如果想把代碼啥的也同步到Docker上,則添加SFTP:Settings -> Build… -> Deployment,添加SFTP,設定Mappings,見下圖: 至此,CLion可以順利連接配接到伺服器裡的Docker啦
Clion連接配接Docker,使用HElib庫
Docker内配置HElib庫
參考官方文檔:HElib/INSTALL.md
- apt安裝依賴:g++, cmake這些
- 克隆項目,在Docker内或者在Docker外對應挂載的目錄下克隆都行
- 按照官網教程編譯後,在build路徑下會得到一個目錄
,建議将其放至全局變量裡:helib_pack
,這樣在編譯自己寫的程式時不需要指定路徑,在Clion裡也能檢測到這些依賴cp -r helib_pack /usr/local
- 測試部分參考:HElib/examples/README.md
- 自己編寫程式時,注意CMakeList.txt的寫法,注意檔案路徑是否寫對,自己編寫的程式路徑不同,CMakeList就需要修改對應的路徑,下面是我的CMakeList,大概能改的地方圈出來了
Clion連接配接Docker,使用HElib庫
參考
以clion為例記錄一次基于docker環境配置開發-CSDN