专栏首页分布式系统和大数据处理基于Docker的持续集成方案(安装docker) - Part.2

基于Docker的持续集成方案(安装docker) - Part.2

基于Docker的持续集成方案(安装docker) - Part.2

2018-6-9 作者: 张子阳 分类: 分布式系统

Docker是近几年非常流行的一项技术,我也花了一点时间研究了一下。这篇文章简单地记录一下如何在Linux(CentOS 7)系统上安装Docker,并概述了最常用的几条命令。

对Docker的简单理解

传统的虚拟化是操作系统级的,因而比较重,占用资源也比较多,在一台物理机上,无法扩展太多台。而基于docker的“虚拟化”,是在操作系统层面之上,提供了一个沙盒化的环境,使得应用彼此隔离。可以运行成百上千的Docker容器。

使用Docker的好处,最重要的就是简化程序的安装和部署。以往我们经常会出现这样一种情况:在开发机器上测试运行没有问题,放到测试服务器上时就运行不起来,需要安装和配置各种运行环境、依赖的组件、以及环境变量等;测试服务器运行正常以后,上传到正式服务器,又出现类似的情况,又要再检查一遍。

有时候,对同一个运行环境,不同的程序依赖的是高低不同的两个版本,当这两个程序需要同时运行时,如果这个运行环境没有做好向下兼容,那么升级也不是(依赖低版本的程序出现问题),不升级也不是(依赖高版本的程序无法运行)。

简言之,docker将程序和其所有的外部依赖打包到了一个容器中,然后一起运行。使用Docker容器对不同的应用程序进行隔离,方便地解决了上面的问题。

Docker的安装步骤

Docker是使用Go语言基于Linux系统开发的,Windows只支持Windows 10和Windows server 2016以上版本。这里我的操作系统是Cent OS 7.2。

docker的安装可以通过先更新yum源,再通过yum install命令来安装;也可以下载rpm包,然后直接安装包。个人倾向于后一种。

选择rpm安装包

官方下载地址:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

从列表中复制最新的下载地址:

docker rpm包下载

在Cent OS上使用wget 命令进行下载

创建一个downloads文件夹,然后使用wget命令进行下载。

[root@mylinux downloads]# wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm

使用yum install命令安装

[root@mylinux downloads]# yum install docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm

启动Docker进程

systemctl start docker

验证安装

直接输入docker命令,会列出该命令的用法。

docker

运行自己的第一个容器:

docker run hello-world

此时docker会先检查本地是否有hello-world这个镜像(image),因为是第一次运行,自然没有,此时会从hub.docker.com上自动获取一个,然后再启动容器,运行这个镜像。

正常情况下,应该会产生类似下面的输出,说明安装成功:

[root@mylinux ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9bb5a5d4561a: Pull complete
Digest: sha256:f5233545e43561214ca4891fd1157e1c3c563316ed8e237750d59bde73361e77
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
    1. The Docker client contacted the Docker daemon.
    2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
    3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
    4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

最常用的几条命令

使用docker images查看镜像

docker images是最常用的几个命令之一,它会列出本地获取到的镜像:

[root@mylinux ~]# docker images
REPOSITORY           TAG           IMAGE ID            CREATED             SIZE
hello-world          latest        e38bc07ac18e        7 weeks ago         1.85kB

使用docker ps -a 查看容器

docker ps也是最常用的命令,它列出所有运行中的容器;如果要列出已经不再运行的容器,则加上-a标签。

[root@mylinux ~]# docker ps -a
CONTAINER ID      IMAGE           COMMAND      CREATED             STATUS                      PORTS       NAMES
e5f77a147a4c      hello-world     "/hello"     6 minutes ago      Exited (0) 16 minutes ago                naughty_bardeen

使用docker logs查看容器控制台输出

很多时候,容器都是在后台运行的。此时,为了查看容器的输出,可以使用这个命令。

docker logs [container]

使用docker pull下载镜像

上面执行的docker run hello-world命令中其实已经先执行了docker pull命令(检查本地没有hello-world镜像时,就会执行docker pull获取一遍)。这个命令用于从远程仓库上下载镜像。默认的镜像仓库是官方仓库:hub.docker.com。

docker pull hello-world

国内访问hub.docker.com经常不稳定或者下载速度很慢,所以在获取镜像时,可以使用国内镜像站点:registry.docker-cn.com。例如要获取一个hello-world,原本的docker命令是:docker pull hello-world,改为:docker pull registry.docker-cn.com/library/hello-world

使用docker run运行容器

这个命令在前面已经演示过了,几乎是最复杂的一个命令了,也是最常用的命令。它整合了docker pull命令。如果镜像本地已经存在,执行docker run [image]时,则不会下载,直接基于此镜像去运行一个容器。

感谢阅读,希望这篇文章能给你带来帮助!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于Docker的持续集成方案(安装和配置docker镜像仓库) - Part.5

    在《基于Docker的持续集成方案(介绍) - Part.1》中,有一个安装和配置环节,即私有的docker镜像仓库,本文将对此进行介绍。

    张子阳
  • 基于Docker的持续集成方案(安装和配置MySql) - Part.3

    这篇文章介绍了使用Docker安装MySql数据库的操作步骤,以及安装完成后如何对MySql进行配置。

    张子阳
  • 基于Docker的持续集成方案(介绍) - Part.1

    使用docker有很多的便利,这个就不再讲述了,在文章 《基于Docker的持续集成方案(安装docker) - Part.2》 已经对docker有所介绍。这...

    张子阳
  • 「快学Docker」Docker简介、安装和Hello World实现

    Docker已经成为了一门炙手可热的技术,每个程序员(特别是后端程序员)都应该学习下Docker这门技术。

    Happyjava
  • 运行第一个docker容器

    之前我们已经介绍过如何在centos7下快速安装docker,关于docker安装参考链接:

    致码DevOps
  • 必学必会 ● 1小时入门 Docker,让部署应用更快更简单

    Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2....

    我的小碗汤
  • 两小时入门 Docker

    Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2....

    蓝默空间
  • 两小时入门 Docker

    Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2....

    好好学java
  • 两小时入门 Docker

    Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2....

    芋道源码
  • 2小时入门Docker

    Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2....

    Java团长

扫码关注云+社区

领取腾讯云代金券