Docker 初学者指南
介绍
本教程介绍了 Docker 的基础知识,Docker 是一种将代码包装在包含代码、运行时、系统工具和系统库的完整文件系统中的容器。Docker 容器可确保代码在任何环境下都能以相同的方式运行 - 本质上就是一个代码孵化器。
该工具是目前市场上的热门产品。
让我解释一下Docker中使用的一些术语:
- dockerfile - 描述创建 Docker 映像的步骤的文件。它就像一份食谱,包含制作菜肴所需的所有原料和步骤。
- 图像- 虚拟机的快照,但更轻量。图像是容器的构建块。
- 容器- 相当于从快照创建虚拟机,但同样更轻量。容器本身运行应用程序。
这些术语是 Docker 世界中使用最多的术语,也是我将在本教程中使用的主要术语。
我还将介绍在Tomcat 服务器上运行的Java应用程序的创建和打包。
Kitematic 安装
Docker 只能在Linux上运行,但你可以使用Kitematic将它与Mac OS或Windows OS一起使用。Kitematic 创建了VirtualBox 机器,让你可以在其上运行 Docker。
您可以从这里https://kitematic.com/安装适用于 Mac OS 和 Windows 的 Kitematic ,对于 Linux,您可以输入以下命令:
curl -sSL https://get.docker.com/ | sh
如果您使用的是 Mac 或 Windows,我建议您不要一开始就使用 Kitematic 界面。如果您开始从命令行创建和操作所有内容,效果会更好。这样您将学到更多。
创建 Dockerfile
首先创建 Dockerfile,描述创建基础镜像的步骤。以下是示例(每行注释描述代码):
# All Dockerfiles need to start from a base Linux image.
# Docker has a hub (http://hub.docker.com) where you can see all Images submitted by users and
# where you can submit your own images. This is like a github for Docker images.
# We will start from java:8-jre. This is an ubuntu machine with java 8 installed on it.
# The keyword here is FROM.
FROM java:8-jre
# The KEYWORD ENV it let us specify some Linux environment variables
# Here we will set CATALINA_HOME (the home of the tomcat server)
ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
# RUN lets you run Linux commands inside the image.
# The \ symbol allows you to continue the command onto the next line
# The && allows you to string multiple commands together. This is preferred over having a RUN statement for each command
# Here we will navigate into /usr/local then download tomcat from the server
# then decompress it and rename it to /tomcat.
# The final path to tomcat will be /usr/local/tomcat.
RUN cd /usr/local/ \
&& wget http://mirrors.m247.ro/apache/tomcat/tomcat-8/v8.0.48/bin/apache-tomcat-8.0.48.tar.gz \
&& tar xzf apache-tomcat-8.0.48.tar.gz \
&& mv apache-tomcat-8.0.48/ tomcat/
# the EXPOSE command will tell your future container to expose 8080 port to the outside
# 8080 is the default port for tomcat.
EXPOSE 8080
# CMD sets the first command that will run when you create containers from the resulting image.
# Here, we will start tomcat once the container is called
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
创建图像
创建此 Dockerfile 后,您需要创建映像。Docker 将在构建过程中为 Dockerfile 中的每个步骤运行一个中间容器,最终创建一个可以导出和导入到其他系统的最终映像。您需要浏览目录到保存 Dockerfile 的位置。使用此命令行提示符:
docker build -t tomcat .
几个简单的定义:
docker build -此命令从 PATH 中的 Dockerfile 代码构建新镜像。在我们的例子中,PATH 是 '.'(当前文件夹)。选项-t指的是镜像的名称(或标签)(格式为 name:tag)。在本例中,只是名称“tomcat”。
执行完所有步骤后,您可以通过输入docker images来测试代码的功能,您将看到名为tomcat的镜像,该镜像与我们刚刚构建的 tomcat 镜像相同:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest 24b60eaf8397 7 seconds ago 334 MB
java 8-jre e44d62cf8862 8 months ago 311 MB
启动容器
您现在可以通过运行以下命令从图像启动容器:
docker run -p 8080:8080 --name=tomcat tomcat
让我们分解这个简单但又复杂的命令。
docker run——在新容器中运行命令。
-p 参数- 在容器的端口与主机之间建立连接。通过使用port1:port2,可以使port1与port2匹配。之后,您可以使用port2来访问容器内port1上打开的服务。因此,容器现在与外部环境相连。通常,使用某些端口运行的应用程序(如端口 8080 上的 tomcat、端口 3306 上的 mySQL、端口 80 上的 Apache 等)将被限制在容器中,无法与主机或外部网络通信。这意味着,如果您使用端口 3306 启动 mySQL 容器,则无法使用该容器外部的其他应用程序访问它。使用 -p 8080:8080选项允许容器的端口 8080 上的容器与主机的端口 8080 之间的通信。
--name= -为容器指定的名称。当您针对容器运行其他 docker 命令时,您将引用此名称。这里我们将容器命名为tomcat
tomcat -容器所基于的镜像。在此示例中,我们指定将刚刚创建的 Tomcat 镜像作为容器运行。
检查容器
运行容器后,您可以通过输入以下序列来检查它是否存在:
docker ps
此命令将显示所有正在运行的容器。如果此命令没有返回任何内容,则表示容器创建失败。
docker ps -a
上述命令显示所有容器(无论是否正在运行)。
更多
启动容器后,可以使用docker stop [name]停止它。 您可以通过输入docker start [name]重新启动容器。
另一个重要命令是docker exec ,它允许您在 Docker运行容器内运行命令。请注意,这仅适用于正在运行的容器,不适用于已停止的容器。
有关命令的完整列表,您可以转到Docker 参考资料。如果您对 Docker 容器感兴趣,我建议您阅读其中的许多命令。
我希望这个关于 Dockers 的简短教程对您有所帮助!
如果您有任何疑问,请在下方发表评论或在 Twitter 上关注我,@grvmariobyn。
谢谢你,马吕斯。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~