基于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 条评论
登录 后参与评论

相关文章

来自专栏python爬虫实战之路

docker配置redis集群和scrapyd服务

Redis集群的配置方式我们上一篇已经介绍过了,而且使用Dockerfile配置文件我们也介绍了,不过介绍的并不详细,可能有些人看不明白,这篇我们再介绍一些Do...

1403
来自专栏世界第一语言是java

docker部署redis,清空redis缓存

9881
来自专栏遊俠扎彪

Windows下使用pyinstaller制作exe(py2exe)

配置python环境变量,一般从http://www.python.org/下载完python的编译解释器,只要正常安装成功,会自动配好。

22810
来自专栏信安之路

手把手教你制作漏洞复现环境

在学习的过程中, 是否看到别人搭建的 Exploit 练习平台心痒痒呢? 通过本篇教程的学习, 将手把手教你搭建属于自己的漏洞测试利用环境, 不管是自己学习还有...

2090
来自专栏云原生架构实践

Docker EE 安装 on centos7

有两种方法可以 在Centos上安装和升级Docker企业版(Docker EE):

3772
来自专栏PHP技术大全

使用PHP搭建Web版Docker管理系统实践

团队中使用容器比较频繁,但并不是所有人都可以登陆服务器去执行命令,但是又需要用到docker,所以有一个需求通过web来管理docker,而其他语言并不怎么熟悉...

3921
来自专栏运维技术迷

Veeam Backup & Replication(二):添加虚拟化主机和配置备份存储

一、添加虚拟化主机 veeam可以添加单个ESXi主机,也可以添加vCenter服务器,因为做实验,就添加一台ESXI主机为例吧。 1.1 选择 Virtual...

49312
来自专栏编程坑太多

跟我一起学docker(七)--网络

1766
来自专栏后端云

虚拟机无法启动

由于kvm所在的机器启用了SELINUX,后来将之关闭,关闭之后,发现kvm的虚拟机无法启动

2864
来自专栏IT笔记

Docker学习之搭建JavaWeb环境进阶篇

上一篇文章中,简单了学习了一下在Docker环境中搭建JavaWeb环境,其实这时候已经是一个全新的镜像了,就是我们的Ghost系统一样,装配了各式各样的软件一...

3507

扫码关注云+社区

领取腾讯云代金券