关于Docker搬运项目,不再因配环境滚雪球那点事【Github】【Docker】【Conda】
文章目录
1、道道苦水
项目的迁移,或许是配置不够,往更好的机器上迁移;或许是团队需求,需要在多个机器上都要有这个项目各自做不同的尝试,往往不情愿,为啥?重新配环境,谁配谁知道。运行5min,环境配置1h,不同机器不同问题,版本冲突问题,各种项目之外问题。。学习Docker的初衷就是搬运项目,并且不再受运行环境不一致的折磨。
2、Docker
流程
以下流程会稍微偏向于
Python
环境。
2.1、For New Project
创建一个容器
方案①
选个镜像
docker images
这里本地没有镜像,拉取
ubuntu
,看你OS需求。docker pull ubuntu
创建容器
docker create --name mycontainer ubuntu:latest
这个命令将创建一个名为
mycontainer
的容器,基于ubuntu:latest
镜像。但是这个命令不会启动容器,它只是创建了一个处于停止状态的容器。
docker ps -a
这个命令将列出所有的容器,包括运行中的和停止的容器。这里通过这个命令确认已经创建了一个名为
mycontainer
的容器。
启动镜像
docker start mycontainer
这个命令会创建并启动一个新的容器,同样基于
ubuntu:latest
镜像,但是与第一个命令不同的是,这个命令在容器启动后会进入容器的交互终端(因为使用了-it
选项)。默认情况下,如果容器上没有运行任何任务,docker 容器将立即退出。
方案②
选个镜像
docker images
这里本地没有镜像,拉取
ubuntu
,看你OS需求。docker pull ubuntu
创建并启动
docker run -it --name mycontainer ubuntu:latest
存入项目、环境
docker cp demo.txt mycontainer:/root/
默认情况下,如果容器上没有运行任何任务,docker 容器将立即退出。
想停留住可以这样 :
docker start mycontainer & docker exec -it mycontainer bash
制作本地镜像
docker commit mycontainer mynewimage:tag
这将名为
mycontainer
的容器创建一个新的镜像,并命名为mynewimage
,标签为tag
。
推送到远端镜像仓库
docker login
docker push username/repository:tag
username/repository:tag
是远程仓库中的目标位置。
国内镜像仓库(推荐阿里云,会有详细的根据你仓库定制的登陆,拉取,推送命令,更多的示例代码)
仓库名称 | 仓库地址 | 说明 |
网易 | https://hub-mirror.c.163.com/ | |
DaoCloud | https://f1361db2.m.daocloud.io | HTTPS |
DaoCloud | http://f1361db2.m.daocloud.io | HTTP |
阿里云 | https://xxx.mirror.aliyuncs.com | xxx为用户标志,需要用户登录阿里云创建自己的镜像加速器。 |
中国科学技术大学 | https://docker.mirrors.ustc.edu.cn/ |
2.2、For Existed Project
远端拉取项目
docker pull mynewimage:tag
运行容器
2.3、Docker
搭配Github
、Conda
使用
参照2.1、 2.2、
但容器中仅存conda
虚拟环境,项目从github
拉取
优点:项目用github
管理的优点 +conda
虚拟环境的优点
当容器不再需要运行或者需要释放资源时,可以将其停止,停止容器并不会删除容器。
3、练习
https://labs.play-with-docker.com/
如果输入比较卡,敲完了粘进去执行。😀
建议找台服务器或者本地虚拟机会比较好。