高品质网站设计,漏惹网站做,软件编程工具,软件开发流程有哪些步骤文章目录 环境示例准备构建启动/停止容器更新应用分享应用 参考 环境
RHEL 9.3Docker Community 24.0.7
示例
准备
从github克隆 getting-started-app 项目#xff1a;
git clone https://github.com/docker/getting-started-app.git查看项目#xff1a;
➜ getting-s… 文章目录 环境示例准备构建启动/停止容器更新应用分享应用 参考 环境
RHEL 9.3Docker Community 24.0.7
示例
准备
从github克隆 getting-started-app 项目
git clone https://github.com/docker/getting-started-app.git查看项目
➜ getting-started-app git:(main) tree
.
├── package.json
├── README.md
├── spec
│ ├── persistence
│ │ └── sqlite.spec.js
│ └── routes
│ ├── addItem.spec.js
│ ├── deleteItem.spec.js
│ ├── getItems.spec.js
│ └── updateItem.spec.js
├── src
│ ├── index.js
│ ├── persistence
│ │ ├── index.js
│ │ ├── mysql.js
│ │ └── sqlite.js
│ ├── routes
│ │ ├── addItem.js
│ │ ├── deleteItem.js
│ │ ├── getItems.js
│ │ └── updateItem.js
│ └── static
│ ├── css
│ │ ├── bootstrap.min.css
│ │ ├── font-awesome
│ │ │ ├── all.min.css
│ │ │ ├── fa-brands-400.eot
│ │ │ ├── fa-brands-400.svg#fontawesome
│ │ │ ├── fa-brands-400.ttf
│ │ │ ├── fa-brands-400.woff
│ │ │ ├── fa-brands-400.woff2
│ │ │ ├── fa-regular-400.eot
│ │ │ ├── fa-regular-400.svg#fontawesome
│ │ │ ├── fa-regular-400.ttf
│ │ │ ├── fa-regular-400.woff
│ │ │ ├── fa-regular-400.woff2
│ │ │ ├── fa-solid-900.eot
│ │ │ ├── fa-solid-900.svg#fontawesome
│ │ │ ├── fa-solid-900.ttf
│ │ │ ├── fa-solid-900.woff
│ │ │ └── fa-solid-900.woff2
│ │ └── styles.css
│ ├── index.html
│ └── js
│ ├── app.js
│ ├── babel.min.js
│ ├── react-bootstrap.js
│ ├── react-dom.production.min.js
│ └── react.production.min.js
└── yarn.lock10 directories, 40 files构建
在项目根目录下创建 Dockerfile 文件如下
# syntaxdocker/dockerfile:1FROM node:18-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD [node, src/index.js]
EXPOSE 3000其中
# syntaxdocker/dockerfile:1 指定语法FROM node:18-alpine 指定base imageWORKDIR /app 指定容器里的当前目录COPY . . 从宿主机复制文件/目录到容器里RUN yarn install --production 在容器里运行命令CMD [node, src/index.js] 在启动容器时默认运行的命令注意不是构建时运行EXPOSE 3000 开放端口
构建
docker build -t getting-started .其中
-t 给image添加名字和tag其格式为 -t name:tag 其中tag是可选的其默认值是 latest. Dockerfile 的路径
查看image
➜ getting-started-app git:(main) ✗ docker images get*
REPOSITORY TAG IMAGE ID CREATED SIZE
getting-started latest a6895c5f1a96 28 minutes ago 223MB启动/停止容器
docker run -dp 127.0.0.1:3000:3000 getting-started-d --detach 在后台运行容器-p --publish 宿主机和容器之间的端口映射格式为 host:container host 宿主机地址container 容器端口
查看容器
➜ getting-started-app git:(main) ✗ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d893e30dba55 getting-started docker-entrypoint.s… 36 minutes ago Up 36 minutes 127.0.0.1:3000-3000/tcp crazy_wiles打开浏览器访问 http://localhost:3000 注意只能用 http://localhost:3000 或者 http://127.0.0.1:3000 访问不能用IP地址 http://192.168.1.128:3000 访问也不能在其它机器用 http://192.168.1.128:3000 访问因为设置了只有网络回环有效。若想在别的机器也能访问需要设置为 -p 0.0.0.0:3000:3000 。
添加一些item如下 停止容器
docker stop container ID现在用 docker ps 命令看不到该容器了不过 docker ps -a 还能看到
➜ getting-started-app git:(main) ✗ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d893e30dba55 getting-started docker-entrypoint.s… 46 minutes ago Exited (0) About a minute ago crazy_wiles
......删除容器
docker rm container ID现在用 docker ps -a 命令也看不到该容器了。
更新应用
假设现在源代码有了一些修改比如打开 src/static/js/app.js 文件找到下面这一行代码 p classNametext-centerNo items yet! Add one above!/p将其修改为 p classNametext-centerYou have no todo items yet! Add one above!/p保存退出然后重新构建
docker build -t getting-started .启动容器
docker run -dp 127.0.0.1:3000:3000 getting-started注意如果刚才的旧容器仍然在运行则需要先把旧容器停止否则这一步会失败因为3000端口被占用了。
打开浏览器访问 http://localhost:3000 可见修改已经生效了。
分享应用
可以把构建好的image push到registry。
打开 http://hub.docker.com 登录 点击“Create repository”按钮 在Repository Name处输入 getting-started 然后点击“Create”按钮 现在repository就创建好了 如图上所示可用以下命令把本地image push到repository
docker tag image:tag new-repo:tag
docker push new-repo:tag现在我们来push一下试试。
首先要在命令行登录Docker Hub
docker login -u ID按提示输入密码。
注并没有指定registry默认值就是Docker Hub。
查看本地image
➜ getting-started-app git:(main) ✗ docker images get*
REPOSITORY TAG IMAGE ID CREATED SIZE
getting-started latest a89b3880eee8 36 minutes ago 223MB通过 docker tag 命令打上正确的tag
docker tag getting-started ID/getting-started注没有指定tag默认是 latest 。
然后再查看本地image
➜ getting-started-app git:(main) ✗ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kaiding1/getting-started latest a89b3880eee8 39 minutes ago 223MB
getting-started latest a89b3880eee8 39 minutes ago 223MB
......现在我们就可以push image了
docker push ID/getting-started接下来我们使用 Play with Docker 来测试一下刚刚push的image。
打开浏览器访问 http://play-with-docker.com 点击“Login”按钮选择“Docker”弹出登录页面输入Docker Hub的用户名和密码。
进入主界面后点击左边的“ADD NEW INSTANCE”在右边会出现一个终端。如下图所示 在终端里启动刚才push的image
docker run -dp 0.0.0.0:3000:3000 ID/getting-started接下来点击页面上的“OPEN PORT”按钮输入“3000”或者直接点击页面上的“3000”链接会打开一个新页面 至此我们在一个全新的环境上部署了刚刚push的image测试其工作正常。
参考
https://docs.docker.com/get-started/