首页> DevOps> 一个简单的Docker前端实践

[文章]一个简单的Docker前端实践

收藏
0 501 0

镜像与容器

Docker 中有两个重要概念。

一个是容器(Container):容器特别像一个虚拟机,容器中运行着一个完整的操作系统。可以在容器中装 Nodejs,可以执行 npm install,可以做一切你当前操作系统能做的事情。

另一个是镜像(Image):镜像是一个文件,它是用来创建容器的。 

顺便一提,在 Docker 中,我们通常称你当前使用的真实操作系统为“宿主机”(Host) 

安装 Docker

安装 Docker 在你的电脑上就像安装 VS Code 一样简单

  • Mac:download.docker.com/mac/stable/

  • Windows:download.docker.com/win/stable/

  • Linux:get.docker.com/

运行 Docker

接下来我们搭建一个能够托管静态文件的 Nginx 服务器

容器运行程序,而容器哪来的呢?容器是镜像创建出来的。那镜像又是哪来的呢?

镜像是通过一个 Dockerfile 打包来的,它非常像我们前端的package文件。

创建文件

我们创建一个目录hello-docker,在目录中创建一个index.html文件,内容为:

    <h1>Hello</h1>

然后再在目录中创建一个DockerFile文件,内容为:  

    FROM nginx 

    COPY ./index.html /usr/share/nginx/html/index.html 

    EXPOSE 80

打包镜像

    进入命令行

    cd hello-docker/ # 进入刚刚的目录

    docker image build ./ -t hello-docker:1.0.0 # 打包镜像

docker image build ./ -t hello-docker:1.0.0的意思是:基于路径./(当前路径)打包一个镜像,镜像的名字是hello-docker,版本号是1.0.0。该命令会自动寻找Dockerfile来打包出一个镜像。

FROM nginx:基于哪个镜像

COPY ./index.html /usr/share/nginx/html/index.html:将宿主机中的./index.html文件复制进容器里的/usr/share/nginx/html/index.html 

EXPOSE 80:容器对外暴露80端口


运行容器

我们刚刚使用 Dockerfile 创建了一个镜像。现在有镜像了,接下来要根据镜像创建容器:

A、docker container create -p 2333:80 hello-docker:1.0.0 

B、docker container start xxx # xxx 为上一条命令运行得到的结果

A:创建基于hello-docker:1.0.0镜像的一个容器,使用-p来指定端口绑定——将容器中的80端口绑定在宿主机的2333端口。执行完该命令,会返回一个容器ID。

B:是启动这个容器 启动后,就能通过访问本机的2333端口来达到访问容器内80端口的效果了。

可以使用docker containers ls来查看当前运行的容器

当容器运行后,可以通过如下命令进入容器内部: 

docker container exec -it xxx /bin/bash # xxx 为容器ID 

原理实际上是启动了容器内的/bin/bash,此时你就可以通过bash shell与容器内交互了。就像远程连接了SSH一样。

至此,我们就利用Docker实现了纯静态资源部署了。我们甚至可以在DockerFile文件定义下载依赖,编译构建,打包部署。


DevOps
最近热帖
{{item.Title}} {{item.ViewCount}}
近期热议
{{item.Title}} {{item.PostCount}}