Docker使用、Dockerfile和Dockercompose(一)

参考
作者: Warm and new
原文链接: cnblogs.com/peng104/p/10296717.html

一、引言

1. docker简介

  • Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。
  • Docker 使用 Google 公司推出的 Go 语言 进行开发实现。
  • docker是linux容器的一种封装,提供简单易用的容器使用接口。它是最流行的Linux容器解决方案。
  • docker的接口相当简单,用户可以方便的创建、销毁容器。
  • docker将应用程序与程序的依赖,打包在一个文件里面。运行这个文件就会生成一个虚拟容器。
    程序运行在虚拟容器里,如同在真实物理机上运行一样,有了docker,就不用担心环境问题了。

2. Docker的核心概念

Docker包含三大核心概念:镜像、容器、仓库,基础部分功能都是围绕他们进行展开,因此先有个简单的印象即可。

  • 镜像 (image)
    可以简单理解为一个只读的模板或者应用程序及其环境的打包,后边的容器就是通过它来进行创建。它类似于虚拟机镜像,如果你有面向对象的编程经验,也可以把它理解为一个实体类(Class)。
  • 容器 (container)
    简单理解为一个沙盒,用来运行和隔离我们开发的应用程序。你可以理解为正在运行的一个虚拟机,也可以理解为通过实体类Clss创建的一个对象。镜像是静态的,容器是动态的
  • 仓库 (repository)
    仓库就是集成存放镜像的地方,Docker仓库类似于代码仓库,如果你有Git和Maven的使用经验,那就很好理解了。
    官方提供的仓库为Docker Hub,但有时候国外网速不太理想,因此国内云厂商如阿里云、网易云等也提供了镜像仓库的本地源,当然也可以自己搭建私有仓库。

3. 为什么要用Docker?

要搞清楚我们为什么要用Docker,那就来先看看Docker都能干些啥?

  • 1.更高效的利用系统资源
    由于容器不需要硬件虚拟以及运行完整操作系统等额外开销,Docker对系统资源的利用率更高。
    无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多的应用。
  • 2.更快速的启动时间
    传统的虚拟机技术启动应用服务往往需要数分钟,而Docker容器应用由于直接运行于宿主机内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。
  • 3.一致的运行环境
    开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些bug并未在开发过程中被发现。
    而Docker的镜像提供了除内核外完整的运行时环境,确保了应用运行环境的一致性,从而不会再出现“这段代码在我机器上没问题啊”这类问题。
  • 4.持续交付和部署
    对开发和运维人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
    使用Docker可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过Dockerfile来进行镜像构建,并结合 持续集成(Continuous Integration)系统进行集成测试,
    而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署。
    而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环 境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。
  • 5.更轻松的迁移
    由于Docker确保了执行环境的一致性,使得应用的迁移更加容易。Docker可以在很多平台上运行,无论是物理机、虚拟机、共有云、私有云,甚至是笔记本,其运行结果是一样的。
    因此用户可以很轻易的将一个在平台上运行的应用,迁移到另一个平台上,而不用担心环境变化而导致应用无法正常运行的情况。

二、Docker安装

1. Linux安装

1.1 Ubuntu 安装Docker

apt-get install docker.io

1.2 CentOS 安装Docker

yum -y install docker-io

如果 运行 docker images 命令正常, 则表示可以在本电脑使用了。

2. Docker配置加速

2.1 为什么要使用加速器

因为有GFW,它会降低我们访问外网站的速度,甚至是屏蔽掉部分外网
而且,Docker官方镜像网站的服务器在国外,距离较远,也会降低拉取镜像的速度
所以我用可以使用加速器,加快在国内获取Docker官方镜像的速度

2.2 Linux 用户配置加速器

修改 /etc/docker/daemon.json 文件并添加上registry-mirrors 键值。

{
    "registry-mirrors": ["https://registry.docker-cn.com"]
}

三、Docker使用

1. 相关网站

1.1 官网

https://www.docker.com/

从官网可以看到Docker分为社区版(CE)和企业版(EE),一般情况下使用社区版即可。

1.2 在线Docker练习

https://labs.play-with-docker.com/

该网站是Docker船长为了帮助大家学习Docker而花了几天时间开发的一款基于浏览器的产品,play-with-docker,人称PWD,它是一个Docker的演练场。
它可以让用户在几秒钟内在浏览器中体验免费的Alpine Linux虚拟机,运行Docker命令,可以构建、运行Docker容器,甚至可以在Docker Swarm模式下创建集群,除了演练场之外,PWD还包含了一个由大量Docker labs实例和测试。

2. Docker常用命令

指令说明
docker images查看已下载的镜像
docker rmi 镜像名称:标签名删除已下载的镜像
docker search 镜像从官方仓库(hub.docker.com)查找镜像
docker pull 镜像名称:标签名标签名默认是latest,代表最新版本
docker run创建容器
docker ps列出运行中的容器
docker ps -a列出所用的容器(运行、未运行)
docker rm 容器名称删除停止的容器
docker rm -f 容器名称删除运行中的容器
docker start 容器名称启动容器
docker stop 容器名称停止容器
docker restart 容器名称重启容器
docker exec执行容器中的命令
docker run … -v 主机目录:容器中的目录 …挂载硬盘
docker cp 源目录 目标目录复制文件
  • 挂载硬盘
    为了能够保存(持久化)数据以及共享容器间的数据,Docker 提出了 Volume 的概念,
    可以使用 -v 这个参数,将容器中的一个目录或者文件 和主机上的目录和文件进行绑定,绑定之后,修改主机上的这个文件就相当于修改了容器中的文件,删除容器之后,绑定的目录和文件还在主机(不会被删除)

Docker使用、Dockerfile和Dockercompose(二).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值