我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何构建、运行、发布和获取docker镜像

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何构建、运行、发布和获取docker镜像

今天小编给大家分享一下如何构建、运行、发布和获取docker镜像的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1、前言

使用docker,您可以从docker的官方registry或者其他仓库,获取一个可移植的python运行环境镜像,无需安装。然后,你可以基于这个镜像开发你的应用程序,这样可以确保您的应用程序,依赖项和运行时都一起运行。

2、构建一个python镜像

2.1、为了构建您自己的镜像,首先需要创建一个名称为dockerfile的文件,用于定义创建镜像并运行container所需的步骤。 dockerfile中的每条指令都会在镜像中创建一个层级。当您更改dockerfile并重新build镜像时,只重建那些更改的层级。与其他虚拟化技术相比,这是使镜像轻量,小巧,快速的一个原因。

创建一个空目录,创建一个名为dockerfile的文件,将以下内容复制并粘贴到该文件中并保存。

# use an official python runtime as a parent image
from python:2.7-slim
# set the working directory to /app
workdir /app
# copy the current directory contents into the container at /app
add . /app
# install any needed packages specified in requirements.txt
run pip install --trusted-host pypi.python.org -r requirements.txt
# make port 80 available to the world outside this container
expose 80
# define environment variable
env name world
# run app.py when the container launches
cmd ["python", "app.py"]

2.2 在与dockerfile文件同一个目录下,创建requirements.txt和app.py文件。因为dockerfile文件的add命令,上面的两个文件会被加到最终的镜像中;因为expose命令,访问容器的80端口,才可以访问到app.py的内容,注意:这里的80端口指的是容器暴露的端口,并不是实际机器的端口。
requirements.txt

flask
redis

app.py

from flask import flask
from redis import redis, rediserror
import os
import socket
# connect to redis
redis = redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
app = flask(__name__)
@app.route("/")
def hello():
  try:
    visits = redis.incr("counter")
  except rediserror:
    visits = "<i>cannot connect to redis, counter disabled</i>"
  html = "<h3>hello {name}!</h3>" \
      "<b>hostname:</b> {hostname}<br/>" \
      "<b>visits:</b> {visits}"
  return html.format(name=os.getenv("name", "world"), hostname=socket.gethostname(), visits=visits)
if __name__ == "__main__":
  app.run(host='0.0.0.0', port=80)

2.3 把我们的应用打包为镜像,要在dockerfile目录下执行。这会创建一个docker镜像,我们将使用-t标记它,以使镜像有一个友好的名称。

docker build -t friendlyhello

3 、运行镜像

运行应用程序,使用-p将机器的端口4000映射到容器暴露的端口80:

docker run -p 4000:80 friendlyhello

如何构建、运行、发布和获取docker镜像

您也可以在shell中使用curl命令来查看相同的内容。

$ curl http://localhost:4000
<h3>hello world!</h3><b>hostname:</b> 8fc990912a14<br/><b>visits:</b> <i>cannot connect to redis, counter disabled</i>

按crtl+c结束应用

现在让我们在后台运行应用程序:

docker run -d -p 4000:80 friendlyhello

查看所有的container信息

$ docker container ls
container id        image               command             created
1fa4ab2cf395        friendlyhello       "python app.py"     28 seconds ago

现在使用docker container stop来结束进程,使用container id,如下所示:

docker container stop 1fa4ab2cf395

4、发布镜像

4.1、我使用的是阿里云的docker registry,感觉应该会比较快。首先你要有一个阿里云的账号。然后登陆进去新建一个仓库,设置命名空间等信息。

如何构建、运行、发布和获取docker镜像

4.2 登陆阿里云的docker registry,后续操作都需要登陆才可以执行。

sudo docker login --username=admin registry.cn-hangzhou.aliyuncs.com

4.3 为镜像打标,tag为可选的,如果没有,默认为latest

格式:

docker tag image_name registry_url/namespace/repository_name:[tag]

例如

docker tag friendlyhello registry.cn-hangzhou.aliyuncs.com/shuzhou/demo1:latest

查看本地的镜像列表

docker image ls

4.4 发布镜像

docker push registry.cn-hangzhou.aliyuncs.com/shuzhou/demo1:latest

4.5 现在你可以在任何一台机器上执行下面的命令,运行镜像

docker run -p 4000:80 registry.cn-hangzhou.aliyuncs.com/shuzhou/demo1:latest

4.6 拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/shuzhou/demo1:latest

以上就是“如何构建、运行、发布和获取docker镜像”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何构建、运行、发布和获取docker镜像

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用docker构建jenkins镜像并运行容器

这篇文章主要讲解了“如何使用docker构建jenkins镜像并运行容器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用docker构建jenkins镜像并运行容器”吧!目录:1、基于
2023-06-19

spring Boot应用如何通过Docker来实现构建、运行、发布流程

小编给大家分享一下spring Boot应用如何通过Docker来实现构建、运行、发布流程,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1. Docker 简介Docker 是一个开源的应用容器引擎,让开发者可以打包他们的
2023-05-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录