docker系列之二:构建docker容器(代码片段)

888888cn 888888cn     2023-05-05     403

关键词:

1.创建在FlaskApp/app中创建Flask项目:
技术图片
2.生成web项目所需的运行环境:pip3 freeze > ../requirements.txt 
3.编辑Dockerfile:
# 依赖的的操作系统
FROM ubuntu:16.04
# image的作者和作者邮箱
MAINTAINER oldeleven "gsfmcntt1022@163.com"
# 安装项目的执行环境
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应用篇>>>>

docker系列-第六篇dockerfile解析(代码片段)

1.手动编写一个dockerfile文件,当然必须要符合file的规则2.有了这个文件,直接dockerbuild命令执行,获得一个自定义的镜像3.run1.是什么Dockerfle是一个文本格式的配置文件,用户可以使用Dockerfle来快速创建自定义的镜像。Dockerfile是... 查看详情

docker深入浅出系列|容器初体验(代码片段)

原文:Docker深入浅出系列|容器初体验目录Docker深入浅出系列|容器初体验教程目标预备工作容器与虚拟化技术什么是Docker为什么要用Docker事例什么是容器镜像和容器容器与虚拟机的区别Vagrant与Docker的区别Docker引擎和架构Docker的镜... 查看详情

docker系列:docker容器(代码片段)

...以创建容器。先从拉取一个官方提供的ubuntu最新镜像:$dockerpullubuntuUsingdefaulttag:latestlatest:Pullingfromlibrary/ubuntuDigest:sha256:f08638ec7ddc90065187e7eabdfa 查看详情

docker系列之docker容器(代码片段)

...状态的容器重新启动。  新建并启动:所需命令主要为dockerrun。例如下面启动后输出一个“HelloWorld”,之后终止容器。[email protect 查看详情

docker入门与应用系列介绍和部署

Docker介绍    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口... 查看详情

docker实战系列之快速删除docker中的容器(代码片段)

1、停用全部运行中的容器dockerstop$(dockerps-q)2、删除全部容器dockerrm$(dockerps-aq)3.停用并删除容器dockerstop$(dockerps-q)&dockerrm$(dockerps-aq)  查看详情

容器与容器编排实战系列1--docker安装(代码片段)

CentOS7.4下安装Docker详细步骤 第一步:安装Dockeryuminstall-yyum-utilsdevice-mapper-persistent-datalvm2yum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repoyuminstall-ydocker-cesy 查看详情

docker深入浅出系列|容器数据持久化(代码片段)

Docker深入浅出系列|容器数据持久化Docker已经上市很多年,不是什么新鲜事物了,很多企业或者开发同学以前也不多不少有所接触,但是有实操经验的人不多,本系列教程主要偏重实战,尽量讲干货,会根据本人理解去做阐述,... 查看详情

docker学习:docker基础容器构建(代码片段)

1.宿主机环境1.1.查看ubuntu系统版本准备一台ubuntu系统,可以是vm也可以实体机。本文的内容是基于vm环境构建。cat/etc/lsb-releaseDISTRIB_ID=UbuntuDISTRIB_RELEASE=22.04DISTRIB_CODENAME=jammyDISTRIB_DESCRIPTION="Ubuntu22.0 查看详情

白面系列docker(代码片段)

在讲docker之前,首先区分2个概念,容器和虚拟机。容器:虚拟机:简单来说,容器虚拟化操作系统;虚拟机虚拟化硬件。容器粒度更小更灵活;虚拟机包含资源更多更大。docker就是用来做容器化的。接着需要搞清楚3个东西:Imag... 查看详情

docker-容器服务containerservice04(构建镜像+仓库配置)(代码片段)

Docker-构建镜像-仓库配置04一、Docker镜像介绍Docker镜像构建分为两种:1)手动构建2)Dockerfile(自动构建)二、手动构建过程基于centos镜像进行构建,制作nginx镜像1)创建镜像,并安装nginx[[email protected]opt]#dockerrun--nameqiuyuetao-i... 查看详情

docker从入门到实践系列四-docker容器编排利器dockercompose(代码片段)

文章目录Compose简介概念组成安装与卸载二进制包方式安装测试卸载docker-compose.yml文件详解概念案例versionservicesimagebuildcontextdockerfilecontainer_namedepends_onportsexposerestartenvironmentenv_filecommandvolumesnetwork_modenetworksali 查看详情

docker的镜像与容器的构建(代码片段)

...与容器之间的操作不影响,是完全隔离的环境。二、docker容器的构建以及一些操作dockerrun-itd--name=dockercentos:7//构建容器参数:  i:以交互的模式运行容器d:表示后台运行容器,并返回容器的IDt:为容器重新分配一个... 查看详情

docker系列一:docker的介绍和安装(代码片段)

Docker介绍Docker是指容器化技术,用于支持创建和实验LinuxContainer。借助Docker,你可以将容器当做重量轻、模块化的虚拟机来使用,同时,你还将获得高度的灵活性,从而实现对容器的高效创建、部署和复制,并能将其从一个环境... 查看详情

云原生丨docker系列3docker容器的基本操作方法(代码片段)

前言在上一篇文章中我们学习了Docker镜像的基本操作方法,容器是基于镜像创建的,容器中的进程依赖于镜像中的文件,那么本篇文章我们就来深入学习容器的基本操作方法。目录一、新建并启动🌟二、启动已终... 查看详情

maven实战技巧「docker实战系列」使用maven插件构建docker镜像的方法(代码片段)

使用Maven插件构建Docker镜像的方法工具插件名称+官方地址修改宿主机配置(docker可以远程访问)配置DOCKER_HOST例如使用插件构建Docker镜像添加插件构建镜像添加docker-maven-plugin创建Dockerfile内容如下执行以下命令构建Docker... 查看详情

云原生之docker实战使用dockerfile构建docker镜像(代码片段)

【云原生之Docker学习】使用Dockerfile构建docker镜像一、Docker镜像的分层架构1.镜像的分层示意图2.镜像的组成①.unionfilesystem②.镜像层——bootfs③.镜像层——rootfs④.镜像层——依赖环境⑤.容器层3.镜像的分层图示二、镜像与容器的... 查看详情

docker系列14:容器编排(代码片段)

三、容器编排实战案例1第一步:创建yml文件[root@host1~]#vimdocker-compose.ymlversion:‘3‘services:web:image:nginx:latestports:-"5000:5000"links:-redisredis:image:redis第二步:启动容器[root@host1~]#docker-composeup-d第三步:查看通过compose启动进程的状态[root@... 查看详情