Docker制作镜像
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,Docker制作镜像本章结构Docker镜像的分层Dockerfile基本创建方法Dockerfile创建各种应用容器Docker镜像的分层Dockerfile中的每个指令都会创建一个新的镜像层镜像层
千家信息网最后更新 2025年01月22日Docker制作镜像
Docker制作镜像
本章结构
- Docker镜像的分层
- Dockerfile基本创建方法
- Dockerfile创建各种应用容器
Docker镜像的分层
Dockerfile中的每个指令都会创建一个新的镜像层
镜像层将被缓存和复用
当Dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像缓存就会失效
某一层的镜像缓存失效之后,它的镜像层缓存都会失效
镜像层是不可变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然会包含该文件
Docker镜像的创建
Docker镜像
- 是应用发布的标准格式
- 可支撑一个Docker容器的运行
Docker镜像的创建方法
- 基于已有镜像创建
- 基于本地模板创建
- 基于Dockerfile创建
基于已有镜像创建
将容器里面运行的程序及运行环境打包生成新的镜像
docker create -it centos /bin/bashdocker commit -m "new" -a "daoke" a19597abf62d daoke:centos
- -m:说明信息
- -a:作者信息
- -p:生成过程中停止容器的运行
基于本地模板创建
通过导入操作系统模板文件生成新的镜像
使用wget命令导入为本地镜像
wget http://123.56.134.27/pub/package/LAMP-C7/nginx-1.12.0.tar.gzcat nginx-1.12.0.tar.gz | docker import - docker:new
导入成功后可查看本地镜像信息
docker images | grep new
基于Dockerfile创建
Dockerfile是由一组指令组成的文件
Dockerfile结果四部分
- 基础影响信息
- 维护者信息
- 镜像操作指令
- 容器启动时执行指令
使用Dockerfile创建镜像并在容器中运行
指令 含义 FROM镜像 指定新镜像所基于的镜像,第一条指令必须为FROM指令,每创建一个镜像就需要FFROM指令。 MAINTAINER 名字 说明新镜像的维护人信息 RUN命令 在所基于的镜像上执行命令,并提交到新的镜像中 CMD[ "要运行的程序","参数1,"参数2 "] 指令启动容器时要运行的命令或者脚本,Dockerfile只能有一条CMD命令,如果指定多条则只能最后f被执行 EXPOSE 端口号 指定新镜像加载到Docker时要开启的端口 ENV环境变量变量值 设置一个环境变量的值,会被后面的RUN使用 ADD源文件/目录目标文件/目录 将源文件复制到目标文件,源文件要与Dockerfile位于相同目录中,或者是f URL COPY源文件/目录目标文件/目录 将本地主机上的文件/目录复制到目标地点,源文件/目录要与DGckerfile在相同的目录中 VOLUME ["目录"] 在容器中创建一个挂载点 USER用户名/UID 指定运行容器时的用户 WORKDIR 路径 为后续的RUN、CMD、ENTRYPOINT指定工作目录 ONBUILD 命令 指定所生成的镜像作为一个基础镜像时所要运行的命令 HEALTHCHECK 健康检查
Dockerfile创建各种应用容器
Dockerfile创建apache镜像容器
mkdir apachecd apache/vim Dockerfile#基于的基础镜像FROM centos#维护镜像的用户信息MAINTAINER The project #镜像操作指令安装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.shRUN chmod 755 /run.sh#启动容器时执行脚本CMD ["/run.sh"][root@localhost opt]# vim run.sh#!/bin/bashrm -rf /run/httpd/*exec /usr/sbin/apachectl -D FOREGROUNDecho "this is web" index.html//生成镜像docker build -t httpd:centos .//新镜像运行容器docker run -d -p 1216:80 httpd:centos
Dockerfile创建ssh镜像容器
mkdir sshdcd sshd/vim Dockerfile#基于的基础镜像FROM centos#维护镜像的用户信息MAINTAINER this is project #重新加载yum源RUN yum -y update#安装必要软件包RUN yum -y install openssh* net-tools lsof telnet passwd#为root用户设置密码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/sshd_host_rsa_keyRUN sed -i '/^scssion\s\+required\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshdRUN mkdir -P /root/.ssh && chown root.root /root && chmod 700 /root/.ssh#开启20端口EXPOSE 22#启动容器CMD ["/usr/sbin/sshd","-D"]//生成镜像docker build -t sshd:new .//启动容器并修改root密码docker run -d -P sshd:newssh localhost -p 32770
Dockerfile基于sshd镜像容器创建systemctl镜像容器
mkdir systemctl cd systemctl vim Dockerfile#基于的基础镜像FROM sshd:newENV container dockerRUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \systemd-tmpfile-setup.service ] || rm -f $i; done); \rm -f /lib/systemd/system/multi-user.target.wants/*; \rm -f /etc/systemd/system/*.wants/*; \rm -f /lib/systemd/system/local-fs.target.wants/*; \rm -f /lib/systemd/system/sockets.target.wants/*udev*; \rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \rm -f /lib/systemd/system/basic.target.wants/*; \rm -f /lib/systemd/system/anaconda.target.wants/*;VOLUME [ "/sys/fs/cgroup" ]CMD ["/usr/sbin/init"]//生成镜像docker build -t local/c7-systemd:latest .//privileged container内的root拥有真正的root权限。否责,container内的root只是外部的一个普通用户权限docker run --privileged -ti -v /sys/fs/cgroup:sys/fs/cgroup:ro local/c7-systemd:latest /sbin/init//进入容器 docker exec -it 镜像IP bash
镜像
容器
指令
文件
目录
运行
信息
生成
命令
用户
基础
源文件
目标
缓存
变量
模板
环境
端口
脚本
应用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
芜湖魏晋元兴分布式存储数据库
学习通显示无法连接到服务器
提高软件开发效率方法
大学生网络安全找不到证书
安庆工程管理软件开发多少钱
新组建的网络安全学院
服务器安全狗 防端口扫描
地铁逃生服务器登不上去怎么办
不动产网络安全自查情况报告
恐怖的磁带服务器
mdf 数据库2008
数据库每条数据所占空间
软件开发过程的质量管理
数据库升级注意事项
巴彦县网络安全活动
我的网络安全观的论文
韩都衣舍 软件开发人数
梦幻手游渠道服务器
网络安全立法大事记
自考数据库系统与应用课后题答案
提高软件开发效率方法
影像分析软件开发
有一个学生管理数据库a
我的世界网易版打怪升级服务器
浙江数据软件开发服务标准
自学软件开发产品经理
湖南政府企业网络安全
黑科技亮相世界互联网大会
网络安全招贴画
服务器管理器报错复位