首页 > 其他分享 >03 Docker高级实践

03 Docker高级实践

时间:2023-05-02 10:33:26浏览次数:29  
标签:03 容器 实践 nginx ubuntu 镜像 Docker Dockerfile docker

第三章 Docker高级实践

目录

一、Dockerfile

在这一部分我们来介绍一些Docker的高级内容: Dockerfile和Docker compose。

1 Dockerfile简介

  1. 什么是Dockerfile

    类似于我们学习过的脚本,将我们在上面学到的docker镜像,使用自动化的方式实现出来。

  2. Dockerfile的作用

    1. 找一个镜像:ubuntu
    2. 创建一个容器: docker run ubuntu
    3. 进入容器: docker exec -it 容器命令
    4. 操作:各种应用配置....
    5. 构造新镜像: docker commit
  3. Dockerfile使用准则

    1. 大:首字母必须大写D
    2. 空:尽量将Dockerfile放在空目录中。
    3. 单:每个容器尽量只有一个功能。
    4. 少:执行的命令越少越好。
  4. Dockerfile分为四部分

    1. 基础镜像信息
    2. 维护者信息
    3. 镜像操作指令
    4. 容器启动时执行指令
  5. Dockerfile文件内容

    1. 首行注释信息
    2. 指令(大写)参数
  6. Dockerfile使用命令

    #构建镜像命令格式:
    docker build -t [镜像名]:[版本号][Dockerfile所在目录]
    #构建样例:
    docker build -t nginx:v0.2 /opt/dockerfile/nginx/
    
    #参数详解:
    	-t                      指定构建后的镜像信息,
    	/opt/dockerfile/nginx/  则代表Dockerfile存放位置,如果是当前目录,则用 .(点)表示
    

2 Dockerfile快速入门

接下来我们快速的使用Dockerfile来基于ubuntu创建一个定制化的镜像: nginx。

  • 创建文件目录
#创建Dockerfile专用目录
$ mkdir -p docker-file/dockerfile/nginx
$ cd ./docker-file/dockerfile/nginx/

#在其中创建Dockerfile文件
$ vim Dockerfile

  • 在Dockerfile中书写内容:
# 构建一个基于ubuntu的docker定制镜像
# 基础镜像
FROM ubuntu

# 镜像作者
MAINTAINER yangyi [email protected]

# 执行命令
RUN mkdir hello
RUN mkdir world
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update
RUN apt-get install nginx -y

# 对外端口
EXPOSE 80

  • 进行构建操作
#构建镜像
$ docker build -t ubuntu-nginx:v1.0 .  # 依赖当前文件夹下面的Dockerfile创建文件

#查看新生成镜像
$ docker images
REPOSITORY        TAG       IMAGE ID       CREATED          SIZE
ubuntu-nginx      v1.0      0dcd373157ad   11 minutes ago   167MB

#查看构建历史
$ docker history 0dcd373157ad
IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
0dcd373157ad   23 minutes ago   /bin/sh -c #(nop)  EXPOSE 80                    0B        
a4f1dd0a918d   23 minutes ago   /bin/sh -c apt-get install nginx -y             59.2MB    
0ffb9d0eee7b   24 minutes ago   /bin/sh -c apt-get update                       34.6MB    
99a68a02a088   27 minutes ago   /bin/sh -c sed -i 's/security.ubuntu.com/mir…   2.76kB    
393d63c34bee   27 minutes ago   /bin/sh -c sed -i 's/archive.ubuntu.com/mirr…   2.76kB    
1cafc34dadf0   27 minutes ago   /bin/sh -c mkdir world                          0B        
0361a0a98448   27 minutes ago   /bin/sh -c mkdir hello                          0B        
9db7f118dcc3   27 minutes ago   /bin/sh -c #(nop)  MAINTAINER yangyi yangyi@…   0B        
2b4cba85892a   2 weeks ago      /bin/sh -c #(nop)  CMD ["bash"]                 0B        
<missing>      2 weeks ago      /bin/sh -c #(nop) ADD file:8a50ad78a668527e9…   72.8MB 

#注意:
因为容器没有启动命令,所以肯定访问不了

注:每次操作都是通过镜像生成容器,容器中进行操作之后,在生成镜像,将之前的镜像删除,如此循环往复,直到生成最终的结果。

  • 运行修改好的Dockerfile进行构建
# 构建一个基于ubuntu的docker定制镜像
# 基础镜像
FROM ubuntu

# 镜像作者
MAINTAINER yangyi [email protected]

# 执行命令
RUN mkdir hello && mkdir world
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update && apt-get install nginx -y

# 对外端口
EXPOSE 80

#运行Dockerfile
$ docker build -t ubuntu-nginx:v0.2 .

#查看历史信息
$ docker history ubuntu-nginx:v0.2

#对比两个镜像的大小
$ docker images

#深度对比连个镜像的大小
$ docker inspect a853de1b8be4
$ docker inspect eaba9bd1c4ac

注:命令越少,构建的镜像越小一下。【因为有了一些日志信息

标签:03,容器,实践,nginx,ubuntu,镜像,Docker,Dockerfile,docker
From: https://www.cnblogs.com/yangyi215/p/17367398.html

相关文章

  • 04 Docker内容补充
    第四章Docker内容补充目录第四章Docker内容补充0总结1迁移与备份1.0总结1.1容器保存为镜像1.2把镜像打包成压缩包1.3把压缩包恢复为镜像2Dockerfile【重要】2.1Dockerflie是什么?2.2Dockerfile指令:2.3写一个Dockerfile3docker-compose0总结1介绍docker -docker......
  • windows11 下使用 阿里云 modelscope docker 环境 运行参考
    昨天看视频我们做了个能对话的AI派蒙,免费给大家玩!发现阿里有一个语音转文字的模型(paraformer),之前处理这种需求一直都是直接调用服务商提供好的API接口突然想尝试一下本地搭建,虽然和直接调用API没啥区别(都不知道实现细节),但是这是本地化运行,可以在内网环境运行.因为平......
  • 02 Docker核心技术
    第二章:Docker核心技术目录第二章:Docker核心技术一、Docker镜像管理1镜像简介2搜索、查看、获取3重命名、删除4镜像导入、导出5镜像历史、详细信息、创建6小结二、Docker容器管理1容器简介2容器查看、创建、启动3暂停、取消暂停、重启4容器关闭、终止、删除5进入、退出......
  • 01 Docker基础
    第一章Docker基础目录第一章Docker基础一、Docker简介1Docker是什么?2为什么使用Docker?3Docker的架构与结构4官方资料5Docker特点5.1优点5.2缺点二、Docker快速入门1Docker历程2官方要求3Docker安装4Docker加速器5Docker其它简介5.1Docker的基本命令格式5.2删除Do......
  • ubuntu20安装docker、redis、mysql及部署net6应用
    一、更新系统软件包索引sudoaptupdate二、安装dockersudoaptinstalldocker.io三、在docker中安装Mysql拉取mysql镜像dockerpullmysql:latest查看镜像dockerpullmysql:latest运行容器dockerrun-itd-p3306:3306-eMYSQL_RO......
  • Dockerfile基础命令及简单应用
    Dockerfile从dockercommit的学习中,我们可以了解到,镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解......
  • CSP2023-03
    第一题 直接满分了:#include<iostream>usingnamespacestd;constintN=1e6;intn,a,b;intpanduan(intx1,inty1,intx2,inty2,inta,intb){intc,k;if(x2<0||y2<0||x1>a||y1>b)return0;//在外侧else{......
  • 1.Docker的介绍与安装
    1.Docker的介绍与安装 1.1什么是Docker​Docker是基于Go语言实现的云开源项目。  Docker的主要目标是Build,ShipandRunAnyApp,Anywhere,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够......
  • 1.Docker的介绍与安装
    1.Docker的介绍与安装 1.1什么是Docker​Docker是基于Go语言实现的云开源项目。  Docker的主要目标是Build,ShipandRunAnyApp,Anywhere,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够......
  • 如何避免单点风险:基于实践经验分享服务拆分原则的一些思考
    缘起:系统崩了具体情况:1%的请求影响了剩余90%的请求架构演进:拆分热点服务【进程级隔离】复盘总结拆服务的经典实践 不能变形的变形金刚也叫变形金刚?缘起系统崩溃了?别惊慌!这里有快速恢复的方法!分析发现,网站崩时服务X被流量打垮,继而依赖服务X的其它服务开始......