docker镜像 私有创库、端口映射以及 数据卷的创建
docker镜像的分层
- dockerfile中的每个指令都会创建一个新的镜像
- 镜像层将被缓存和复用
- 当dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效
- 某一层的镜像缓存失效之后,他之后的镜像层都会失效
- 镜像层是不可变的,如果在某一层中添加一个添加一个文件,然后在下一层中删除它,则镜像中依然会包含该类文件
docker镜像的创建
docker镜像
- 是应用发布的标准格式
- 可支撑一个docker容器的运行
docker镜像的创建方法 - 基于已有镜像创建
- 基于本地模板创建
- 基于dockerfile创建
dockerfile创建
dockerfile是由一组指令组成的文件
dockerfile结构四部分 - 基础镜像信息
- 维护者信息
- 镜像操作指令
- 容器启动时执行指令
dockerfile操作指令
- FROM 镜像 :指定新镜像所基于的镜像第一条指令必须为FROM指令,每创建一个镜像就需要一条FROM指令
- MAINTAINER 名字:说明镜像的维护人信息
- RUN命令:在所基于的镜像上执行命令,并提交到新的镜像中
- CMD[“要运行的程序”,“参数1,参数2”] :指令启动容器时要运行的命令或脚本,dockerfile只能有一条cmd命令,如果指定多条则只能最后一条被执行
- EXPOSE 端口号 :指定新镜像加载到docker时要开启的端口
- ENV 环境变量 变量值:设置一个环境变量的值,会被后面的RUN使用
- ADD 源文件/目录 目标文件/目录 :将源文件复制到目标文件,源文件要与dockerfile位于相同目录中,或者是一个URL
- COPY 源文件/目录 目标文件/目录 :将本地主机上的文件/目录复制到目标地点,源文件/目录要与dockerfile在相同的目录中
- VOLUME[“目录”] :在容器中创建一个挂载点
- USER 用户名/UID :指定运行容器的用户
- WORKDIR 路径 :为后续的RUN、CMD、ENTRYPOINT指定工作目录
- ONBUILD 命令 :指定所生成的镜像作为一个基础镜像时所要运行的命令
- HEALTHCHECK :健康检擦
镜像创建
基于现有镜像创建
docker create -it centos /bin/bash /创建容器
docker commit -m "new" -a "docker" 1a17d67df3cb docker:centos ///创建名为docker:centos镜像 -m 表示参数 -a表示作者名字
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker centos e4909a72b3ec 2 minutes ago 237MB
centos latest 470671670cac 3 months ago 237MB
centos 7 5e35e350aded 5 months ago 203MB
基于本地模板创建镜像
mkdir abc 创建目录
debian-7.0-x86-minimal.tar.gz 将镜像包挂载到abc中 mount.cifs
cat debian-7.0-x86-minimal.tar.gz | docker import - da | docker import - dacker:new ///生成镜像
自定义镜像(dockerfile)
vim Dockerfile 创建dockerfile文件
#基于的基础镜像
FROM centos
#维护镜像用户信息
MAINTAINER The project <css>
#镜像操作指令安装apache软件
RUN yum -y update
RUN yum install -y 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"]vim run.sh ///创建一个脚本
#!/bin/bash
rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUNDecho "this is web" > index.htmldocker build -t httpd:centos . ///生成镜像
docker run -d -p 1110:80 httpd:centos ///新镜像运行容器
私有仓库创建
docker pull registry ///下载registry
vim /etc/docker/daemon.json ///进入加速文件
{"insecure-registries": ["192.168.175.151:5000"],"registry-mirrors": ["https://rqeddgpg.mirror.aliyuncs.com"]
}
systemctl restart docker.service ///重启docker服务
docker create -it registry /bin/bash 基于registry镜像建立容器
///宿主机中的/data/registry自动创建挂载容器中的/tmp/registrydocker run -d -p 5000:5000 -v /data/registry:/tmp/registry registrydocker tag httpd:centos 192.168.175.151:5000/httpd 将镜像更改标签docker push 192.168.175.151:5000/httpd 开始上传镜像curl -XGET http://192.168.175.151:5000/v2/_catalog ///获取私有镜像列表docker pull 192.168.175.151:5000/httpd 私有仓库下载镜像
docker数据卷
//创建关联容器其中 /var/www为宿主机目录 /data1为挂载容器的目录 -v 表示数据卷docker run -v /var/www:/data1 --name web1 -it centos /bin/bash
docker数据卷容器
///创建名为web100并且创建两个数据卷 /data1 /data2
///创建名为web100并且创建两个数据卷 /data1 /data2
docker run --name web100 -v /data1 -v/data2 -it centos /bin/bash
///创建新容器挂载数据容器web100
docker端口映射
docker run -d -P nginx -P表示随机映射
docker run -d -p 3030:80 nginx -p表示固定端口映射
容器互联
docker run -itd -P --name web centos /bin/bash ///创建一个名为web的随机端口-P的容器
docker run -itd -P --name web1 --like web:web centos /bin/bash ///创建一个名为web2容器且设置--like 与web连接的容器 用web1可以ping通web
docker镜像 私有创库、端口映射以及 数据卷的创建相关推荐
- 这就是你日日夜夜想要的docker!!!---------Docker常规操作--端口映射、数据卷管理 以及容器互联
文章目录 一.端口映射 1.-P随机端口 2.映射指定一个端口 3.映射指定多个端口 4.映射到指定端口的指定地址 5.映射到指定端口的任意地址 6.查看端口映射情况 二.数据卷与数据卷容器 1.挂载 ...
- docker的简单操作和端口映射
docker的简单操作和端口映射:https://www.cnblogs.com/lixaingyang/p/11976827.html docker的简单操作和端口映射 一:简介 Docker镜像 ...
- Docker下部署Mysql映射端口并挂载数据卷
Docker下部署Mysql映射端口并挂载数据卷 1.搜索mysql镜像文件版本 2.下载最新版本mysql 或者 下载指定版本mysql 2.1 下载最新版[一般项目不直接使用最新版] 2.2 下载 ...
- Docker : 数据卷(创建、挂载、查看、删除)
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 数据卷 数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数 ...
- docker可道云怎么挂载移动硬盘_数据卷的挂载
#### 命令挂载 语法:docker run –it –v /宿主机绝对路径目录:/容器内目录\[:权限\] 镜像名或镜像ID ![](https://img.kancloud.cn/de/11/d ...
- docker 改host_Docker容器修改端口映射
对于已经建立的docker容器,需要新增容器对主机的端口映射,主要分为三种: 一:通过修改配置文件修改docker容器端口映射 1.使用docker ps -a命令找到要修改容器的CONTAINER ...
- docker 文件存放路径, 修改端口映射
文章目录 如何获取容器的启动命令 1, 容器层:文件存放路径 后天修改容器端口 a, 先提交旧容器为新的镜像,再启动新容器 b, 修改容器配置文件置文件:hostconfig.json 2, 镜像层: ...
- 【docker详解07】-端口映射
1.指定端口映射 语法: docker run -itd --name [容器名] -p [宿主机端口]:[容器端口] [镜像名] 示例: docker run -itd --name m ...
- Docker(4)-容器互联与端口映射
容器互联 默认情况下,容器都是各自独立运行,与世隔绝. Docker提供了一个名为docker0的虚拟网桥,它会为每个相连的容器分配一个虚拟子网.但是尽管容器都连在同一个虚拟网桥上,如果没有额外的配置 ...
- Docker中修改mysql容器端口映射
一.问题描述: 我本地有一个mysql,端口是3306,然后我用docker开启了一个mysql容器,端口还是3306,导致我用docker上的mysql的时候没法用,于是想到端口映射出了问题,就把d ...
最新文章
- 26.angularJS $routeProvider
- Android播放器自定义,android surfaceView+mediaPlayer 自定义视频播放器
- 21天学通HTML5和CSS3第二版,21天学通HTML5+CSS3
- LeetCode 面试题 10.02. 变位词组
- bootstrap-table文档
- 原生安卓苹果APP-java抢单派单系统平台源码
- linux屏幕分辨率文件,Ubuntu 16.04 LTS设置屏幕分辨率显示Unknown display 解决
- 破局:滚动率知识在信贷风控中的系统总结
- Its configuration is R5 3600, ASUS B450M motherboard
- java实现基于关键字的文件夹(文件)的搜索、文件夹(文件)的复制、删除
- BeanShell变量和方法的作用域
- 使用Spine来完成骨骼动画
- 如何将在不同文件夹下的批量plt文件转换为txt文件--python
- 品质qc工程图_QC工程图_(品管).xls
- C#学习笔记:什么是哈希值
- 1194: 总成绩排序(结构体专题)
- 【EXLIBRIS】不奪
- web页面性能检测工具Lighthouse
- 突破现实的墙 | 众猎创始人Tony Guo和他的猎界风云
- QT210 自制bootloader 移植kernel3.4.2 制作ramdisk busybox1.20.2
热门文章
- 树莓派如何接硬盘_树莓派之挂载移动硬盘
- 开始编写寄几的 CSS 基础库
- 分享一道用Python基础+蒙特卡洛算法实现排列组合的题目(附源码)
- 传奇故事-领军AI的华裔女性-李飞飞
- 纯HTML+CSS实现3D炫酷魔方(相册)
- 解决chrome 浏览器不能看视频
- 【Python爬虫】IOS苹果商店指定APP评论爬取
- 奔梦向前-web前端开发工具-简称DW软件适合写网页制作代码-2020-04-25
- python内置函数可以返回列表、元组_Python内置函数_________可以返回列表、元组、字典、集合、字符串以及range对象中元素个数。...
- 1.4 数列极限概念的推广