docker build、docker run命令
当我们建立了dockerfile后(dockerfile的介绍可以看我的另外一篇博客Dockerfile讲解),就可以通过docker build
命令来创建docker image,有了docker image我们才能创建出docker instance,来运行我们的应用和服务。
它们三者的关系如下:
docker build
首先,我们需要准备一个容器的定义文件Dockerfile。
这里我直接用上一篇博客中使用到的Dockerfile:
FROM centos:7
# java
ADD openjdk-14_linux-x64_bin.tar.gz /usr/local
ENV JAVA_HOME /usr/local/jdk-14
# tomcat
ADD apache-tomcat-9.0.33.tar.gz /usr/local
WORKDIR /usr/local/apache-tomcat-9.0.33
EXPOSE 8080
CMD ["/bin/bash", "-C", "./bin/catalina.sh", "run"]
有了Dockefile,我们就可以通过docker build命令来构建一个docker的镜像文件。
docker build -t my_tomcat:1.0 -f ./Dockerfile ./
-t
: 指定构建后的image的名字和标签,我们一般把标签用来表示版本;
-f
: 指定用于构建docker镜像的文件名。如果你当前的构建路径下有Dockerfile文件,那么,-f参数是可以省略的,省略后,docker build
默认会查找构建路径下的Dockerfile同名文件;
最后的./
是指定构建的根路径。
运行上面的docker build
命令后,控制台会打印出构建信息日志。最后如果看到了如下提示,说明构建成功:
Successfully built d9eb3d85c7c6
Successfully tagged my_tomcat:1.0
另外,我们可以通过docker image list
命令来查看构建完成的镜像文件列表,应该可以找到刚才构建的my_tomcat:1.0,如下:
到此,我们的docker image就构建完毕了,接下来是通过镜像文件来让我们的应用跑起来。
docker run
这次我们先把docker run的命令放出来,然后分别介绍其中参数的意义。
docker run -it --name=my_tomcat_server -p 8080:8080 -v webapps:/usr/local/apache-tomcat-9.0.33/webapps/ my_tomcat:1.0
-it
: 表示分配一个tty同时将运行实例的信息在控制台中打印出来;
—-name
: 为实例取的名字;
-p
: 实例暴露出来的端口映射。暴露端口后,我们才能在宿主的电脑中访问容器的实例;
-v
: 用来映射宿主电脑中的文件到容器中,这样,我们就可以通过修改本地电脑中的文件,来间接的修改容器实例的行为;
-d
: 这个参数可以让我们的容器实例在后台启动和运行,而不会打印出容器实例的运行日志;
最后的my_tomcat:1.0
就是指定我们是基于哪个image来运行我们的容器实例,也就是我们在docker build
中指定的image的名字和版本。
运行上面的命令后,在控制台会看到tomcat启动的日志,启动成功后,我们就可以通过如下的URL来访问我们的tomcat服务器了:
http://localhost:8080/
这个时候,如果要部署我们的web应用到这个tomcat的容器中,我们只需要把的war包放置到之前在docker run
命令中的映射的webapps
目录中,就完成了web应用的部署。
最后,我们可以通过如下命令,来查看我们运行中的容器实例列表和状态,在列表中,我们就可以找到my_tomcat_server
,显示了相关的状态信息和映射信息 :
docker ps -a
借由如下的命令,我们就可以快速的启动/停止我们的容器实例:
docker start [CONTAINER ID]
docker stop [CONTAINER ID]
[CONTAINER ID] 在docker ps -a
列出的实例列表中可以找到。
到此,我们就算是比较简单的介绍完了docker build
、docker run
命令,其实这两个命令还有很多其他的参数和用法,后面有时间的时候,我会继续进行补充。