Docker运行项目/应用程序
# Docker运行项目/应用程序
在运行应用程序之前,我们需要将应用程序源代码下载到我们的计算机上。对于实际项目,通常将克隆存储库,此处是直接下载一个压缩后的项目进行操作的.
# 下载应用/项目
1.点击下载测试项目ZIP (opens new window)。解压ZIP文件。
2.使用Visual Studio Code或其他编辑器打开项目,如果项目根目录下没有一个Dockerfile 的文件,则新建此文件,没有.xxx
结尾,直接就是Dockerfile ,Dockerfile只是用于创建容器镜像的基于文本的指令脚本。如果有这个文件则跳过这个步骤。
# 构建应用程序的容器镜像
1.Dockerfile与package.json文件处于相同的文件夹,处于同级目录,新建后粘贴以下内容:
FROM node:12-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
2
3
4
5
2.构建容器镜像,在项目根目录打开终端,执行docker build
命令构建容器镜像:
docker build -t getting-started .
此命令使用Dockerfile构建新的容器镜像,您可能已经注意到下载了许多“镜像”,这是因为我们指示构建者要从node:12-alpine
镜像开始。但是,由于我们的计算机上没有该镜像,因此需要下载该镜像。
下载镜像后,我们将其复制到应用程序/项目中并用于yarn
安装应用程序的依赖项,该CMD
指令指定从该镜像启动容器时要运行的默认命令。
最后,-t
标志标记我们的镜像,可以简单地将其视为最终镜像的易于理解的名称,由于我们将镜像命名为getting-started
,因此在运行容器时可以引用该镜像。
将.
在docker build
最后是命令告诉 Docker should应该寻找Dockerfile
在当前目录。
# 启动应用程序容器
1.使用docker run
命令启动容器,并指定我们刚刚创建的镜像的名称:
//简写
docker run -dp 3000:3000 getting-started
2
原命令: docker run -d -p 3000:3000 docker/getting-started
还记得-d
和-p
标志吗?我们正在“分离”模式下(在后台)运行新容器,并将主机的端口3000到容器的端口3000之间创建映射。如果没有端口映射,我们将无法访问该应用程序。
2.运行之后,就可以打开Web浏览器到访问http:// localhost:3000 (opens new window) 的地址。您应该看到我们运行的应用程序!
至此一个新的项目就跑起来了.
如果快速浏览Docker Dashboard,您应该会看到对应的容器在运行,端口为3000的那个
要想将创建的镜像共享,则需要Docker注册表,默认注册表是Docker Hub,这是我们使用过的所有镜像的来源。
要推送镜像,我们首先需要在Docker Hub上创建一个仓库。
# 创建仓库
- 点击打开 Docker Hub (opens new window) 网站并登录。
- 登录后单击创建存储库按钮。
3.输入仓库名称,选择公开或私有,点击创建
4.创建完成后就进入到新建的仓库了
进入仓库后可以看到右侧的
Docker commands
命令, 这个命令的是你需要运行该命令才能推送到这个仓库,现在复制命令到cmd执行docker push marklin9/getting-started:tagname
1此时若直接回车会提示
The push refers to repository [docker.io/marklin9/getting-started] An image does not exist locally with the tag: marklin9/getting-started
1
2这是应为push时没有查找到
marklin9/getting-started
的镜像,此时需要标记我们已构建的现有镜像名先登陆Docker Hub,在命令行输入` docker login -u marklin9, 输入密码,提示登录成功。
E:\Pro\Docker\app>docker login -u marklin9 Password: Login Succeeded
1
2
3登录后再次执行
docker tag getting-started marklin9/getting-started
创建标签,然后再执行推送命令,因为推送时没有指定推送到哪个标签,所有默认会选择最后创建的标签进行推送。E:\Pro\Docker\app>docker tag getting-started marklin9/getting-started E:\Pro\Docker\app>docker push marklin9/getting-started The push refers to repository [docker.io/marklin9/getting-started] 84209d609ad4: Pushing [====================> ] 34.91MB/85.22MB 1c47c11619a7: Pushed 1838377223c6: Pushed 6693766656f0: Pushed ab2b28314466: Pushed 62d0a87660b8: Mounted from library/node 0fcbbeeeb0d7: Mounted from library/node
1
2
3
4
5
6
7
8
9
10
11等待推送成功即可。