docker系列之二:构建docker容器

1.创建在FlaskApp/app中创建Flask项目:

2.生成web项目所需的运行环境:pip3 freeze > ../requirements.txt
3.编辑Dockerfile:
# 依赖的的操作系统
FROM ubuntu:16.04
# image的作者和作者邮箱
MAINTAINER oldeleven "[email protected]"
# 安装项目的执行环境
RUN apt-get update -y &&     apt-get install -y python3-pip python3-dev
# COPY 指令将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置。
#<目标路径> 可以是容器内的绝对路径,也可以是相对于工作目录的相对路径(工作目录可以用 WORKDIR 指令来指定)。目标路径不需要事先创建,如果目录不存在会在复制文件前先行创建缺失目录。
# ./requirements.txt:此文件指的是docker引擎中展开的构建上下文中的文件,并不是本地文件的目录文件
COPY ./requirements.txt /requirements.txt
# Docker引擎的工作目录
WORKDIR /
# 安装项目依赖项
RUN pip3 install -r requirements.txt
# 复制所有的文件到工作目录下
COPY . /
# 入口点
ENTRYPOINT [ "python3" ]
# 要执行的项目入口
CMD [ "app/app.py" ]

4.生成image镜像文件:docker build -t docker-flask:0.1 .  # 意思是将Dockerfile所在的目录中的所有内容打包上传给docker引擎
# -t :image的那么和tag
那么当我们使用 docker build 命令来构建镜像时,这个构建过程其实是在 Docker引擎 中完成的,而不是在本机环境。
那么如果在 Dockerfile 中使用了一些 COPY 等指令来操作文件,如何让 Docker引擎 获取到这些文件呢?
这里就有了一个镜像构建上下文的概念,当构建的时候,由用户指定构建镜像的上下文路径,而 docker build 会将这个路径下所有的文件都打包上传给 Docker 引擎,引擎内将这些内容展开后,就能获取到所有指定上下文中的文件了(参考下方docker架构图)。

比如说 dockerfile 中的 COPY ./package.json /project,其实拷贝的并不是本机目录下的 package.json 文件,而是 docker引擎中展开的构建上下文中的文件,所以如果拷贝的文件超出了构建上下文的范围,Docker引擎是找不到那些文件的。

5.运行我们生成的image镜像文件
docker run -d --name flask_app -p 5000:5000  docker-flask:0.1
或者 docker run -d --name flask_app -v $PWD/app:/app -p 8000:5000 docker-flask:0.1
#  docker run 守护模式 --name 设置container的名字 -p 本机接口:容器接口 imageID或者imageName:tag
# 注意:-p 5000:5000:注意这个5000是flask中配置的port
#  $PWD/app:表示实体机中app.py所在的位置:$PWD:是做镜像的绝对工作路径::/app:表示镜像中app.py的位置,dockerfile中我们的WORKDIR= /,所以镜像中的app.py的位置就是/app/

6、标记我们自己制作的image
docker tag docker-flask  gsfmcntt1022/docker-flask:v1.0# gsfmcntt1022 是用户名需要替换成你自己的docker用户名,这个用户名也是你的docker仓库名,# 你在pull和push的时候docker引擎会通过你的用户名将你制作的docker容器上传到你自己的容器仓库之中
7、上传到我们自己的docker仓库中 docker login # 登录docker docker push gsfmcntt1022/docker-flask:v1.0 # dockerhub跟github不太一样,不用git init初始化仓库,他可以直接通过你的用户名来寻找你的docker仓库位置,登录之后直接push就可以了8、在我们web服务器中pull login docker docker pull gsfmcntt1022/docker-flask:v1.0 # 如果版本为latest可以省略

☆  至此我们已经可以制作自己的docker容器,并且上传到自己的容器仓库中(https://hub.docker.com/),那么django,爬虫或者其他项目大致流程也是如此,大家可以模拟制作

☆ >>>>下一篇docker应用篇>>>>

原文地址:https://www.cnblogs.com/888888CN/p/12016475.html

时间: 2024-10-10 12:16:48

docker系列之二:构建docker容器的相关文章

【Docker系列教程之三】Docker容器是如何工作的

在上一篇的文章中,我给大家主要介绍了一下 Docker 环境的搭建,简单的讲解了一下 Docker 架构,以及用 Docker 命令简单演示了一下如何拉去一个 images 镜像.本篇我们将剖析一下 Docker 容器是如何工作的,学习好Docker容器工作的原理,我们就可以自己去管理我们的容器了. Docker架构 在上一篇文章的学习中,我们简单地讲解了Docker的基本架构.了解到了 Docker 使用的是 C/S 结构,即客户端/服务器体系结构.明白了 Docker 客户端与 Docker

【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World

操作环境 操作系统:CentOS7.2 内存:1GB CPU:2核 Docker服务常用命令 docker服务操作命令如下 service docker start #启动服务 service docker stop  #停止服务 service docker restart #重启服务 service docker status   #查看服务状态 启动Docker服务 docker是一个CS模型,需要先启动服务端,直接执行 sudo service docker start 启动docker

Docker系列(二)---容器

创建容器 新建容器 方法一: [[email protected]]# docker run -it centos:6 echo "hello" hello 方法二: [[email protected]]# docker create -it centos:6 echo "hello" c97b4ca48ce2f2065230398c57955c9ab9a31a3af9301217a626a16471697451 使用方法二创建的容易处于停止状态,使用docker

Docker系列-第七篇Docker构建SpringBoot应用

1.基于Dockerfile构建SpringBoot镜像 1.1准备工作 将SpringBoot项目通过maven打成jar包 mvn clean package #使用maven打包项目 1.2使用Dockerfile构建镜像 step1 在存放jar所在目录下创建Dockerfile文件 touch Dockerfile step2 编辑Dockerfile增加以下内容 FROM java:8 MAINTAINER niugang<[email protected]> RUN mkdir

Docker入门(二):容器与镜像常用指令

零.docker常用命令 #镜像名 版本标签 镜像id 创建时间 镜像大小 REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest fce289e99eb9 6 months ago 1.84kB docker version/info #查看版本/信息 docker --help #查看说明文档 docker logs -f -t --tail 日志条数 容器ID #查看容器日志 docker inspect #获取容器/镜像的元数据 一

Docker系列(二)镜像管理

2.1 查看镜像 [[email protected] ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/hello-world latest 05a3bd381fc2 5 weeks ago 1.84 kB 选项说明:REPOSTITORY:表示镜像的仓库源TAG:镜像的标签IMAGE ID:镜像IDCREATED:镜像创建时间SIZE:镜像大小同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubunt

Docker系列之CentOS7安装Docker(一)

0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 一.瞎扯淡(只讲有用的) 感兴趣的同学可以上网搜索一下docker具体的介绍.我这边主要介绍偏实战的内容,不喜勿喷,有问题也请指出. 官方给出的介绍:docker就是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任务流行的linux机器上,实现虚拟化. 我想说的是docker 就是 一个车的发动机引擎,引擎来提供动力,提供车上各个依赖引擎的组件使之运行,那么这里的组件就是容器.讲的

Docker系列-第八篇Docker常用安装

一.总体步骤 1.搜索镜像 2.拉取镜像 3.查看镜像 4.启动镜像 5.停止容器 6.移除容器 二.安装Tomcat 2.1 docker push方式安装tomcat https://hub.docker.com/_/tomcat docker hub上每个镜像怎么使用,都有对应的说明,这个说明对于每个镜像的安装和使用都很有帮助 2.1.1.docker hub上面查找tomcat镜像 2.1.2.从docker hub上拉取tomcat镜像到本地 2.1.3.docker images查看

docker系列之一:初见docker

什么是docker? docker是目前linux最流行的容器技术,Docker 将应用程序与该程序的依赖,打包在一个文件里面.运行这个文件,就会生成一个虚拟容器.程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样 优点:占用资源小,启动快,体积也小 docker容器与虚拟机有什么区别? 虚拟机(virtual machine)就是带环境安装的一种解决方案,本质上是一个文件夹 虚拟机运行的时候独占系统资源,因为它运行的环境是一个完整的操作系统,我们在运行之前会给虚拟机提前配置相应的物理机的