前言
使用一门技术,要先搞清楚这门技术适合的应用领域,然后搞清楚具体该怎么做,本文先讲述docker的特点和应用,然后介绍一些基本的命令,实现如何使用别人做的docker镜像来搭建自己的环境以及如何创建自己的镜像。
为什么要用docker?
在软件开发的过程中,在装环境的环节会浪费大量的时间,而docker可以把环境打包到镜像中,那么在换一台机子需要重新装环境的时候就只要打开镜像就可以了。另外,而避免了开发和测试过程中环境不一致导致的问题,简化项目的部署。
对于我来说,用docker就是用来装环境的,至于怎么开发,以前怎么开发现在还是怎么开发,没有什么改变,在用docker装完环境以后,docker的任务可就结束了。
经过几天的摸索,感觉docker还是应用于web开发相对合适,而对于其他的开发,就显得不那么灵活了。我已经找到可以使用专业版的PYCharm来添加docker容器中的环境,但是没找到怎么在vscode里调用docker的环境,而采用命令行的方式,每次把代码挂载到docker的数据卷上,然后进入容器启动代码,这样对于调试非常麻烦,所以其他领域中,不推荐采用docker。
docker的基本使用
软件的开发环境被封装在文件之中,这个静态的,不修改的文件叫做镜像,可以放在仓库中,供下一个环境需要安装时使用。所以当某一台设备需要安装某个环境时,就在仓库中找到对应的镜像,镜像下载到本地,然后就可以开始使用了。从仓库下载镜像的命令为:
docker pull <镜像名>
要查看本机中已经安装好的镜像有哪些,可以用命令:
docker images
有了镜像就有了环境,但是这个镜像是模板,只能下不能用,想要变成可以使用的环境,就要先创建容器,环境被装在容器里。创建容器的命令为:
docker run <镜像名> <容器里执行的命令>
其中,run命令后面可以附加很多的参数,常用的有:
- –name #指定容器的名字
- -d #后台运行
- -it #显示交互用的终端
- –rm #退出时删除容器
- -v #设置数据卷
- -p #设置对外的端口号
每次运行run命令都会自动生成一个容器,除非每次都添加–rm参数,之后要启动之前创建的容器,只要用命令start,就可以了,但是不知道之前的容器叫什么名字,这是就需要查看当前有哪些容器,根据对应的ID来启动容器,采用如下命令:
docker ps -a #列出所有的容器
docker ps #列出当前正在运行的容器
找出容器以后,就可以启动容器了,对于启动,停止和删除容器,可以采用如下的命令:
docker start <容器名或id> #启动容器
docker stop <容器名或id> #停止容器
docker rm <容器名或id> #删除容器
docker rmi <镜像名> #删除镜像
docker镜像的创建
前面讲的都是别人已经做好的环境镜像,我们直接从仓库里拉下来应用就好了,那如果是我们自己配置环境,然后做成镜像供自己和他人使用,那就需要创建自己的镜像,这时就要创建Dockerfile文件,书写内容如下:
#文件名是Dockerfile
From <image> #必须以某个镜像为基础镜像
ADD <源系统的文件路径> <容器的文件路径> #将源文件复制到容器中
EXPOSE <端口号> #暴露容器的端口用于和外界通信
RUN <command> #在镜像的顶层执行的命令,生成新的镜像
CMD <command> #在构建镜像时不执行,在用镜像构建容器时调用
然后运行build命令生成镜像,具体的见如下:
docker build -t <镜像名>
build之后的参数很多,具体如下:
- -t #设置镜像的名字
- -f #设置Dockerfile的文件路径
- -m #设置内存的最大值
docker应用中的问题
访问镜像的速度太慢,可以尝试重启一下docker服务,使用命令:
service docker restart
采用在后台运行程序,结果发现什么输出也没有,说明可能是出错了,那就把命令里的-d参数去掉,看看是什么错误信息。