目录:

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. Laravel 里最简单的CURD套路

    控制器 namespace App\Http\Controllers; use App\Http\Requests\UserAddressRequest; use App\Models\UserAdd ...

  2. JAVA第四周总结

    Java实验报告二 第一题 写一个名为Rectangle的类表示矩形.其属性包括宽width.高height和颜色color,width和height都是double型的,而color则是String ...

  3. 小菜鸟之oracle数据字典

    oracle数据字典 一.数据字典 数据字典是oracle存放有关数据库信息的地方,几乎所有的系统信息和对象信息都可在数据字典中进行查询.数据字典是oracle数据库系统的信息核心,它是一组提供有关数 ...

  4. Mysql binlog应用场景与原理深度剖析

    1 基于binlog的主从复制 Mysql 5.0以后,支持通过binary log(二进制日志)以支持主从复制.复制允许将来自一个MySQL数据库服务器(master) 的数据复制到一个或多个其他M ...

  5. .Net Core控制台应用加载读取Json配置文件

    ⒈添加依赖 Microsoft.Extensions.Configuration Microsoft.Extensions.Configuration.FileExtensions Microsoft ...

  6. sqlserver安装和踩坑经历

    sqlserver安装和踩坑经历 下载 下载 安装 大致是按照这个来的 安装教程 出错 windows系统安装软件弹出"Windows installer service could not ...

  7. powerdesiner概念模型转物理模型以及失败的解决方法

    powerdesiner概念模型转物理模型 概念模型转物理模型 关于powerdesinger 出现Entity Attribute code uniqueness解决办法 Entity Attrib ...

  8. Windows 系统安装 Docker

    详细方法参见官方文档. Win10 家庭版 安装Toolbox Win10 家庭版由于功能限制,不能直接安装 Docker for Windows, 需要使用 Toolbox 的形式进行安装. 确认版 ...

  9. spark教程(四)-SparkContext 和 RDD 算子

    SparkContext SparkContext 是在 spark 库中定义的一个类,作为 spark 库的入口点: 它表示连接到 spark,在进行 spark 操作之前必须先创建一个 Spark ...

  10. Https接口调用工具类

    ClientUtil.java import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org. ...