Docker部署项目指南
Docker简介
这篇文章是新手向的Docker使用文章。所以现在介绍一下Docker吧。根据Docker官方的说法:
Docker helps developers build, share, run, and verify applications anywhere — without tedious environment configuration or management.
简单来说就是一个帮助开发者构建、运行和分享应用的容器,它可以让你无需考虑在不同的机器上运行的时候的环境配置问题。想象一下你自己写好的一个软件,但是到了别人的计算机无法运行,又找不到环境配置哪里没配好,那个情景有多难受。这时候,如果使用了Docker,你就会明白什么叫纵享丝滑部署。
Docker安装
这里的Docker安装指的是安装Docker-CE(Community Edition)。根据Docker官方指导,有四种安装方法,这里介绍两种。
- Docker Desktop
 
主要适用于带有桌面的计算机,如Windows,Ubuntu桌面等。安装了DockerDesktop就相当于安装了Docker-CE, Docker-CLI等一系列工具。对于WSL,只需要在Windows主系统安装DockerDesktop并勾选适用WSL。
- 安装包安装(apt、yum等)
 
大陆用户推荐使用阿里云镜像安装,根据指导执行对应的shell脚本即可。
如果安装过程出现了任何问题,都可以阅读上面的官方指导链接里面的内容寻找解决方法。
Docker基本使用
先搞清楚Docker的三个概念:镜像、容器和进程:
- 镜像(Image):Docker镜像是一个只读的模板,它包含了运行容器所需的所有文件系统、应用程序代码、依赖项和配置信息。镜像是用于创建Docker容器的基础。
 
查看镜像:
1  | docker images  | 
删除镜像:
1  | docker rmi <镜像名或id>  | 
创建镜像后面详细说。
- 容器(Container):Docker容器是从Docker镜像创建的运行实例。容器是独立且轻量级的,它包含了运行应用程序所需的所有内容,包括文件系统、代码、依赖项和配置。这一层的操作是最重要的,只有熟悉容器的操作,才能用好Docker。
 
查看容器:
1  | docker ps  | 
查看容器端口映射:
1  | docker port <容器名>  | 
从镜像创建容器并运行:
1  | docker run <镜像名>  | 
删除容器:
1  | docker rm <容器名字或id>  | 
重启容器:
1  | docker restart <容器名或id>  | 
进入容器内部:
1  | docker exec -it <容器ID或名称> /bin/bash  | 
- 进程(Process):在Docker容器中运行的应用程序被视为一个或多个进程。容器内部的进程与宿主机的进程隔离,它们在自己的命名空间中运行,并且只能访问容器内部的资源。
 
部署Docker镜像
部署Docker Hub镜像
Docker Hub是一个面向Docker开发者和用户的公共注册表服务。它是一个集中存储、分享和管理Docker镜像的平台。我们可以从Docker Hub中拉取镜像,也可以上传自己的创建的镜像。
下面将以部署Redis为例,讲一下如何部署他人已经上传的镜像。上文说到过,要创建一个容器必须要有镜像,所以第一步就是将容器镜像从docker hub上拉下来:
1  | docker pull redis  | 
具体的指令一般都会在镜像对应页面的右上角:

执行完成之后,可以用docker images指令查看本地镜像。如果有对应的镜像,那就可以run了。一般来说,Docker hub上有对应的启动和配置教程,细心阅读即可。按照默认运行,设置端口映射可以执行如下指令:
1  | docker run --name redis -p 6379:6379 -d redis  | 
然后ps一下看看有没有成功运行就可以了。总的来说,部署他人的容器镜像比较简单,耐心阅读指导就可以了。
自己创建镜像部署
自己创建镜像需要编写Dockerfile,定义和描述如何创建Docker镜像。例如,创建一个Spring boot镜像的Dockerfile可以写成如下形式:
1  | FROM openjdk:17  | 
下面是Dockerfile中的一些常见配置:
FROM:定义基础镜像,确定构建的起点
WORKDIR:容器中的工作目录
RUN、ADD、COPY:安装软件包,依赖项和文件到镜像中
EXPOSE:配置端口
ENV:配置容器中的环境变量
CMD:启动容器时执行的指令
编写完Dockerfile之后,将Dockerfile和打包完成的jar包放在新建目录下,然后执行如下指令:
1  | docker build -t vshop .  | 
-t指定了打包的名字和标签,. 表示在当前目录下寻找Dockerfile并且打包。打包完成之后,使用docker images查看镜像即可。上面的案例仅作一个简单的示例,事实上Dockerfile大部分都是不通用的,例如将Spring boot项目打包成为war包然后运行在Tomcat容器中,则需要进行两层构建,第一层基于Tomcat构建基础镜像,第二层构建最终的镜像。当需要打包不同类型的项目的时候,可以查阅官方文档或者自行Google一下。
发布Docker镜像
前面介绍过Docker Hub了,现在讲讲如何将自己构建的Docker项目发布到Docker Hub上。首先需要自己注册一个Docker账号并且执行一下docker login登录Docker。然后的操作就和Git推送到GitHub差不多。
使用docker tag给镜像添加标签:
1  | docker tag <镜像ID> <用户名>/<仓库名>:<版本号>  | 
然后直接push到Docker Hub即可:
1  | docker push <用户名>/<仓库名>:<版本号>  | 
当push完成以后,在另外一台电脑(如服务器)上运行这个项目就回到了部署那一部分的内容了。现在你已经掌握了Docker构建和部署项目的基本流程了。