Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_cloud_native
提交
fe1f9bd6
S
skill_tree_cloud_native
项目概览
CSDN 技术社区
/
skill_tree_cloud_native
通知
14
Star
3
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_cloud_native
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
fe1f9bd6
编写于
2月 21, 2022
作者:
F
feilong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
complete first section
上级
f94fc4da
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
228 addition
and
0 deletion
+228
-0
data/1.云原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_create_repo.md
...原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_create_repo.md
+126
-0
data/1.云原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_image.jpg
data/1.云原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_image.jpg
+0
-0
data/1.云原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_image.md
data/1.云原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_image.md
+53
-0
data/1.云原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_image_push.jpg
...原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_image_push.jpg
+0
-0
data/1.云原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_image_tag.jpg
...云原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_image_tag.jpg
+0
-0
data/1.云原生初阶/1.容器(docker)/5.使用docker运行服务/docker_pull.jpg
data/1.云原生初阶/1.容器(docker)/5.使用docker运行服务/docker_pull.jpg
+0
-0
data/1.云原生初阶/1.容器(docker)/5.使用docker运行服务/pull_and_run.md
data/1.云原生初阶/1.容器(docker)/5.使用docker运行服务/pull_and_run.md
+49
-0
data/1.云原生初阶/1.容器(docker)/5.使用docker运行服务/run-with-port-map.jpg
...1.云原生初阶/1.容器(docker)/5.使用docker运行服务/run-with-port-map.jpg
+0
-0
data/1.云原生初阶/1.容器(docker)/5.使用docker运行服务/test-request.jpg
data/1.云原生初阶/1.容器(docker)/5.使用docker运行服务/test-request.jpg
+0
-0
未找到文件。
data/1.云原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_create_repo.md
0 → 100644
浏览文件 @
fe1f9bd6
# Build docker(1): 创建仓库
请在你自己的
[
gitcode.net
](
https://gitcode.net
)
上创建一个仓库,命名为
`cloud_native_hello_py`
,目录结构如下:
```
bash
.
├── .dockerignore
├── .gitignore
├── Dockerfile
├── README.md
└── src
├── main.py
└── requirements.txt
```
其中 main.py 文件编写一个 flask 的服务代码:
```
bash
# -*- coding: UTF-8 -*-
import sys
from flask import Flask
from flask_cors import CORS
from gevent import pywsgi, monkey
monkey.patch_all
()
app
=
Flask
(
__name__,
static_folder
=
'web'
,
static_url_path
=
''
)
def after_request
(
resp
)
:
resp.headers[
'Access-Control-Allow-Origin'
]
=
'*'
return
resp
app.after_request
(
after_request
)
app.config[
'JSON_AS_ASCII'
]
=
False
CORS
(
app,
supports_credentials
=
True
)
@app.route
(
'/'
,
methods
=[
'GET'
])
def home
()
:
return
"<p>Hello World!</p>"
if
__name__
==
'__main__'
:
host
=
'0.0.0.0'
port
=
1024
print
(
'@启动服务...'
)
print
(
"@本地调试:http://{}:{}"
.format
(
host, port
))
if
len
(
sys.argv
)
>
1 and sys.argv[1]
==
'debug'
:
app.run
(
host
=
host,
port
=
port
)
else
:
server
=
pywsgi.WSGIServer
((
host, port
)
, app
)
server.serve_forever
()
```
其中 requirements.txt 指定了依赖的 Python 包
```
bash
Flask
==
2.0.3
flask_cors
==
3.0.10
gevent
==
21.1.2
```
其中 .gitignore 配置git仓库的忽略项目,而.dockerignore 则配置了构建 Docker 镜像时的忽略项
```
bash
.git
.vscode
.idea
.DS_Store
__pycache__
*
.pyc
*
.pyo
*
.pyd
.Python
*
.zip
*
.out
env
```
最后,我们在 Dockerfile 里编写待构建的容器镜像的配置信息
```
bash
# 该镜像从官方 python:3.8 镜像继承
FROM python:3.8
# 创建 App 目录
WORKDIR /app
# 拷贝 Python 依赖配置文件
COPY src/requirements.txt ./
# 安装 Python 依赖包
RUN pip
install
-r
requirements.txt
# 拷贝 App Python 源码到目标目录
COPY src /app
# 导出服务端口
EXPOSE 1024
# 容器启动后立刻启动 Python 服务
CMD
[
"python"
,
"main.py"
]
```
使用 git 命令将该项目代码提交到仓库。以下描述错误的是?
## 答案
Dockerfile 文件不能配置导出服务端口
## 选项
### A
Dockerfile 可以指定构建的镜像运行后立刻执行的命令
### B
Dockerfile 里可以指定构建容器镜像时,从本地文件系统里拷贝哪些目录或者文件到镜像里对应的目录
### C
Dockerfile 是构建容器镜像的配置文件
data/1.云原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_image.jpg
0 → 100644
浏览文件 @
fe1f9bd6
181.1 KB
data/1.云原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_image.md
0 → 100644
浏览文件 @
fe1f9bd6
# Build docker(2): 构建容器并发布
上一题准备了代码仓库,并且配置了对应的 Dockerfile, 现在使用 docker 命令来制作镜像:
```
bash
docker image build
-t
cloud_native_hello_py:0.0.1 ./
```
构建如图所示:
![](
./build_image.jpg
)
构建镜像之后,可以将镜像发布到 DockerHub ,不过需要首先注册下账号
1.
在
<https://hub.docker.com>
上注册自己的账号
2.
使用命令 docker login 在本机登陆,输入自己的用户名和密码
现在,可以使用命令 tag 来修改镜像的标签为
`用户名/镜像名`
格式:
```
bash
docker tag cloud_native_hello_py:0.0.1 fanfeilong/cloud_native_hello_py
```
可以用
`docker image ls`
验证结果
![](
./build_image_tag.jpg
)
现在,可以使用镜像的 push 命令来发布
```
bash
docker push fanfeilong/cloud_native_hello_py:latest
```
![](
./build_image_push.jpg
)
以下描述错误的是?
## 答案
docker image build 构建的时候不需要指定 Dockerfile 所在目录
## 选项
### A
推送镜像需要用
`docker tag`
命令给镜像打上符合规则的标签
### B
需要在 Docker Hub 上注册账号才能用以推送镜像
### C
可以将容器镜像发布到 Docker Registry,其中 Docker Hub是官方的Docker 仓库中心
data/1.云原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_image_push.jpg
0 → 100644
浏览文件 @
fe1f9bd6
179.7 KB
data/1.云原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_image_tag.jpg
0 → 100644
浏览文件 @
fe1f9bd6
145.1 KB
data/1.云原生初阶/1.容器(docker)/5.使用docker运行服务/docker_pull.jpg
0 → 100644
浏览文件 @
fe1f9bd6
93.4 KB
data/1.云原生初阶/1.容器(docker)/5.使用docker运行服务/pull_and_run.md
0 → 100644
浏览文件 @
fe1f9bd6
# Run docker: 拉取镜像并运行
上一节创建了一个Python Flask 服务git仓库,然后为它配置了一个Dockerfile,最后构建了镜像并推送到Docker Hub。
现在,可以从 Docker Hub 拉取该镜像并运行。
首先,拉取镜像:
```
bash
docker pull fanfeilong/cloud_native_hello_py
```
![](
./docker_pull.jpg
)
其次,运行容器:
```
bash
docker run
-p
1024:1024
-it
fanfeilong/cloud_native_hello_py
```
这个命令没有指定容器启动后运行的命令,因此容器启动后会执行镜像制作时Dockerfile里指定的CMD命令,可以看到容器启动后执行了Python程序,容器服务在1024端口监听HTTP请求,因为 docker run 配置了参数
`-p 1024:1024`
,这里把主机的1024端口映射到了容器里的1024端口。
![](
./run-with-port-map.jpg
)
现在,在浏览器里测试下请求:
![](
./test-request.jpg
)
请求成功,输出了"Hello World!",到这里你就成功学会了容器镜像制作、发布、拉取和运行一条龙服务。
以下描述错误的是?
## 答案
容器的端口映射,主机端口和容器内映射端口必须一样
## 选项
### A
容器的端口映射参数
`-p`
可以将主机端口转发给映射的容器内端口
### B
容器启动时如果没有指定执行的程序,就会执行在Dockerfile里使用CMD键配置的启动程序
### C
可以从 DockerHub拉取自己推送上去的镜像
data/1.云原生初阶/1.容器(docker)/5.使用docker运行服务/run-with-port-map.jpg
0 → 100644
浏览文件 @
fe1f9bd6
46.8 KB
data/1.云原生初阶/1.容器(docker)/5.使用docker运行服务/test-request.jpg
0 → 100644
浏览文件 @
fe1f9bd6
33.0 KB
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录