目录:

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. Macaca环境搭建(三)----uirecorder Android录制

    一.安装Macaca-Android 命令窗口输入:npm i macaca-android -g 二.安装android-SDK 1.下载并安装ADT-bundle,官网下载地址我就不提供了,因为下 ...

  2. 第四周课程总结&试验报告2

    试验报告2 写一个名为Rectangle的类表示矩形.其属性包括宽width.高height和颜色color,width和height都是double型的,而color则是String类型的.要求该类 ...

  3. SpringMVC基础教程

    1. 最简单的配置 首先是要有相应的配置文件: 文件内容: <context:component-scan base-package="com.imethsoft.server.*&q ...

  4. 对C++类的继承和派生的理解

    C++中的继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承类似,例如儿子继承父亲的财产. 1.继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程. ...

  5. # Clion复制提示信息

    Clion复制提示信息 windows: 按着alt 左键点击错误信息(按键点击同时进行) mac:按着option 左键点击错误信息 搞定

  6. CVE-2017-17558漏洞学习

    简介 这是USB core中的一个拒绝服务漏洞.带有精心设计的描述符的恶意USB设备可以通过在配置描述符中设置过高的bNumInterfaces值来导致内核访问未分配的内存.虽然在解析期间调整了该值, ...

  7. iis 8.0 HTTP 错误 404.3 server 2012

    最近在学习WCF,发现将网站WCF服务放到IIS上时不能正常运行,从网上搜了一下: 解决方法,以管理员身份进入命令行模式,运行: "%windir%\Microsoft.NET\Framew ...

  8. spring boot入门与进阶教程

    SpringBoot入门.SpringBoot进阶.Spring Cloud微服务.Spring Ecosystem 微服务相关.Spring Boot 入门 IDEA 版本.Spring Boot集 ...

  9. 03 Linux下运行Django项目

    1.安装windows和linux传输文件的工具 pip install lrzsz 提供两个命令 一个是上传一个是下载 rz 接收 直接rz sz 上传 直接sz 或者直接拖拽 2.在线下载资源的命 ...

  10. JAVA核心技术--继承(1)

    1.继承:向上追溯,对同一批类的抽象,延续和扩展父类的一切信息! 1)关键字:extends      例如,父类是Animal,子类是Dog;   eg: public class Dog exte ...