Docker镜像及Dockerfile详解

1 Docker镜像用途

  • 统一应用发布的标准格式
  • 支撑一个Docker容器的运行

2 Docker镜像的创建方法

  • 基于已有镜像创建
  • 基于本地模板创建
  • 基于Dockerfile创建 (实际环境中用的最多)

2.1 基于已有镜像的创建

将容器里面运行的程序及运行环境打包生成新的镜像

docker commit [选项] 容器ID/名称  仓库名称:[标签]
  • -m:说明信息
  • -a:作者信息
  • -p:生成过程当中停止容器的运行
## 创建容器
docker create -it centos:7 /bin/bash
docker commit -m "new" -a dakao ee9dbcd1dc2b daoke:test
## commit 是提交
docker images | grep dakao 

2.2 基于本地模板创建 

a.通过导入操作系统模板文件生成新的镜像

b.使用wget命令导入为本地镜像

wget http://download.openvz.org/template/precreated/debian-7.0-x86- minimal.tar.gz

c.导入成功后可查看本地镜像信息

docker images | grep new 

2.3 基于Dockerfile创建 

  • Dockerfile是由一组指令组成的文件
  • Dockerfile结构四部分
    • 基础镜像信息
    • 维护者信息
    • 镜像操作指令
    • 容器启动时执行指令
  • Dockfile每行支持一条指令,每条指令可携带多个参数,支持使用以“#”号开头的注释

Dockerfire操作指令

3 Dockerfile实战

本章节以各种镜像制作为案例展示通过dockerfile制作容器镜像的过程。 

3.1 构建apache容器服务

1)基础镜像目录

# mkdir apache
# cd apache

2)编辑镜像dockerfile

# vim Dockerfile#基于的基础镜像
FROM centos:7
#维护镜像的用户信息
MAINTAINER The porject <cloud-ops@centos.org>
#镜像操作指令安装apache软件
RUN yum -y update    #更新yum
RUN yum -y install httpd
#开启80端口
EXPOSE 80
#复制网站首页文件
ADD index.html /var/www/html/index.html
#将执行脚本复制到镜像中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
#启动容器时执行脚本
CMD ["/run.sh"]

3)编辑启动脚本

# vim run.sh
#!/bin/bash
rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUNDecho "web test" > index.html

4) 构建镜像

//生成镜像
# docker build -t httpd:centos . (注意别忘 了末尾有".",且.前面有空格)

5)镜像容器启动运行

//新镜像运行容器
# docker run -d -p 1216:80 httpd:centos

6)测试验证

//测试
# curl http://192.168.40.30:1216

3.2 构建sshd容器服务 

centos:7的镜像发现无法使用sshd服务,需要手工添加sshd服务。

sshd为secure shell 的简称,可以通过网络在主机中开机shell的服务。

操作步骤

  • 下载基础镜像
  • 建立工作目录
  • 创建并编写Dockfile文件
  • 生成镜像
  • 启动容器
# mkdir sshd
# cd sshd# vim DockerfileFROM centos:7
MAINTAINER The CentOS Project <cloud-centos>
RUN yum -y update
RUN yum -y install openssh* net-tools lsof telnet passwd
RUN echo '123456' | passwd --stdin root
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN sed -i '/^session\s\+required\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]                                 //生成镜像
docker build -t sshd:new .//启动容器并修改root密码
docker run -d -P sshd:new    #随机映射端口号
ssh localhost -p ***** #此处的*****端口号需要自己用docker ps 查看一下随机映射的是多少端口号 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/527995.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于斑翠鸟优化算法(Pied Kingfisher Optimizer ,PKO)的无人机三维路径规划(MATLAB)

一、无人机路径规划模型介绍 二、算法介绍 斑翠鸟优化算法&#xff08;Pied Kingfisher Optimizer ,PKO&#xff09;&#xff0c;是由Abdelazim Hussien于2024年提出的一种基于群体的新型元启发式算法&#xff0c;它从自然界中观察到的斑翠鸟独特的狩猎行为和共生关系中汲取灵…

总结:Spring创建Bean循环依赖问题与@Lazy注解使用详解

总结&#xff1a;Spring创建Bean循环依赖问题与Lazy注解使用详解 一前提知识储备&#xff1a;1.Spring Bean生命周期机制&#xff08;IOC&#xff09;2.Spring依赖注入机制&#xff08;DI&#xff09;&#xff08;1&#xff09;Autowired注解标注属性set方法注入&#xff08;2&…

【你也能从零基础学会网站开发】Web建站之javascript入门篇 Function函数详解

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 函数概述 …

Python Pip 命令大全及其技术应用指南【第119篇—Pip 命令】

Python Pip 命令大全及其技术应用指南 Python 的包管理工具 Pip 是开发者们在构建、分享和安装 Python 包的重要工具之一。本文将深入介绍 Pip 命令的各种用法&#xff0c;旨在帮助开发者更好地利用 Pip 管理项目依赖、安装库和进行版本控制。 1. Pip 安装与升级 首先&#x…

202109 CSP认证 | 脉冲神经网络

3. 脉冲神经网络 好久之前第一次写的时候完全对第三题没感觉&#xff0c;提交上去得了个0 分… 这次自己再写了一遍&#xff0c;花的时间不多&#xff0c;写的时候感觉逻辑也不是特别难。最后是超时了&#xff0c;感觉第三题开始涉及到优化了&#xff0c;不仅仅是暴力模拟就可以…

查看pip当前关联python版本及位置

好久没用python了&#xff0c;把各种pip指向的环境忘光光啦&#xff0c;这里记录一下查看pip当前关联的python版本及位置的方法&#xff1a; pip -V结果&#xff1a; 我一般不用这个版本的python&#xff0c;去环境变量看了一下&#xff0c;原来是anaconda的Scripts自带pip&a…

VUE_自适应布局lib-flexible+postcss-pxtorem、lib-flexible + postcss-px2rem,nuxt页面自适配

lib-flexible postcss-pxtorem适配 我采用的是flexable.js和postcss-pxtorem。我一开始用的是postcss-px2rem后来发现和nuxt引入公共css的时候发生了冲突所以改用了postcss-pxtorem。 安装依赖 npm i lib-flexible -S npm install postcss-pxtorem --save 1、lib-flexible.…

Spring Boot 面试题及答案整理,最新面试题

Spring Boot中的自动配置是如何工作的&#xff1f; Spring Boot的自动配置是其核心特性之一&#xff0c;它通过以下方式工作&#xff1a; 1、EnableAutoConfiguration注解&#xff1a; 这个注解告诉Spring Boot开始查找添加了Configuration注解的类&#xff0c;并自动配置它们…

突破编程_前端_JS编程实例(目录导航)

1 开发目标 目录导航组件旨在提供一个滚动目录导航功能&#xff0c;使得用户可以方便地通过点击目录条目快速定位到对应的内容标题位置&#xff0c;同时也能够随着滚动条的移动动态显示当前位置在目录中的位置&#xff1a; 2 详细需求 2.1 标题提取与目录生成 组件需要能够自…

Java 中的 File 类常用方法介绍

Java 中的 File 类是 java.io 包的一部分&#xff0c;它提供了丰富的文件操作方法。File 类可以用来表示文件和目录路径名的抽象表示形式&#xff0c;即它可以用来获取文件或目录的属性&#xff0c;也可以用来创建、删除、重命名文件和目录。下面是一些常用的 File 类方法&…

JavaEE+springboot教学仪器设备管理系统o9b00-springmvc

本文旨在设计一款基于Java技术的教学仪器设备销售网站&#xff0c;以提高网站性能、功能完善、用户体验等方面的优势&#xff0c;解决现有教学仪器设备销售网站的问题&#xff0c;并为广大教育工作者和学生提供便捷的教学仪器设备销售渠道。本文首先介绍了Java技术的相关基础知…

深入理解Hive:探索不同的表类型及其应用场景

文章目录 1. 引言2. Hive表类型概览2.1 按照数据存储位置2.2 按照数据管理方式2.3 按照查询优化2.4 按照数据的临时性和持久性 3. 写在最后 1. 引言 在大数据时代&#xff0c;Hive作为一种数据仓库工具&#xff0c;为我们提供了强大的数据存储和查询能力。了解Hive的不同表类型…