docker和Dockerfile
目录:
3、容器化技术
5、docker安装
10、镜像commit
11、容器数据卷
12、Dockerfile
13、Dockerfile案例1:自定义镜像mycentos
14、Dockerfile案例2:自定义镜像mytomcat
1、docker为什么会出现? <=返回目录
一款产品从开发到上线,从操作系统,到运行环境,再到应用配置,开发和运维之间的协作需要关心很多东西。docker之所以发展如此迅速,是因为它对此给出了一个标准化的解决方案。
环境配置如此麻烦,换一台机器,就要重来一次,费时费力。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装软件的时候把原始环境一模一样地复制过来。
2、docker的理念 <=返回目录
docker是基于GO语言实现的云开源项目。docker的主要目标是"Build, Ship and Run Any App, Anywhere", 也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的App及其运行环境能够做到"一次封装,到处运行"。
Linux容器技术的出现就解决了这样一个问题,而docker就是在它的基础上发展过来的。将应用运行在docker容器上面,而docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机器上就可以一键部署,大大简化了操作。
3、容器化技术 <=返回目录
LInux的一种虚拟化技术:Linux容器(Linux Containers,LXC)。Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。
4、docker三要素 <=返回目录
镜像、容器、仓库
可以把容器看做是一个简易版Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)
5、docker安装 <=返回目录
centos docker安装支持CentOS 6.5以上,要求系统为64位,系统内核为2.6.32-431或者更高版本。
unane -r: 查看系统内核
lsb_release -a: 查看CentOS版本信息
cat /etc/issue 或cat /etc/redhat-release
CentOS 6.8安装docker:Linux CentOS 6.8 安装 Docker
1)yum update -y
2) yum install -y epel-release
) yum install -y docker-io
) 安装后的配置文件: /etc/sysconfig/docker
) 启动docker后台服务,service docker start
) docker version
遇到:No package docker-io available 错误 (https://blog.csdn.net/qq_41216743/article/details/93532921)
直接执行命令:
yum install https://get.docker.com/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rpm
Ubuntu 18.04安装docker-ce
参考官方文档:https://docs.docker.com/install/linux/docker-ce/ubuntu/
6、docker帮助命令 <=返回目录
docker --help
docker build --help
7、Docker阿里云镜像加速器配置 <=返回目录
注册阿里云账号
获取加速器地址
配置本机docker运行镜像加速器
vim /etc/sysconfig/docker, 配置完重启docker服务 service docker restart
检查配置是否生效
8、docker 常用命令 <=返回目录
docker images: 查看本机安装的j镜像
docker search 镜像名称: 搜索镜像
docker pull 镜像名称:tag: 拉取镜像
docker rmi 镜像id: 删除镜像
新建并启动容器:docker run [选项] 镜像 [command] [args]
docker run -it centos:6.8: 启动一个centos6.8的镜像实例,-it选项表示开启一个终端,进行交互模式
启动了一个centos镜像容器实例后,-it选项表示开启一个终端,进行交互模式。退出该终端:
1)exit,退出终端并关闭容器
2)ctrl + p + q,退出终端,不关闭容器
使用ctrl + p + q,退出终端后,使用docker ps查看正在运行的容器实例
docker ps -l: 上一个运行的容器
docker ps -n 3: 上三个运行的容器
重新进入正在运行的容器终端
1) docker attach 容器id
2)docker exec -it 容器id /bin/bash
docker start/restart/stop 容器id: 启动/重启/停止容器,强制停止容器-f
docker rm 容器id: 删除已经停止的容器
9、从容器内拷贝文件到宿主机 <=返回目录
1)启动容器
2)进入宿主机终端,执行下面指令:
docker cp 容器id:/temp/a.txt /root:将容器/temp/a.txt拷贝到宿主机的root目录下。
10、镜像commit <=返回目录
docker commit: 提交容器副本使之成为一个新的镜像
docker commit -m="提交的描述信息" -a=“作者” 容器id 要创建的目标镜像名:【标签名】
11、容器数据卷 <=返回目录
容器数据卷:容器数据的持久化,容器与容器间,容器与宿主机之间共享数据;容器间继承+共享数据;
如何添加容器数据卷:
1)直接命令添加
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名:tag
查看数据卷是否挂载成功 docker inspect 容器id
容器与宿主机之间数据共享:共享(同步)数据
容器停止退出后,主机修改后数据是否同步:同步
2)docker file添加
第一步:编写DockerFIle
FROM centos
VOLUME ["/dataVolumeContainer1","dataVolumeContainer2"]
CMD echo "====== add data volume succ ======"
CMD /bin/bash
第二步:构建新的镜像
docker build -f dockerFIle文件绝对路径 -t 生成的镜像名,比如 docker build -f /root/mydocker/dockerFile1 -t oy/mycentos1:1.1 .
第三步:docker run 运行生成新的容器实例
12、Dockerfile <=返回目录
DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。
构建三步骤:编写DockerFile文件,docker build, docker run
搜索docker hub, 查看centos的DockerFile是如何编写的:(scratch是源镜像)
FROM scratch
ADD centos--container.tar.xz / LABEL org.label-schema.schema-version="1.0" \
org.label-schema.name="CentOS Base Image" \
org.label-schema.vendor="CentOS" \
org.label-schema.license="GPLv2" \
org.label-schema.build-date="" CMD ["/bin/bash"]
DockerFile保留字指令
FORM: 基础镜像,当前新镜像是基于哪个镜像
MAINTAINER: 镜像维护者的姓名和邮箱
RUN: 容器构建时需要运行的命令
EXPOSE: 当前容器对外暴露出的端口
WORKDIR: 指定在创建容器后,终端默认登录进来时的工作目录
ENV: 环境变量
ADD: 将宿主机目录下的文件拷贝进镜像,且自动处理URL和解压tar压缩包
COPY: 类似ADD,拷贝文件和目录到镜像中。COPY src dest / COPY ["src", "dest"]
VOLUME: 容器数据卷,用于数据保存和持久化
CMD: 指定一个容器启动时要运行的命令,可以有多个CMD命令,但只有最后一个生效,并且CMD命令会被docker run后面的参数替换
ENTRYPOINT: 类似CMD指令,但是不会被docker run后面的参数替换,而是追加docker run后面的参数到ENTRYPOINT命令中
ONBUILD: 当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的onbuild被触发
13、Dockerfile案例1:自定义镜像mycentos <=返回目录
需求:
1) 运行镜像得到容器实例后,进入该容器的落脚点为 /usr/local
2)可以使用vim
3)可以使用ifconfig指令
第一步:编写Dockerfile
FROM centos:6.8
MAINTAINER oy<oy@xxx.com> ENV MYPATH /usr/local
WORKDIR $MYPATH RUN yum -y install vim
RUN yum -y install net-tools EXPOSE CMD echo $MYPATH
CMD echo echo "===== succ ====="
CMD /bin/bash
第二步:构建docker build
docker build -f /root/mydocker/dockerFile1 -t oy/mycentos1:1.1 .
第三步:docker run
进入容器终端落脚点为/usr/local, 也可以使用vim和ifconfig
14、Dockerfile案例2:自定义镜像mytomcat <=返回目录
准备工作:
第一步:编写DockerFIle文件
FROM centos:6.8
MAINTAINER oy<oy@xxx.com> #把宿主机当前上下文的a.txt拷贝到容器的/usr/local目录下
COPY a.txt /usr/local/copy_a.txt #把jdk和tomcat压缩包添加到容器
ADD jdk-7u79-linux-x64.gz /usr/local
ADD apache-tomcat-7.0..tar.gz /usr/local #安装vim编辑器
RUN yum -y install vim #设置工作路径,即进入容器的落脚点
ENV WORKPATH
WORKDIR $WORKPATH #配置java和tomcat的环境变量
ENV JAVA_HOME /usr/local/jdk1..0_79
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-7.0.
ENV CATALINA_BASE /usr/local/apache-tomcat-7.0.
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin #容器运行时监听的端口
EXPOSE #容器启动时运行tomcat
#ENTRYPOINT ["/usr/local/apache-tomcat-7.0.70/bin/startup.sh"]
CMD ["/usr/local/apache-tomcat-7.0.70/bin/catalina.sh", "run"]
#CMD /usr/local/apache-tomcat-7.0./bin/startup.sh && tail -f /usr/local/apache-tomcat-7.0./bin/logs/catalina.out
第二步:构建docker build
docker build -f /root/mydocker/tomcat/tomcat_dockerFile -t oy/mytomcat1:1.1 .
第三步:docker run
docker run -it -p : oy/mytomcat1:1.1
报找不到/usr/local/apache-tomcat-7.0.70/bin/logs/catalina.out, 所以删掉dockerFile文件中"/usr/local/apache-tomcat-7.0.70/bin/logs/catalina.out"
docker和Dockerfile的更多相关文章
- Centos7安装Docker 基于Dockerfile 搭建httpd运行环境
Centos7安装Docker 基于Dockerfile 搭建httpd运行环境 docker docker搭建 docker build 本文档完成目标内容如下 使用Docker搭建http服务器一 ...
- docker 13 dockerfile的保留字指令
Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本. 构建三步骤:1.编写dockerfile文件:2.docker build:3.docker run doc ...
- docker:Dockerfile构建LNMP平台
docker:Dockerfile构建LNMP平台 1.dockerfile介绍 Dockerfile是Docker用来构建镜像的文本文件,包含自定义的指令和格式.可以通过docker buil ...
- docker之Dockerfile指令介绍
Docker通过对于在Dockerfile中的一系列指令的顺序解析实现自动的image的构建 通过使用build命令,根据Dockerfiel的描述来构建镜像 通过源代码路径的方式 通过标准输入流的方 ...
- Docker、Dockerfile、Docker镜像、容器这些都是什么鸟?
老生常谈,再再再……普及一下: Docker:最早是dotCloud公司出品的一套容器管理工具,但后来Docker慢慢火起来了,连公司名字都从dotCloud改成Docker. Dockerfile: ...
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
原文链接:Docker使用Dockerfile创建支持ssh服务自启动的容器镜像 1. 首先创建一个Dockerfile文件.文件内容例如以下 # 选择一个已有的os镜像作为基础 FROM cento ...
- (转)Docker 基础 : Dockerfile
全文来自 Docker 基础 : Dockerfile Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义的镜像.我们会先介绍 Dockerfile 的 ...
- 【docker】Dockerfile
[docker]Dockerfile 转载: ============================================================= =============== ...
- Docker 0x05: Dockerfile制作镜像
目录 Dockerfile制作镜像 一句话什么是dockerfile dockerfile脚本指令 小结 Dockerfile制作镜像 dockerfile 可以是制作自己镜像的脚本文件,按照这个脚本 ...
- docker通过dockerfile构建JDK最小镜像,Docker导出导入镜像
docker通过dockerfile构建JDK最小镜像,Docker导出导入镜像 一.docker通过dockerfile构建JDK最小镜像 1.1 下载JRE 1.2 解压JRE,删除相关不需要文件 ...
随机推荐
- python 爬虫 目录
爬虫 介绍 python 爬虫 urllib模块 python 爬虫 requests模块
- 【转帖】Gitlab 从 12.1 版本开始将不再支持 MySQL !
Gitlab 从 12.1 版本开始将不再支持 MySQL ! Gitlab 官方宣布,将从 12.1 版本开始不再支持 MySQL 数据库. http://news.51cto.com/art/20 ...
- [转帖]英特尔的 ME 或侵犯 Minix3 的自由软件许可证
英特尔的 ME 或侵犯 Minix3 的自由软件许可证 [日期:2017-12-11] 来源:Linux公社 作者:非非然 [字体:大 中 小] https://www.linuxidc.com/L ...
- Redis缓存击穿
缓存击穿 缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞. 比如在做 ...
- 2019中山纪念中学夏令营-Day12[JZOJ]
Begin (题目的排序方式:题号) 每期新姿势:(今天推荐一位巨佬)Cefola-Kiroxs 推荐知识:namespace的用法(本赛我的代码中将用到) 2019.08.12[NOIP普及组]模拟 ...
- 如何用纯 CSS 创作出平滑的层叠海浪特效
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/JvmBdE 可交互视频教 ...
- Windows 窗体消息大全(速查)
Windows窗口消息大全,全不全自己撸 通用窗口消息 WM_NULL:--------->空消息,可检测程序是否有响应等 WM_CREATE:--------->新建一个窗口 WM_DE ...
- spring + dubbo 学习
新启动的项目中可能会使用到dubbo,因为之前并没有接触过,所以先小试一下 示例运行环境准备:OS X 10.10.5 + java version "1.8.0_40" zook ...
- WPF中Brush类型
画刷Brush使用 画刷类 SolidColorBrush LinearGradientBrush RadialGradientBrush ImageBrush VisualBrush Drawing ...
- springboot页面模板thymeleaf的简单用法
thymeleaf基础语法: 变量输出与字符串操作: th:text 表示在页面输出值 th:value 表示将一个值放入input标签的value中 判断字符串是否为空: thymele ...