张子阳的博客

首页 读书 技术 店铺 关于
张子阳的博客 首页 读书 技术 店铺 关于

基于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]时,则不会下载,直接基于此镜像去运行一个容器。

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