近期将vps的所有服务都迁移到docker上了,在实际部署中,对比将服务安装到系统和docker,确实docker有一定优势,但也有些坑踩的莫名其妙。这篇文章总结一下
从小白的角度看,docker有两个优势。一是操作统一,都是针对镜像、容器等,翻来覆去就是那么几个命令,不用去考虑由于系统、软件版本的不同引起的操作变化,再加上建目录啊之类的,相对而言操作命令行的学习门槛降低了。二是有自动化部署,特别是docker compose文件,可读性强,比一键脚本更容易识别和修改,网上很多项目都提供了docker-compose.yaml文件,只需要下载这个文件,一条命令就可以完成部署。
docker最重要的概念是镜像和容器。镜像就是开发者打包好的项目发布形式,只读,需要从docker hub等镜像中心将软件镜像拉取到本地,用于指导如何生成容器并运行。容器就是镜像在本地运行后生成的轻虚拟机。
docker pull IMAGE_NAME这条命令是拉取镜像到本地,但不会直接部署容器
docker run -d --name CONTAINER_NAME --restart $OPTION -p HOST_PORT:CONTAINER_PORT -v [<volume-name>:]<mount-path> IMAGE_NAME这是运行镜像的命令,一条一条来解释。
run是docker的启动镜像创建容器并运行的命令
-d是选项,意思是容器创建在后台运行。
--name CONTAINER_NAME是选项,意思是指定生成的容器名称。一些docker命令需要指明容器名称或ID,容器创建时系统会自动生成一个ID,所以这个选项不影响容器运行。
--restart $OPTION是选项,意思是容器的重启行为,有四个选项,分别是no、on-failure[:max-retries]、always、unless-stopped,我一般用unless-stopped,意思是除非手动停止,否则停止后重新运行。
-p HOST_PORT:CONTAINER_PORT是选项,意思是将容器的某个端口暴露给本机的某个端口,实现访问本机端口即访问在容器端口提供的服务。冒号的左边是本机端口,右边是容器需要暴露的端口,可以不一致。
-v [<volume-name>:]<mount-path>是选项,意思是将本机某个文件或目录或自定义卷挂载为容器内指定文件或目录,用于将容器运行所需的配置文件传递进容器,或将容器运行生成的数据传递到本机。
IMAGE_NAME是开发者指定镜像名称,docker运行时会检查镜像是否在本地,如果本地无此镜像会自动到docker hub拉取镜像。
docker ps这条命令是显示正在运行的容器信息,如果加上-a就可以显示所有容器,包括未运行的容器。
docker start/stop CONTAINER_NAME/ID启动或停止指定容器
docker rm CONTAINER_NAME/ID删除指定容器
docker rmi IMAGE_NAME删除指定镜像
本文作者:尽力局副局长
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!