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,删除相关不需要文件 ...
随机推荐
- SQL语句规范
SQLStructure Query Language,结构化查询语言 1.规范(1)mysql对于SQL语句不区分大小写,SQL语句关键字尽量大写 show databases;show DataB ...
- 解决ubuntu命令行中文乱码
解决方法: 1.安装zhcon 登入用户后,输入 1 sudo apt-get install zhcon 2.启动zhcon 输入 1 zhcon --utf8 PS:zhcon支持中文输入法,按 ...
- ASP.NET Core中使用EF Core(MySql)Code First
⒈添加依赖 MySql.Data.EntityFrameworkCore ⒉在appsettings.json配置文件中配置数据库连接字符串 { "Logging": { &quo ...
- (四)Java秒杀项目之JMeter压测
一.JMeter入门压测 1.打开JMeter工具,选中测试计划->右键添加->线程(用户)->线程组,页面中的线程数就是并发数,页面中的Ramp-Up时间(秒)表示通过多长时间启动 ...
- ajax怎么打开新窗口具体如何实现
var newwindow=window.open('about:blank'); jQuery.ajax({ type: 'POST', url: 'clickRate.action', dataT ...
- HDU1251 统计难题(字典树|map
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). Input输入数据的第一部分 ...
- AcWing登山
这是2006北大举办的ACM的一道题. 题意为:给定景点海拔高度,队员们不去游览相同高度的景点,一开始往上爬,一但往下爬就不能再向上爬,求最多可以游览多少个景点.那么我们可以得到一个结论:以一个最高点 ...
- 快速幂(Fast_Power)
定义快速幂顾名思义,就是快速算某个数的多少次幂. 其时间复杂度为 O(log2N), 与朴素的O(N)相比效率有了极大的提高. 以下以求a的b次方来介绍 原理把b转换成2进制数 该2进制数第i位的权为 ...
- O008、LVM类型的Storage Pool
参考https://www.cnblogs.com/CloudMan6/p/5277927.html LVM类型的Storage Pool 不仅一个文件可以分配给客户机作为虚拟磁盘,宿主机上 ...
- 2018年4月份,阿里最新的java程序员面试题目,仅供参考。
目录 技术一面(23问) 技术二面(3大块) 性能优化(21点) 项目实战(34块) JAVA方向技术考察点(15点) JAVA开发技术面试中可能问到的问题(17问) 阿里技术面试1 1.Java I ...