博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对于kubernetes(k8s)入门需要了解的docker基础
阅读量:6031 次
发布时间:2019-06-20

本文共 5860 字,大约阅读时间需要 19 分钟。

前言

本文假设读者都是开发者,并熟悉 Linux 环境,所以就不介绍基础的技术概念了。命令行环境以 Linux 示例。

内容概要

本文包括以下内容:

  1. 在 CentOS7 下安装 Docker
  2. 制作 Docker 镜像
  3. 通过 Docker 部署服务

扩展阅读

对于已经熟悉的 Docker 的朋友,推荐阅读。 阅读完这篇文章,你将可以达到以下的效果:

| 只通过一个 commit(GitHub),将应用通过 Docker 容器部署出来。

这其中包括以下操作:

  • 检出代码
  • 运行测试
  • 编译代码
  • 对代码进行 SonarQube (代码质量管理工具)分析
  • 创建 Docker 镜像
  • 推送镜像到Docker Hub
  • 拉取并运行镜像

简单地说,就是大概是神兵结合平安CaaS后台所做的事情。

正文

通过 Docker 启动一个简单的 web 应用

在 CentOS7 下安装 Docker

Docker 现在有2个版本,分别是 Docker CE 和 Docker EE。这2个版本都是由官方维护的,EE 是商业版,由官方提供认证了的OS、云平台层的技术支持,并提供 LDAP、Active Directory之类的认证(鉴权)系统技术支持以及镜像认证等安全方面的支持。 本文以 Docker CE(社区版)为例。

  1. OS 前提条件

    要安装 Docker CE,你需要一个正在维护版本的 CentOS 7。归档版本没有得到测试以及支持。

    centos-extras 仓库需要被启用。默认情况下是启用的。

    overlay2 存储驱动是推荐使用的。

  2. 删除旧版本

    旧版本的 Docker 被称为 dockerdocker-engine。如果它们有被安装,先删除它们,包括相关联的依赖组建。

    (sudo) yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine复制代码

    如果 yum报告说没有安装这些,也是OK的。

    /var/lib/docker当中的内容包括镜像、容器、卷、网络等默认内容。Docker CE 安装包现在被称为 docker-ce

  3. 安装 Docker CE

    安装 Docker CE 通常有3中方法:

    • 大多数人使用通过。由于步骤简单并易于管理版本,官方推荐使用这种方法。
    • 有些人下载 RPM 包并,并且完全手动管理版本。在与互联网隔绝的环境,这种方法比较有用。
    • 在测试以及开发环境,有些人通过来安装Docker。
  4. 通过包管理工具仓库安装

    4.1 配置软件源仓库

    • 需要预先安装依赖包。yum-utils提供yum-config-manager工具,然后device-mapper-persistent-datalvm2devicemapper存储驱动依赖。
      (sudo) yum install -y yum-utils \device-mapper-persistent-data \lvm2复制代码
    • 使用下列命令配置稳定仓库源。
      (sudo) yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo复制代码

    4.2 安装 Docker CE

    (sudo) yum install docker-ce docker-ce-cli containerd.io

    如果命令行提示说需要接受GPG key,确认fingerprint与下列相同。 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35,如果相同,接受它。

    4.3 (可选项)安装指定版本的Docker CE。

    • 排序列出仓库源中的可用版本 例如:
      $ yum list docker-ce --showduplicates | sort -rdocker-ce.x86_64  3:18.09.1-3.el7                     docker-ce-stabledocker-ce.x86_64  3:18.09.0-3.el7                     docker-ce-stabledocker-ce.x86_64  18.06.1.ce-3.el7                    docker-ce-stabledocker-ce.x86_64  18.06.0.ce-3.el7                    docker-ce-stable复制代码
    • 通过有效的软件包全名来安装制定版本

    包的全名由2部分组成。分别是 (1)包名 (docker-ce)加上从第1个冒号(:)后开头,直到第1个连字符(-)结束的 (2)版本字符串 (第2列),中间由连字符(-)相连。

    例如: docker-ce-18.09.1

    (sudo) yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

    完成以上步骤之后,Docker已经安装,系统中创建了一个docker组,但没有用户被添加到这个组。

    4.4 启动 Docker

    (sudo) systemctl start docker

    4.5 验证 Docker CE 安装正常,通过运行hello-world镜像。

    (sudo) docker run hello-world

制作 Docker 镜像

关于docker命令可以参考网友分享的(有中文版)。

  1. 搜索可用的docker镜像

    使用docker最简单的方式莫过于从现有的容器镜像开始。Docker官方网站专门有一个页面来存储所有可用的镜像,网址是: 。你可以通过浏览这个网页来查找你想要使用的镜像,或者使用命令行的工具来检索。

  2. 拉取镜像 (sudo) docker pull <IMAGE_NAME/IMAGE_ID>

    $ docker imagesREPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZEhello-world                                latest              fce289e99eb9        3 months ago        1.84kBkindest/node                               v1.12.2             58eadc0ca522        5 months ago        1.5GBk8s.gcr.io/kube-proxy-amd64                v1.11.3             be5a6e1ecfa6        7 months ago        97.8MBk8s.gcr.io/kube-controller-manager-amd64   v1.11.3             a710d6a92519        7 months ago        155MBk8s.gcr.io/kube-apiserver-amd64            v1.11.3             3de571b6587b        7 months ago        187MBk8s.gcr.io/kube-scheduler-amd64            v1.11.3             ca1f38854f74        7 months ago        56.8MBk8s.gcr.io/coredns                         1.1.3               b3b94275d97c        10 months ago       45.6MBk8s.gcr.io/etcd-amd64                      3.2.18              b8df3b177be2        12 months ago       219MBk8s.gcr.io/pause                           3.1                 da86e6ba6ca1        15 months ago       742kB$ docker pull busyboxUsing default tag: latestlatest: Pulling from library/busyboxfc1a6b909f82: Pull completeDigest: sha256:954e1f01e80ce09d0887ff6ea10b13a812cb01932a0781d6b0cc23f743a874fdStatus: Downloaded newer image for busybox:latest$ docker imagesREPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZEbusybox                                    latest              af2f74c517aa        5 days ago          1.2MBhello-world                                latest              fce289e99eb9        3 months ago        1.84kBkindest/node                               v1.12.2             58eadc0ca522        5 months ago        1.5GBk8s.gcr.io/kube-proxy-amd64                v1.11.3             be5a6e1ecfa6        7 months ago        97.8MBk8s.gcr.io/kube-scheduler-amd64            v1.11.3             ca1f38854f74        7 months ago        56.8MBk8s.gcr.io/kube-apiserver-amd64            v1.11.3             3de571b6587b        7 months ago        187MBk8s.gcr.io/kube-controller-manager-amd64   v1.11.3             a710d6a92519        7 months ago        155MBk8s.gcr.io/coredns                         1.1.3               b3b94275d97c        10 months ago       45.6MBk8s.gcr.io/etcd-amd64                      3.2.18              b8df3b177be2        12 months ago       219MBk8s.gcr.io/pause                           3.1                 da86e6ba6ca1        15 months ago       742kB复制代码
  3. 制作 Docker 镜像

    语法: docker build [OPTIONS] PATH | URL | -

    docker build命令从Dockerfile和一个"上下文"制作镜像。一个build的上下文是一个特定位置下的文件的集合,这个位置可以通过PATHURL来指定。 换句话说,你可以通过git仓库指定"上下文"。

    3.1 编写 Dockerfile

    我用go语言写了一个简单的。 现在我基于基础镜像来制作我自己的web应用镜像,取名为"go-server-9860"。

    • 编写 Dockerfile Dockerfile可以参照。

    3.2 创建镜像

    使用docker build命令通过指定URL来创建镜像。

    例子: docker build -t go-server-9860 https://github.com/aruruka/hello-world.git#master:docker_basis

    3.3 运行镜像

    以后台方式启动一个容器:

    docker run -d --name go-server-9860 -p 127.0.0.1:9860:9860/tcp --rm go-server

    进入一个容器并分配一个终端:

    docker exec -it go-server-9860 sh

    给一个容器发送SIGKILL信号:

    docker kill go-server-9860

访问刚刚部署的web服务

# 查看正在云从的容器:docker ps | sed -n '1p;/go-server/Ip# 测试端口是否在宿主机上监听telnet 127.0.0.1 9860# 访问服务curl http://127.0.0.1:9860/world复制代码

转载地址:http://hhchx.baihongyu.com/

你可能感兴趣的文章
表单文件上传与文件下载
查看>>
jquery 中prop()的使用方法
查看>>
下午考
查看>>
WKWebView
查看>>
创建字符设备的三种方法
查看>>
走在网页游戏开发的路上(六)
查看>>
nginx 配置的server_name参数(转)
查看>>
Uva592 Island of Logic
查看>>
C++基础代码--20余种数据结构和算法的实现
查看>>
footer固定在页面底部的实现方法总结
查看>>
nginx上传文件大小
查看>>
数字通信原理笔记(一)---概述
查看>>
HDU 2243 考研路茫茫——单词情结(自动机)
查看>>
Dubbo OPS工具——dubbo-admin & dubbo-monitor
查看>>
如何将OpenCV中的Mat类绑定为OpenGL中的纹理
查看>>
CutyCapt
查看>>
Dungeon Master ZOJ 1940【优先队列+广搜】
查看>>
解决https://localhost:1158/em 页面无法打开的问题
查看>>
[Cocoa]深入浅出Cocoa之Core Data(4)- 使用绑定
查看>>
原理:什么是Quadtrees?(转)
查看>>