Docker安装和简单使用

一. 什么是Docker

Docker是在linux服务器上运行的轻量级容器引擎。相较于传统的虚拟机,docker最大的特点就是容器本身耗费的额外资源极少。

二. 什么场景适合使用Docker

  1. 快速安装中间件
    作为工程师,开发部署的时候经常需要安装一些中间件,如redis、nginx、jenkins等。传统方式下安装这些中间件往往还需要安装一些其他的依赖程序,有时候依赖程序的版本还容易出冲突,总之是个很繁琐的事情。
    不过,现在各大中间件厂商,基本都会推出docker版的镜像。使用docker启动这些容器就非常简单粗暴无脑。
  2. 解决测试环境和线上环境不一致的问题
    很多工程师的老司机应该都有这样的体验,一个项目测试环境经过了缜密的测试基本应该没多少bug了,但一上线就各自奇葩问题层不出穷。虽然很多公司都要求测试环境要和正式环境一致,但实际情况很难做到完全一致,这些不一致的地方就会导致上述的事情。
    使用docker就可以很好的解决这个问题,工程师使用docker发布工程,发布的是一整套环境,而不仅仅是一套代码。

三. docker的安装。

docker是在linux服务器上运行的容器引擎,虽然windows机器上也可以通过安装linux虚拟器来安装使用,但性能和稳定性就不好讲了。正式环境使用docker建议只考虑linux机器。
这里将以阿里云centos7.3 64位操作系统,来演示如何安装。

  1. 更新yum安装的docker版本。
yum -y update docker
更新yum的docker版本
  1. yum安装docker。输入命令,耐心等待安装完成。
yum -y install docker
yum安装docker
  1. 启动docker。
service docker start
启动docker

非常简单,docker就安装完成并启动了。

四. 设置docker加速器。

刚才虽然成功安装并启动了docker,但是你会发现下载镜像的速度奇慢无比。因为docker默认从dockerhub网站去下载镜像,国内连接国外的网站下载,速度你懂的。好在docker也想到了这一点,提供了镜像加速的功能。

  1. 要使用镜像加速,首先你得有一个加速器地址。这里推荐使用阿里云的docker镜像仓库加速地址。进入阿里云的镜像仓库。在Docker Hub镜像站点获取你的专属加速器地址。

    加速地址

  2. 在服务器上输入以下命令,设置你的docker加速器并重启docker。注意把https://xxxxxxx.aliyuncs.com替换成你的专属加速器地址。

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxxxxx.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
设置加速器地址

至此,docker加速器设置完成。

五. 登录Docker Hub。

Docker Hub是docker镜像的国际通用仓库,相当于开源代码和github的关系。你可以在Docker Hub上下载到全球各大厂商提供的自己产品的官方docker镜像,还可以下载到其他工程师上传的镜像。你自己也可以上传镜像到Docker Hub进行保存和分享。

  1. 要在服务器登录Docker Hub,先得在Docker Hub的网站申请账号。这里就不啰嗦了,看官请自行申请。

  2. 在服务器输入命令docker login开始登录,并根据提示输入用户名密码。

    登录Docker Hub

六. 下载镜像。

打一个比方来稍微科普下,镜像和容器的关系就相当于java语言里,类和对象的关系。
下面通过一个简单的java镜像的例子来讲解。

  1. 首先,我们需要先获取官方的java镜像。你可以在Docker Hub的网站进行搜索。
Docker Hub搜索java

如上图,选择第一个java,official表示这是一个官方的镜像。点击进入详细页面。

Docker Hub java镜像详细页面

在详细页面的右上角,可以找到下载该镜像的命令。

  1. 现在找到了下载镜像的命令,让我们回到linux服务器,输入该命令。
docker pull java
下载java镜像

耐心等待镜像下载完成。此处你应该会发现,配置了加速器以后,下载镜像的速度简直飞快。

输入docker images命令来查看该服务器里所有镜像。此处可以看见刚才下载的java镜像。

查看所有镜像

七. 启动容器。

现在镜像已经下载完成,该通过镜像来启动容器了。
容器启动主要通过docker run + 可选参数 + 容器编号/容器名 + 启动命令。可选的参数很多,本文就不一一赘述了,感兴趣的朋友可自行查阅Docker官方文档。这里提几个最常用的来完成本示例的讲解。

  • -d 后台启动容器,默认情况下启动容器是非后台启动,启动以后会自动进入容器内部,而且一旦退出容器,容器也会自动关闭。加上该命令后,使用后台启动的方式启动容器,启动以后不会自动进入容器内部,只会返回容器编号。容器在后台自动运行。
  • -p port:port 将指定容器的端口号映射为机器的端口号,前一个port为主机的端口号,后一个port为容器的端口号。
  • -v path:path 将主机的一个硬盘目录或文件挂载到容器的指定位置。前一个path为主机的目录路径或文件,可以为绝对路径,也可以是一个自定义名称,如果是自定义名称,你可以在/var/lib/docker/volumes目录下找到;后一个path为容器内的路径,一般是绝对路径。
  • --name 给容器起一个别名
    介绍了启动容器的基本命令,我们试着来直接启动一个java容器。
docker run -d -it -p 8080:8080 -v /data/test.jar:/data/test.jar --name java docker.io/java java -jar /data/test.jar

八. 其他常用命令。

  • 开启docker服务 service docker start
  • 查看所有已启动容器 docker ps -a
  • 删除一个容器 docker rm 容器ID/容器别名
  • 删除一个镜像 docker rmi 镜像ID
  • 关闭一个已启动容器 docker stop 容器ID/容器别名
  • 启动一个关闭的容器 docker start 容器ID/容器别名
  • 查看一个容器的详情 docker inspect 容器ID/容器别名
  • 进入容器内部 docker exec -it 容器ID/容器别名 /bin/bash

推荐阅读更多精彩内容

  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 11,647评论 17 145
  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 6,808评论 0 118
  • 原文在此 获取镜像 之前提到过,Docker Hub 上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜...
    若与阅读 704评论 0 3
  • 0x01 核心概念 Docker镜像类似于虚拟机镜像,可以理解为一个面向Docker引擎的只读模板,包含了文件系统...
    闲云逸心阅读 2,386评论 0 8
  • 就在昨天,重庆人民鼓噪了好久的《从你的全世界路过》上映了,不好意思,这个名字我真的是看了好几遍才记住。 一般情况下...
    瘦得心疼阅读 46评论 0 0