目录:

1、docker为什么会出现?

2、docker的理念

3、容器化技术

4、docker三要素

5、docker安装

6、docker帮助命令

7、Docker阿里云镜像加速器配置.

8、docker 常用命令

9、从容器内拷贝文件到宿主机

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的更多相关文章

  1. Centos7安装Docker 基于Dockerfile 搭建httpd运行环境

    Centos7安装Docker 基于Dockerfile 搭建httpd运行环境 docker docker搭建 docker build 本文档完成目标内容如下 使用Docker搭建http服务器一 ...

  2. docker 13 dockerfile的保留字指令

    Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本. 构建三步骤:1.编写dockerfile文件:2.docker build:3.docker run doc ...

  3. docker:Dockerfile构建LNMP平台

    docker:Dockerfile构建LNMP平台   1.dockerfile介绍  Dockerfile是Docker用来构建镜像的文本文件,包含自定义的指令和格式.可以通过docker buil ...

  4. docker之Dockerfile指令介绍

    Docker通过对于在Dockerfile中的一系列指令的顺序解析实现自动的image的构建 通过使用build命令,根据Dockerfiel的描述来构建镜像 通过源代码路径的方式 通过标准输入流的方 ...

  5. Docker、Dockerfile、Docker镜像、容器这些都是什么鸟?

    老生常谈,再再再……普及一下: Docker:最早是dotCloud公司出品的一套容器管理工具,但后来Docker慢慢火起来了,连公司名字都从dotCloud改成Docker. Dockerfile: ...

  6. Docker使用Dockerfile创建支持ssh服务自启动的容器镜像

    原文链接:Docker使用Dockerfile创建支持ssh服务自启动的容器镜像 1. 首先创建一个Dockerfile文件.文件内容例如以下 # 选择一个已有的os镜像作为基础 FROM cento ...

  7. (转)Docker 基础 : Dockerfile

    全文来自 Docker 基础 : Dockerfile Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义的镜像.我们会先介绍 Dockerfile 的 ...

  8. 【docker】Dockerfile

    [docker]Dockerfile 转载: ============================================================= =============== ...

  9. Docker 0x05: Dockerfile制作镜像

    目录 Dockerfile制作镜像 一句话什么是dockerfile dockerfile脚本指令 小结 Dockerfile制作镜像 dockerfile 可以是制作自己镜像的脚本文件,按照这个脚本 ...

  10. docker通过dockerfile构建JDK最小镜像,Docker导出导入镜像

    docker通过dockerfile构建JDK最小镜像,Docker导出导入镜像 一.docker通过dockerfile构建JDK最小镜像 1.1 下载JRE 1.2 解压JRE,删除相关不需要文件 ...

随机推荐

  1. SQL语句规范

    SQLStructure Query Language,结构化查询语言 1.规范(1)mysql对于SQL语句不区分大小写,SQL语句关键字尽量大写 show databases;show DataB ...

  2. 解决ubuntu命令行中文乱码

    解决方法: 1.安装zhcon 登入用户后,输入 1 sudo apt-get install zhcon 2.启动zhcon 输入 1 zhcon --utf8  PS:zhcon支持中文输入法,按 ...

  3. ASP.NET Core中使用EF Core(MySql)Code First

    ⒈添加依赖 MySql.Data.EntityFrameworkCore ⒉在appsettings.json配置文件中配置数据库连接字符串 { "Logging": { &quo ...

  4. (四)Java秒杀项目之JMeter压测

    一.JMeter入门压测 1.打开JMeter工具,选中测试计划->右键添加->线程(用户)->线程组,页面中的线程数就是并发数,页面中的Ramp-Up时间(秒)表示通过多长时间启动 ...

  5. ajax怎么打开新窗口具体如何实现

    var newwindow=window.open('about:blank'); jQuery.ajax({ type: 'POST', url: 'clickRate.action', dataT ...

  6. HDU1251 统计难题(字典树|map

    Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). Input输入数据的第一部分 ...

  7. AcWing登山

    这是2006北大举办的ACM的一道题. 题意为:给定景点海拔高度,队员们不去游览相同高度的景点,一开始往上爬,一但往下爬就不能再向上爬,求最多可以游览多少个景点.那么我们可以得到一个结论:以一个最高点 ...

  8. 快速幂(Fast_Power)

    定义快速幂顾名思义,就是快速算某个数的多少次幂. 其时间复杂度为 O(log2N), 与朴素的O(N)相比效率有了极大的提高. 以下以求a的b次方来介绍 原理把b转换成2进制数 该2进制数第i位的权为 ...

  9. O008、LVM类型的Storage Pool

    参考https://www.cnblogs.com/CloudMan6/p/5277927.html   LVM类型的Storage Pool   不仅一个文件可以分配给客户机作为虚拟磁盘,宿主机上  ...

  10. 2018年4月份,阿里最新的java程序员面试题目,仅供参考。

    目录 技术一面(23问) 技术二面(3大块) 性能优化(21点) 项目实战(34块) JAVA方向技术考察点(15点) JAVA开发技术面试中可能问到的问题(17问) 阿里技术面试1 1.Java I ...