草庐IT

Docker在Pycharm平台上的部署

生命吹起轻叹 2023-10-24 原文

本篇博客主要介绍了docker的配置,以及利用Pycharm作为开发平台连接远程服务器进行开发,在中途遇到了一些问题,作为记录且方便有同样问题的同学进行参考。

docker的安装及开放

首先在ubuntu上安装docker,命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

由于服务器上已预先安装好docker,在此不详述,具体可查docker菜鸟教程。安装完毕后,我们就可以创建自己所需要的镜像。

服务器上安装好docker后,我们需要进行远程连接,有两种方法:开放端口和ssh连接。这里开启了docker 2375端口进行连接,步骤可见docker-2-远程,ssh连接步骤可见该文章。如果使用ssh进行连接,需要手动地开启容器,相对而言,开放端口让pycharm连接,则省去了这一手动环节,只需要将镜像告诉给pycharm,它便会在运行程序前自动创建一个容器。

docker在Pycharm上的部署

完成以上步骤后,就可以在pycharm上进行配置连接了。

  • 打开pycharm设置

    该步完成后,我们就完成了对docker的连接。

  • 接下来需要对python的服务器进行配置。

顺利的话,我们就可以看到解释器所包含的package了,需要注意的时,我们并不能在pycharm中手动安装包,这一点之后会再次提到。

在设置好解释器后,可能会发生pycharm无法加载远程服务器包的情况,代码中的包可能也会有红色波浪线,但仍然可以正常运行,这可能是因为服务器的镜像与pycharm版本不兼容的原因,后者无法更新skeletons。

  • 然后我们需要进行文件同步设置
    打开Tools -> Deployment -> Configuration

  • 运行配置
    最后我们设置运行py文件。
    首先将文件上传到服务器:Deployment -> Upload
    然后Run -> Edit Configuration

然后点开dockercontainer setting,设置host(服务器主机)和container(容器)的映射。

设置完成后,点击运行,就可以看到运行结果。为了方便,可以设置保存本地文件时自动上传到服务器项目中,

docker环境安装和使用gpu的问题

然而在使用docker的过程中,仍然遇到了问题:

  • 在docker的容器中安装包,却无法在pycharm中更新。
  • docker默认不使用gpu。

针对于第一个问题,我了解到Pycharm对docker环境解释器的加载只和镜像有关,与容器没有关系,只要提供镜像,镜像里的环境就能加载,手动创建的容器其实并不能影响镜像环境。

因此,这会导致一个问题,当我们需要在已有的镜像中安装新的package时,直接在容器中添加,对于Pycharm的解释器是没有用的,并不能影响当前的环境。因此,我们需要手动将添加包,修改后的容器保存为新的镜像,重新添加Python解释器,这样Pycharm才能加载到新的环境。

针对于第二个问题,pycharm在运行程序时,会自动创建一个容器并在结束时停止该容器。但docker的容器其实是默认不使用gpu资源的,gpu在容器中也是不可见的状态。我们可以在docker run命令中加上"–gpus all"或"runtime=nvidia",这样就可以在容器中查找到gpu的信息了。

这样我们就可以手动开启一个能使用gpu的容器。
为了能够让Pycharm也能够自动创建一个可以使用gpu的容器,我们需要在设置中添加参数:

这样,我们就可以使用gpu来计算了。


参考文章

Docker-3-Pycharm
Pycahrm中添加docker解释器
docker容器获取gpu的全部计算资源

有关Docker在Pycharm平台上的部署的更多相关文章

  1. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  2. ruby-on-rails - Ruby on Rails 可以部署在 Azure 网站上吗? - 2

    我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/

  3. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  4. jenkins部署1--jenkins+gitee持续集成 - 2

    前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon

  5. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  6. Ruby,使用包含 TK GUI 的 ocra 部署一个 exe - 2

    Ocra无法处理需要“tk”的应用程序require'tk'puts'nope'用奥克拉http://github.com/larsch/ocra不起作用(如链接中的一个问题所述)问题:https://github.com/larsch/ocra/issues/29(Ocra是1.9的"new"rubyscript2exe,本质上它用于将rb脚本部署为可执行文件)唯一的问题似乎是缺少tcl的DLL文件我不认为这是一个问题据我所知,问题是缺少tk的DLL文件如果它们是已知的,则可以在执行ocra时将它们包括在内有没有办法知道tk工作所需的DLL依赖项? 最佳答

  7. ruby-on-rails - NameError(未初始化常量 Unzipper::Zip)但仅在 Heroku 部署(Rails)上 - 2

    我有一个类unzipper.rb,它使用Rubyzip解压文件。在我的本地环境中,我可以成功解压缩文件,而无需使用require'zip'明确包含依赖项但是在Heroku上,我得到一个NameError(uninitializedconstantUnzipper::Zip)我只能通过使用明确的require来解决问题:为什么这在H​​eroku环境中是必需的,但在本地主机上却不是?我的印象是Rails自动需要所有gem。app/services/unzipper.rbrequire'zip'#OnlyrequiredforHeroku.Workslocallywithout!class

  8. ruby - Sinatra + Heroku + Datamapper 使用 dm-sqlite-adapter 部署问题 - 2

    出于某种原因,heroku尝试要求dm-sqlite-adapter,即使它应该在这里使用Postgres。请注意,这发生在我打开任何URL时-而不是在gitpush本身期间。我构建了一个默认的Facebook应用程序。gem文件:source:gemcuttergem"foreman"gem"sinatra"gem"mogli"gem"json"gem"httparty"gem"thin"gem"data_mapper"gem"heroku"group:productiondogem"pg"gem"dm-postgres-adapter"endgroup:development,:t

  9. ruby-on-rails - 私有(private) gem 没有安装在 docker 中 - 2

    我正在尝试使用docker运行一个Rails应用程序。通过github的sshurl安装的gem很少,如下所示:Gemfilegem'swagger-docs',:git=>'git@github.com:xyz/swagger-docs.git',:branch=>'my_branch'我在docker中添加了keys,它能够克隆所需的repo并从git安装gem。DockerfileRUNmkdir-p/root/.sshCOPY./id_rsa/root/.ssh/id_rsaRUNchmod700/root/.ssh/id_rsaRUNssh-keygen-f/root/.ss

  10. ruby-on-rails - 在服务器上没有互联网访问权限的 Capistrano 部署 - 2

    如何使用Capistrano将Rails应用程序部署到无法访问外部网络或存储库的生产或暂存服务器?我已经设法完成部署的一半,并意识到Capistrano没有在我的本地机器上下载gitrepo,但它首先连接到远程服务器并尝试在那里下载Git存储库。我希望有一个类似Javaee的构建系统,其中创建可交付成果并将该可交付成果发送到服务器。就像您构建.ear文件并将其部署到您想要的任何服务器上一样。显然在RoR中,你被迫(据我所知)在该服务器上构建应用程序,在那里创建一个gem存储库,在那里克隆最新的分支等等。有什么方法可以将准备运行的包发送到远程服务器吗? 最佳答

随机推荐