0x00 概述 由于 Docker 镜像的结构优势,使它的占用空间远小于普通的虚拟机镜像,而这就大幅减少了 Docker 镜像在网络或者其他介质中转移所花费的时间,进而提高了我们进行迁移部署的效率.不过,你要是以为这就是 Docker 能够快速部署的终极大招那就大错特错了.在这一小节里,我们将谈到 Docker 特有的镜像构建定义文件,也就是 Dockerfile.通过了解它,你能真正体验一种进行秒级镜像迁移的乐趣. 0x01 关于 Dockerfile Dockerfile 是 Docker…
0x00 概述 在掌握 Dockerfile 的基本使用方法后,我们再来了解一些在开发中使用 Dockerfile 的技巧.这一小节的展现方式与之前的略有不同,其主要来自阅读收集和我自身在使用中的最佳实践.也许这里面介绍的不是最为标准或是合乎规范的方式,但一定是能够直接帮助大家在开发中使用 Docker 提升生产力的方式.下面就让我们来看看这些关于 Dockerfile 的使用技巧吧. 0x01 构建中使用变量 在实际编写 Dockerfile 时,与搭建环境相关的指令会是其中占有大部分比例的指…
一.实验环境 1.宿主机OS:Win10 64位 2 .虚拟机OS:Ubuntu18.04 64位    虚拟机名称:Ubuntu18VM1   虚拟机IP:192.168.8.25 3.账号:docker 二.简要步骤 1.编写一个dockerfile文件 2.编写外部文件requirements.txt 3.编写一个app.py文件 4.创建镜像 5.查看镜像 6.创建并运行容器 7.从浏览器里查看 三.详细步骤 1.建立一个docker的工作文件夹dokerspace,进入这个文件夹,编写…
Dockerfile 概念 Dockerfile 是一个文本文件,但包含所构建容器在运行时候的参数.库.资源配置.可以简单理解为我们现有的镜像,比如Centos/Nginx 但我们需要构建一个容器的时候,却需要用一些操作将这两个镜像组合在一起,比如要构建一个Nginx容器. 那首先需要一个操作系统.比如Centos 然后在这个操作系统里面下载NGINX 配置Nginx 监听端口等等. 这样是不是一个容器就构建出来了.这个容器是独立运行的一个操作系统. 镜像和容器的关系 镜像运行起来就成为了容器.…
在介绍VOLUME指令之前,我们来看下如下场景需求: 1)容器是基于镜像创建的,最后的容器文件系统包括镜像的只读层+可写层,容器中的进程操作的数据持久化都是保存在容器的可写层上.一旦容器删除后,这些数据就没了,除非我们人工备份下来(或者基于容器创建新的镜像).能否可以让容器进程持久化的数据保存在主机上呢?这样即使容器删除了,数据还在. 2)当我们在开发一个web应用时,开发环境是在主机本地,但运行测试环境是放在docker容器上. 这样的话,我在主机上修改文件(如html,js等)后,需要再同步…
一.DockerFile是什么 1.DockerFile是用来构建docker镜像的构建文件,是由一系列参数和命令构成的脚本. 2.构建三步骤: 手动编写一个dockerfile文件,然后直接docker build命令执行,获得一个自定义的镜像,最后 docker run 创建一个容器实例. 二.centos的DockerFile FROM scratch # centos的祖先 MAINTAINER The CentOS Project <cloud-ops@centos.org> # 作…
0x00 概述 与 Dockerfile 一样,编写 Docker Compose 的配置文件是掌握和使用好 Docker Compose 的前提.编写 Docker Compose 配置文件,其本质就是根据我们所设计的应用架构,对不同应用容器进行配置并加以组合.在这一节中,我们就来谈谈如何编写 Docker Compose 的配置文件,了解其中常见配置项的使用方法. 0x01 定义服务 为了理解在开发中常用的 Docker Compose 配置,我们通过一个在开发中使用的 Docker Com…
目录 Hello World 后台运行 停止运行 容器 载入镜像 指定端口映射 查看日志 查看应用的进程 登入镜像内部 移除容器 镜像 查看本地镜像 拉取镜像 查找镜像 更新镜像 构建镜像 设置镜像标签 Hello World docker run ubuntu:15.10 /bin/echo "Hello world" docker 是命令二进制文件 run 运行一个容器 ubuntu:15.10 镜像名称,通过是名字加版本号 后面是容器里执行的任务 交互式,进入镜像内部 docke…
参考博客: 1.官网教程:https://docs.docker.com/reference/ 可以一边敲命令一边对照官网学习,也可以通过阅读docker --help来学习 2..视频教程:https://www.bilibili.com/video/BV1og4y1q7M4?t=380&p=8(老师讲的很好) 3.https://www.cnblogs.com/Dev0ps/p/11527522.html 帮助命令 docker version #显示docker的版本信息. docker…
访问仓库,仓库是集中从存放镜像的地方.类似Maven. Docker Hub 目前由Docker官方维护的一个公共仓库,其中包括15000的镜像. 注册 在 https://hub.docker.com 免费注册一个Docker 账号. 登录 通过 docker login 命令交互式的输入用户名和密码完成登录.通过 docker logout 退出登录. 拉取镜像 通过 docker search 命令来查找官方仓库中的镜像,并利用 docker pull 命令将它下载到本地. 返回了很多关键…
参考资料: https://nachuan.blog.csdn.net/article/details/96041277 https://www.cnblogs.com/xzkzzz/p/9627658.html https://www.linuxprobe.com/update-kernel-centos7.html 1.查看系统启动日志(里面往往有docker运行的error日志) tail -100f /var/log/messages 出现上述问题的原因,可以参考官网:https://d…
参考资料: 1.博客1:https://www.jianshu.com/p/d645e2ed4bb1 使用docker的时候有一些常见问题: docker权限问题:一般输入docker命令前面都要加sudo,否则会出现下面的错误: 一般的解决方法是, 1.切换到root用户,问题是,切换后输入docker的命令tab命令就没有提示了: 2.每次输入命令前加上sudo,但是本人又觉得这样很麻烦... 因此我觉得需要在既可以有命令提示,又避免输入sudo,这就需要把添加当前用户到docker组,让当…
ONBUILD指令可以为镜像添加触发器.其参数是任意一个Dockerfile 指令. 当我们在一个Dockerfile文件中加上ONBUILD指令,该指令对利用该Dockerfile构建镜像(比如为A镜像)不会产生实质性影响. 但是当我们编写一个新的Dockerfile文件来基于A镜像构建一个镜像(比如为B镜像)时,这时构造A镜像的Dockerfile文件中的ONBUILD指令就生效了,在构建B镜像的过程中,首先会执行ONBUILD指令指定的指令,然后才会执行其它指令. 需要注意的是,如果是再利…
ENV指令用来在镜像构建过程中设置环境变量.我们来看一个Dockerfile的例子: #test FROM ubuntu MAINTAINER hello ENV MYDIR /mydir RUN mkdir $MYDIR RUN echo hello world > $MYDIR/test.txt 假设用上面的dockerfile构建了一个叫myimage的镜像.运行  docker run -i -t myimage /bin/bash 我们发现新建的容器中有了 /mydir目录,并有了/m…
Dockerfile中的WORKDIR指令用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行. 相当于设置容器的工作目录了.我们来看一个dockerfile文件 #test FROM ubuntu MAINTAINER hello RUN mkdir /mydir RUN echo hello world > /mydir/test.txt WORKDIR /mydir CMD ["more" ,"test.txt"] 假设根据该dockerfil…
本文介绍Dockerfile的 ENTRYPOINT指令的含义. 先回顾下CMD指令的含义,CMD指令可以指定容器启动时要执行的命令,但它可以被docker run命令的参数覆盖掉. ENTRYPOINT 指令和CMD类似,它也可用户指定容器启动时要执行的命令,但如果dockerfile中也有CMD指令,CMD中的参数会被附加到ENTRYPOINT 指令的后面. 如果这时docker run命令带了参数,这个参数会覆盖掉CMD指令的参数,并也会附加到ENTRYPOINT 指令的后面. 这样当容器…
一.ADD指令 ADD指令的功能是将主机构建环境(上下文)目录中的文件和目录.以及一个URL标记的文件 拷贝到镜像中. 其格式是: ADD  源路径  目标路径 如: #test FROM ubuntu MAINTAINER hello ADD test1.txt test1.txt ADD test1.txt test1.txt.bak ADD test1.txt /mydir/ ADD data1 data1 ADD data2 data2 ADD zip.tar /myzip 有如下注意事…
我们知道,通过docker run 创建并启动一个容器时,命令的最后可以指定容器启动后在容器内立即要执行的指令,如: docker run -i -t ubunu /bin/bash   //表示容器启动时立即在容器内打开一个shell终端 docker run ubuntu /bin/ps    //表示容器启动后立即运行 /bin/ps命令,显示容器的当前进程. 除了这种方式外,我们可以在dockerfile文件中通过CMD指令指定容器启动时要执行的命令.如: #test FROM ubun…
USER指令用于指定容器执行程序的用户身份,默认是 root用户. 在docker run 中可以通过 -u 选项来覆盖USER指令的设置. 举例:docker run -i -t -u mysql newmysqldb /bin/bash 显示的shell提示符是: mysql@57cd57edba38:/$ 注意:docker容器中的root用户密码是随机分配的.…
前言: 环境:centos7.5 64 位 正文: 拉取 microsoft/dotnet, 安装完毕后执行 docker images 可以看到本地已经包含 microsoft/dotnet #包含了.NET Core项目所需的一切依赖和运行时环境. docker pull microsoft/dotnet 使用 docker run 镜像名 可以启动镜像,通过指定参数-it 以交互模式(进入容器内部)启动.依次执行以下命令: //启动一个dotnet镜像 $ docker run -it m…
docker hub上有官方的mysql镜像,我们可以利用它来创建mysql容器,作为一个服务容器使用. 1.下载mysql镜像 docker pull mysql 2.创建镜像 docker run --name mysqldb  -e MYSQL_ROOT_PASSWORD=root -d mysql 3.获取被创建容器的ip docker inspect mysqldb 4.从主机上利用mysql客户端测试能否连接到容器中的mysql服务 mysql -h 172.17.0.2 -u ro…
Docker学习笔记(2-4)Docker应用实验-redist server 和client的安装使用 一.获取redis容器(含客户端和服务端) 二.创建服务端容器 1.在终端A中运行redis-server容器 查询本地镜像 :sudo docker images 运行服务端     :sudo docker run -d redis 查看服务端地址:sudo docker inspect -f '{{.NetworkSettings.IPAddress}}' c6c3 sudo dock…
参考与入门推荐:https://www.cnblogs.com/ECJTUACM-873284962/p/9789130.html#autoid-0-0-9 最近学习docker,写一个简单构建Dockerfile的笔记. 我的系统:Windows 10 Docker版本:Docker for Windows 首先,我们打开cmd命令提示符,进入桌面,创建一个文件夹testdocker,然后在其中创建一个空的二进制文件Dockerfile.如下图所示: 编辑Dockerfile文件,在其中简单输…
Docker学习(六)Dockerfile构建自定义镜像 前言 通过前面一篇文章可以知道怎么去使用一个镜像搭建服务,但是,如何构造自己的一个镜像呢,docker提供了dockerfile可以让我们自己构造一个属于自己的镜像 什么是dockerfile 是一个包含用于组合镜像的命令的文本文档 Docker通过读取Dockerfile中的指令按步自动生成镜像 实战-打包自定义tomcat镜像 Dockerfile编写 mkdir -p /usr/local/docker/bk-web-dockerf…
Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装.部署和升级,非常方便.因为使用了容器,所以可以很方便的把生产环境和开发环境分开,互不影响,这是 docker 最普遍的一个玩法.更多的玩法还有大规模 web 应用.数据库部署.持续部署.集群.测试环境.面向服务的云计算.虚拟桌面 VDI 等等. 主观…
Docker学习笔记 https://yeasy.gitbooks.io/docker_practice/content/   一 环境搭建 Ubuntu安装 .添加软件源的GPG密钥 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - .添加Docker软件源 sudo add-apt-repository \ "deb [arch=amd64] https://mirror…
简介 在docker学习笔记(1)- 架构概述一节中可以看到镜像是docker三大组件之一,可以将Docker镜像类比为虚拟机的模版. 镜像由多个层组成,每层叠加之后从外部看就像一个独立的对象,镜像的内部包括操作系统.应用程序.应用运行时所必须的依赖包等. 使用镜像时从仓库中拉取镜像到Docker主机,然后使用该镜像可以启动一个或多个容器,也可以将容器构建为镜像. 具体的概念与实现在后续实现Docker的基础技术中记录,先整理镜像的用法 相关命令 镜像加速 国内访问Docker hub有速度缓慢…
技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔记:http://www.open-open.com/lib/view/open1423703640748.html 深入浅出docker:http://www.infoq.com/cn/articles/docker-core-technology-preview 安装 参考:http://www…
回到占占推荐博客索引 使用docker也有段时间了,写了不少文章与总结,下面把它整理个目录出来,方便大家去学习与检索! docker~学习笔记索引 docker~linux下的部署和基本命令(2017-04-07 22:47) docker~docker-machine的介绍(2017-04-12 12:02) docker~使用阿里加速器安centos(2017-04-13 10:16) docker~大叔对术语的解释(2017-06-18 19:19) docker~Dockerfile优化…
0x00 概述 使用 Docker 时,最常用的命令无非是 docker container 和 docker image 相关的子命令,当然最初没有管理类命令(或者说分组)的时候,最常使用的命令也无非是 docker run docker commit docker build 和 docker images 这些. 今天来聊一下和 Docker 中核心概念 image 相关的重要命令, docker build 或者说 docker image build 为了简便起见,下文的命令全部使用 …