GVKun编程网logo

Docker CE 部署(docker部署教程)

22

最近很多小伙伴都在问DockerCE部署和docker部署教程这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展167dockerdocker构建nginx容器系列问题dockerr

最近很多小伙伴都在问Docker CE 部署docker部署教程这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展167 docker docker构建nginx容器系列问题 docker registry docker run docker toolbo、35. docker swarm dockerStack 部署 投票应用、Centos 在线部署docker及docker-compost、centos7+ docker1.12 实践部署 docker 及配置 direct_lvm等相关知识,下面开始了哦!

本文目录一览:

Docker CE 部署(docker部署教程)

Docker CE 部署(docker部署教程)

一、概述

Docker 在 1.13 版本之后,从 2017 年的 3 月 1 日开始,版本命名规则变为如下:

项目 说明 版本格式 YY.MM Stable  每个季度发行 Edge 版本 每个月发行

同时 Docker 划分为 CE 和 EE。CE 即社区版 (免费,支持后期三个月),EE 即企业版,强调安全,付费使用。

本实验虚拟机 CentOS7,采用阿里云 yum 源安装 

二、安装 Docker CE 先决条件

官方各个版本安装文档:https://docs.docker.com/install/

系统要求

Docker CE支持64位版本CentOS 7,并且要求内核版本不低于3.10。CentOS 7满足最低内核的要求,但由于内核版本比较低,部分功能(如overlay2存储层驱动)无法使用,并且部分功能可能不太稳定。

查看系统内核版本

[root@linux-node1 ~]# cat /proc/version
Linux version 3.10.0-514.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Nov 22 16:42:41 UTC 2016
[root@linux-node1 ~]# uname -a
Linux linux-node1.example.com 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@linux-node1 ~]#

卸载旧版本

老版本的 Docker 被称为 docker 或 docker-engine。如果安装了它们,请卸载他们以及相关的依赖项。

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
[root@linux-node1 ~]# yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
Loaded plugins: fastestmirror
No Match for argument: docker
No Match for argument: docker-client
No Match for argument: docker-client-latest
No Match for argument: docker-common
No Match for argument: docker-latest
No Match for argument: docker-latest-logrotate
No Match for argument: docker-logrotate
No Match for argument: docker-selinux
No Match for argument: docker-engine-selinux
No Match for argument: docker-engine
No Packages marked for removal
示例一

如上示例一中所示报告说没有安装这些软件包,就 OK 了。

/var/lib/docker/ 包括图像,容器,卷和网络的内容将被保留,现在调用 Docker CE 包 docker-ce。

三、安装 Docker CE

使用存储库进行安装

首次在新的主机上安装 Docker CE 之前,需要设置 Docker 存储库,之后,您可以从存储安装和更新 Docker。

设置存储库

  • 安装所需要的包。yum-utils 提供了 yum-config-manager,device-mapper-persistent-datalvm2由需要 devicemapper存储驱动程序。
[root@linux-node1 ~]# yum -y install yum-utils device-mapper-persistent-data lvm2

使用以下命令设置稳定的存储库

Complete!
[root@linux-node1 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

如果需要使用最新版的 Docker CE 使用以下命令 (默认处于禁用状态)

yum-config-manager --enable docker-ce-edge

如果使用测试版本的 Docker CE 请使用以下命令 (默认处于禁用状态)

yum-config-manager --enable docker-ce-test

可以通过使用该标志运行命令来禁用边缘测试存储库 要重新启用它,请使用标志。以下命令禁用边缘存储库。yum-config-manager--disable--enable

yum-config-manager --disable docker-ce-edge

注意:从 Docker 17.06 开始,稳定版本也被推到边缘并测试版本库。

yum 安装 Docker

[root@linux-node1 ~]# yum -y install docker-ce

Installed:
docker-ce.x86_64 0:18.03.1.ce-1.el7.centos

Dependency Installed:
container-selinux.noarch 2:2.55-1.el7

启动 Docker

[root@linux-node1 ~]# systemctl start docker

查看 Docker 运行状态

[root@linux-node1 ~]# systemctl status docker

测试 Docker 是否安装正确

[root@linux-node1 ~]# 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.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

四、创建 docker 用户组 (此操作可以不执行)

docker守护程序绑定到一个Unix套接字而不是TCP端口。默认情况下,Unix套接字由root用户拥有,其它用户只能使用sudo来访问它,该docker守护进程始终运行的root用户。
处于安全考虑,一般Linux系统上不会直接使用root用户,因此,更好的做法是将需要使用docker的用户加入docker用户组。当docker守护进程启动时,它使得Unix套接字的所有权可以被docker组读/写

提示:该 docker 组授予 root 用户等效的权限。有关会如何影响系统安全性的详细信息,参阅:https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface

  •  创建 docker 组
groupadd docker
  • 将您的用户添加到docker组中
usermod -aG docker $USER
  • 注销并重新登录,以便重新评估您的组成员资格。

    如果在虚拟机上进行测试,则可能需要重新启动虚拟机才能使更改生效。

    在桌面 Linux 环境(如 X Windows)上,完全退出会话并重新登录。

  • 验证您可以不使用运行docker命令sudo
docker run hello-world

五、内核参数修改

  • 添加内核参数

默认配置下,如果在 CentOS 使用 Docker CE 看到下面的这些警告信息:

WARING: bridge-nf-call-iptables is disabled
WARING: bridge-nf-call-ip6tables is disabled

 请添加内核配置参数以启用这些功能

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

然后重新加载 sysctl.conf 即可

sysctl -p

 六、配置加速器

建议安装 Docker 之后配置国内镜像加速。

官方文档:https://docs.docker.com/registry/recipes/mirror/#run-a-registry-as-a-pull-through-cache

配置 Docker 守护进程

--registry-mirrordockerd手动启动时传递选项,或者编辑 /etc/docker/daemon.json 和添加registry-mirrors键和值,以使更改持久化。

{
  "registry-mirrors": ["https://<my-docker-mirror-host>"]
}

示例:中国镜像

中国注册镜像的 URL 是registry.docker-cn.com通过在docker pull 命令中指定完整路径(包括注册表),您可以像从其他注册表那样从该镜像中提取镜像,例如:

$ docker pull registry.docker-cn.com/library/ubuntu

您可以添加"https://registry.docker-cn.com"registry-mirrors阵列中 /etc/docker/daemon.json 以默认从 China 注册表镜像中拉取。

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

保存文件并重新加载 Docker 以使更改生效。

[root@linux-node1 ~]# systemctl daemon-reload
[root@linux-node1 ~]# systemctl stop docker
[root@linux-node1 ~]# systemctl start docker
[root@linux-node1 ~]# systemctl status docker

或者,您可以使用--registry-mirror启动参数配置 Docker 守护程序

dockerd --registry-mirror=https://registry.docker-cn.com

 

167 docker docker构建nginx容器系列问题 docker registry docker run docker toolbo

167 docker docker构建nginx容器系列问题 docker registry docker run docker toolbo

docker构建nginx容器系列问题


background : 最近为小伙伴们筹划docker系列的技术分享,研究了一会docker相关技术, 在此记录一下构建nginx容器时候的坑

1.nginx服务器根目录问题

docker 官方镜像提供的nginx基于debian/jessie平台,其文件结构和ubuntu中的nginx中并不相同

eg:

run一个niginx容器

<span>//80端口被占用,so...</span>
$ sudo docker run <span>-it</span><span>-p</span><span>800</span>:<span>800</span> nginx
$ sudo docker ps 

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                   NAMES
<span>1801</span>a32aab54        nginx               <span>"nginx -g ''daemon off"</span><span>2</span> minutes ago       Up <span>2</span> minutes        <span>80</span>/tcp, <span>443</span>/tcp, <span>0.0</span><span>.0</span><span>.0</span>:<span>800</span><span>-&gt;</span><span>800</span>/tcp   berserk_kare
登录后复制

进入容器内部

<span>$ </span>sudo docker exec -it <span>1801</span>a32aab54 /bin/bash
root<span>@1801a32aab54</span><span>:/</span><span># </span>
登录后复制

查看nginx目录

<span># cd /etc/nginx/</span>
conf<span>.d</span>/         koi-utf         mime<span>.types</span>      nginx<span>.conf</span>      uwsgi_params    
fastcgi_params  koi-win         modules/        scgi_params     win-utf  
登录后复制

可以看到不仅没有熟悉的 /sites-available,也没有 /sites-enabled

继续查看nginx配置

<span># cat /conf.d/default.conf</span><span>server</span> {
    listen       <span>80</span>;
    server_name  localhost;

    <span>#charset koi8-r;</span><span>#access_log  /var/log/nginx/log/host.access.log  main;</span>    location / {
        root   /usr/share/nginx/html;
        <span>index</span><span>index</span>.html <span>index</span>.htm;
    }

    <span>#error_page  404              /404.html;</span><span># redirect server error pages to the static page /50x.html</span><span>#</span>
    error_page   <span>500</span><span>502</span><span>503</span><span>504</span>  /<span>50</span>x.html;
    location = /<span>50</span>x.html {
        root   /usr/share/nginx/html;
    }
    <span>#...省略php-fpm配置,好长..</span>
}
登录后复制

根目录配置: root /usr/share/nginx/html;

测试

<span># cd /usr/share/nginx/html</span><span># touch index.html</span><span># echo "test nginx in docker" &gt;index.html</span>
登录后复制

php-fpm配置相关

'').addClass(''pre-numbering'').hide(); $(this).addClass(''has-numbering'').parent().append($numbering); for (i = 1; i '').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了167 docker docker构建nginx容器系列问题,包括了docker,nginx方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

35. docker swarm dockerStack 部署 投票应用

35. docker swarm dockerStack 部署 投票应用

1. 编写 docker-compose.yml

# docker-compose.yml

<style></style>

version: "3"

services:

 

  redis:

    image: redis:alpine

    ports:

      - "6379"

    networks:

      - frontend

    deploy:

      replicas: 2

      update_config:

        parallelism: 2

        delay: 10s

      restart_policy:

        condition: on-failure

 

  db:

    image: postgres:9.4

    volumes:

      - db-data:/var/lib/postgresql/data

    networks:

      - backend

    deploy:

      placement:

        constraints: [node.role == manager]

 

  Vote:

    image: dockersamples/examplevotingapp_Vote:before

    ports:

      - 5000:80

    networks:

      - frontend

    depends_on:

      - redis

    deploy:

      replicas: 2

      update_config:

        parallelism: 2

      restart_policy:

        condition: on-failure

 

  result:

    image: dockersamples/examplevotingapp_result:before

    ports:

      - 5001:80

    networks:

      - backend

    depends_on:

      - db

    deploy:

      replicas: 1

      update_config:

        parallelism: 2

        delay: 10s

      restart_policy:

        condition: on-failure

 

  worker:

    image: dockersamples/examplevotingapp_worker

    networks:

      - frontend

      - backend

    deploy:

      mode: replicated

      replicas: 1

      labels: [APP=VOTING]

      restart_policy:

        condition: on-failure

        delay: 10s

        max_attempts: 3

        window: 120s

      placement:

        constraints: [node.role == manager]

 

  visualizer:

    image: dockersamples/visualizer:stable

    ports:

      - "8080:8080"

    stop_grace_period: 1m30s

    volumes:

      - "/var/run/docker.sock:/var/run/docker.sock"

    deploy:

      placement:

        constraints: [node.role == manager]

 

networks:

  frontend:

  backend:

 

volumes:

  db-data:

 

2. 启动service  并  查看 service 的状态

  docker stack deploy Vote -c=docker-compose.yml

  docker stack ls

  docker stack services Vote

  docker stack ps Vote

3. 对 Vote_Vote service 进行拓展

  docker service stack scale Vote_Vote=3

 

4. 访问

  访问 192.168.205.10:5000  进行投票

  访问 192.168.205.10:5001  查看投票情况

    访问 192.168.205.10:8080  查看容器 部署情况

 

<style></style>

Centos 在线部署docker及docker-compost

Centos 在线部署docker及docker-compost

下载docker 一键安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

将用户加入到docker用户组

20 usermod -aG docker root

启动docker

27 systemctl start docker

查看docker容器

28 docker ps

在线下载docker-compose

或者上传离线的docker-compse文件

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/sbin/docker-compose

需要注意后面的路径地址 /usr/local/bin,必须是用户的binbash目录,不然,不能直接执行docker-compose文件

输入命令查看

[root@data-center-dev sbin]# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin

如果是上传的离线的compose文件,需要将文件手动移入binbash目录

sudo cp docker-compose-Linux-x86_64.1.21.2 /usr/sbin/docker-compose

将compose文件修改问可执行文件

chmod +x /usr/sbin/docker-compose

查看版本号

[root@api-center-qa ops]# docker-compose -version
docker-compose version 1.21.2, build a133471

centos7+ docker1.12 实践部署 docker 及配置 direct_lvm

centos7+ docker1.12 实践部署 docker 及配置 direct_lvm

centos7+ docker1.12 实践部署 docker 及配置 direct_lvm 博客分类: docker

前言

  Docker 现在在后端是那么的火热.. 尤其当笔者了解了 docker 是什么、能做什么之后,真的是感觉特别的 exciting, 便迫不及待的去实践部署一下. 但是在实际部署中,因为笔者使用的是阿里云 ecs 服务器,centos7 系统,因为 centos7 与 ubuntu 的差异性,所以,需要自己把后端存储引擎 devicemapper 从 loop_lvm 模式配置为 direct_lvm 模式。在这其中又遇到了坑,所以觉得很有必要记录下来,做个备忘.

 

为什么要配置 devicemapper

  几点原因:

    ubuntu 与 contos 的差异: 在 Ubuntu/Debian 上有 UnionFS 可以使用,如 aufs 或者 overlay2, 而 CentOS 和 RHEL 的内核中没有相关驱动。

    Docker 的背景: Docker 最先就是跑在 Ubuntu 和 Debian 上的,使用的就是 aufs 存储器。因为 docker 越来越流行,许多公司希望在 rhel 上使用,但是上游内核中并没有包括 aufs, 所以 rhel 不能使用 aufs. 最终,开发者们开发了一个新的后端存储引擎 devicemapper, 基于已有的 Device Mapper 技术,并且使 docker 支持可插拔,现在全世界有很多真实案例在生产环境中使用 devicemapper. 

    loop_lvm 和 direct_lvm 区别

      因为上述的原因,对于 centos/rhel 这类没有相关驱动的系统,一般使用 devicemapper 驱动利用 LVM 的一些机制来模拟分层存储。这样的做法除了性能比较差之外,稳定性一般也不好,而且配置相对复杂。Docker 安装在 CentOS/RHEL 上后,会默认选择 devicemapper,但是为了简化配置,其 devicemapper 是跑在一个稀疏文件模拟的块设备上,也被称为 loop-lvm。这样的选择是因为不需要额外配置就可以运行 Docker,这是自动配置唯一能做到的事情。但是 loop-lvm 的做法非常不好,其稳定性、性能更差,无论是日志还是 docker info 中都会看到警告信息。官方文档有明确的文章讲解了如何配置块设备给 devicemapper 驱动做存储层的做法,这类做法也被称为配置 direct-lvm

      除了前面说到的问题外,devicemapper + loop-lvm 还有一个缺陷,因为它是稀疏文件,所以它会不断增长。用户在使用过程中会注意到 /var/lib/docker/devicemapper/devicemapper/data 不断增长,而且无法控制。很多人会希望删除镜像或者可以解决这个问题,结果发现效果并不明显。原因就是这个稀疏文件的空间释放后基本不进行垃圾回收的问题。因此往往会出现即使删除了文件内容,空间却无法回收,随着使用这个稀疏文件一直在不断增长。

  所以:

    对于 CentOS/RHEL 的用户来说,在没有办法使用 UnionFS 的情况下,一定要配置 direct-lvm 给 devicemapper,无论是为了性能、稳定性还是空间利用率。

      或许有人注意到了 CentOS 7 中存在被 backports 回来的 overlay 驱动,不过 CentOS 里的这个驱动达不到生产环境使用的稳定程度,所以不推荐使用。

  (参考自:Docker-- 从入门到实践)

 

安装及运行 docker

  比较 easy, 自己参考 Docker-- 从入门到实践 , 在其中讲的有具体步骤,很详细了。本文的重点是 direct_lvm 模式的配置,这里就不再细说。

为生产环境配置 direct_lvm 模式

  生产环境下应该使用 direct_lvm, 如果之前有镜像在 loop_lvm 模式下创建,需要切换,则需要把镜像做备份 (push 到 hub 或者私有 registry). 所以最好的做法,还是: 在刚刚给 centos 服务器安装 docker 的时候,直接做好配置.

  1. 停止 docker daemon

[root@srv00 ~]# systemctl stop docker

  2. 创建相关的逻辑卷和 thinpool

  检查磁盘

复制代码
[root@iZ28uvczcf6Z mapper]# fdisk -l   <==检查下磁盘

Disk /dev/xvda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x635e6c7d

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *        2048   209713151   104855552   8e  Linux LVM

Disk /dev/xvdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x021dd279

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdb1            2048    41943039    20970496   8e  Linux LVM
复制代码

  创建 pv

[root@srv00 ~]# pvcreate /dev/xvdb1
  Physical volume "/dev/xvdb" successfully created

  注意: pvcreate 指令后面配置的硬盘 (此处为 "xvdb1") 必须为独立的挂载硬盘,而不能是系统盘,否则会报错,创建失败.

  (关于挂载新硬盘后,如何对硬盘进行 "初始化"、"分区" ,在本文最后会单独讲解。(比如在本代码中,把 Disk "/dev/xvdb" 初始化成一块分区 "/dev/xvdb1", 大小等同于磁盘大小 (约 20G)。)

  创建 vg

[root@srv00 ~]# vgcreate vgdocker /dev/xvdb1
  Volume group "vgdocker" successfully created

  创建一个 thin pool, 名字叫 thinpool, 先来创建逻辑卷

复制代码
[root@srv00 ~]# lvcreate --wipesignatures y -n thinpool -l 95%VG vgdocker
  Logical volume "thinpool" created.
[root@srv00 ~]# lvcreate --wipesignatures y -n thinpoolmeta -l 1%VG vgdocker  
  Logical volume "thinpoolmeta" created.
[root@srv00 ~]# lvscan
  ACTIVE            ''/dev/centos/swap'' [4.00 GiB] inherit
  ACTIVE            ''/dev/centos/root'' [35.47 GiB] inherit
  ACTIVE            ''/dev/vgdocker/thinpool'' [28.50 GiB] inherit
  ACTIVE            ''/dev/vgdocker/thinpoolmeta'' [304.00 MiB] inherit
复制代码

"剩余的 4% 留给它们自动扩展"

  转换成 thin pool

[root@srv00 ~]# lvconvert -y --zero n -c 512K --thinpool vgdocker/thinpool --poolmetadata vgdocker/thinpoolmeta
  WARNING: Converting logical volume vgdocker/thinpool and vgdocker/thinpoolmeta to pool''s data and metadata volumes.
  THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.)
  Converted vgdocker/thinpool to thin pool.

  设置 thinpool 的自动扩展参数,并应用此 profile

复制代码
[root@srv00 ~]# vi /etc/lvm/profile/docker-thinpool.profile
activation {
    thin_pool_autoextend_threshold=80
    thin_pool_autoextend_percent=20
}
[root@srv00 ~]# lvchange --metadataprofile docker-thinpool vgdocker/thinpool
  Logical volume "thinpool" changed.
复制代码

"当空间大于 80% 时进行扩展。扩展的大小是空闲空间的 20%"

  查看 thinpool 是否是已监视状态

[root@srv00 ~]# lvs -o+seg_monitor
  LV       VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Monitor  
  root     centos    -wi-ao---- 35.47g                                                              
  swap     centos    -wi-ao----  4.00g                                                              
  thinpool vgdocker twi-a-t--- 28.50g             0.00   0.02                             monitored

  3. 备份并删除 docker 存储目录 (是否备份,根据自己需求)

   备份

$ mkdir /var/lib/docker.bk
$ mv /var/lib/docker/* /var/lib/docker.bk

   删除原存储目录

[root@srv00 ~]# rm -rf /var/lib/docker/*

"注意备份重要镜像等"

  4. 修改启动参数并启动

   我们通过 systemd 的 drop-in 方式修改,也是官方推荐的

  编辑config文件
[root@srv00 ~]# mkdir /etc/systemd/system/docker.service.d
[root@srv00 ~]# vi /etc/systemd/system/docker.service.d/daemon.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd

"ExecStart= 第一行是空。否则启动会报错;"  


  实际启动时,是需要一些参数的,我们把它配置在daemon.json文件中。文件的位置是/etc/docker/daemon.json 通过vi指令编辑、保存,即可. daemon.json文件内容如下:
复制代码
{
  "storage-driver": "devicemapper",
   "storage-opts": [
     "dm.thinpooldev=/dev/mapper/vgdocker-thinpool",
     "dm.use_deferred_removal=true",
     "dm.use_deferred_deletion=true"
   ]
}
复制代码
  重新reload
[root@srv00 ~]# systemctl daemon-reload
[root@srv00 ~]# systemctl start docker

" 修改 daemon 参数需要 reload"

  5. 检查确认

   可以看到,direct_lvm 模式已经配置成功.

   注:因为笔者机器已经配置完毕,无法重新配置前面的步骤,所以前面的一些代码,均是从一篇他人的博客 (点击访问) 中粘贴过来的,并进行了一些整理。 不过差别只是硬盘名称不一样,流程和输入指令完全可以直接照搬.

复制代码
[root@iZ28uvczcf6Z mapper]# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 1
Server Version: 1.12.5
Storage Driver: devicemapper
 Pool Name: vgdocker-thinpool
 Pool Blocksize: 524.3 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file: 
 Metadata file: 
 Data Space Used: 990.4 MB
 Data Space Total: 20.4 GB
 Data Space Available: 19.41 GB
 Metadata Space Used: 233.5 kB
 Metadata Space Total: 213.9 MB
 Metadata Space Available: 213.7 MB
 Thin Pool Minimum Free Space: 2.039 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: true
 Deferred Deletion Enabled: true
 Deferred Deleted Device Count: 0
 Library Version: 1.02.135-RHEL7 (2016-09-28)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: null host bridge overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 3.10.0-514.2.2.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 991.2 MiB
Name: iZ28uvczcf6Z
ID: KJ44:XNL6:W5KM:VYDQ:WN4C:FDPF:U52P:27SJ:MCWA:Q6JA:D76Z:JXVC
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
Insecure Registries:
 127.0.0.0/8
[root@iZ28uvczcf6Z mapper]#
复制代码

  

有哪些坑?

  硬盘挂载

    一定不能是系统盘

  "Docker 1.12 on CentOS no longer uses socket activation"

    因为 Docker 1.12 的一些新变化,基于网上的一些博客、文章,在配置时,就要有一些改变,否则你可能会遇到错误:"no sockets found via socket activation: make sure the service was started by systemd"。这个错误的解决方式,感兴趣的可以自行查看此链接: "docker daemon -H fd://" fails with message "No sockets found" under Ubuntu 15.10 #22847

  

    

挂载硬盘的初始化和分区方式

  

复制代码
$ fdisk /dev/xvdb
    
    Command(m for help): n   n之后,根据自己需要配置,也可以连着3次enter就可以完成配置,初始化为一块分区,分区大小=硬盘大小
    Command (m for help): t   t是个改类型的指令
    Partition number (1-3,default 3):
    Partition type (type L to list all types): 8e 最好是给配置为支持LVM的8e类型
    Command ( m for help): w  保存

partprobe  用partprobe可以使kernel重新读取分区信息,从而避免重启

//以下的指令非必须,仅做一个备录
pvcreate /dev/sda3
vgextend vg00 /dev/sda3
vgdisplay
lvextend -L +80G /dev/vg00/lv_root
lvdisplay
resize2fs /dev/vg00/lv_root
df -h
复制代码

 

 

后言

  站在前人的肩膀上

    笔者学习时也是参考了一些博客、文章,在它们的基础上,做了整理,并修改掉过时的配置信息。其中一些笔者自己觉得说的挺清晰的,罗列在下面,方便参考:

    devicemapper 最佳实践

    Docker 官方教程 : 官方教程,不用多说,只是英文阅读起来费些力气

     Docker-- 从入门到实践 :gitbook 书籍,讲的很详细

    

    以及几篇不错的文章:

    http://www.linuxtechi.com/thin-provisioned-logical-volumes-centos-7-rhel-7/ 

    Docker 一些启动安装指令

  一种简单的方式,配置 direct_lvm 模式

    本文主要讲的是自己手动配置 direct_lvm 模式的方式,还有一种简单些的配置方式。如 Docker Device Mapper 使用 direct_lvm,文章提到了一个工具: docker-storage-setup, 貌似基于这个脚本可以比较便捷的进行配置,但是感觉文中内容,笔者看的不是很明白,所以就没有继续了. docker-storage-setup 的 github 网址,笔者也已经找到了:projectatomic/docker-storage-setup 。如果你感兴趣,研究有结果之后,欢迎回来在下方分享给笔者 ^_^。

 http://www.cnblogs.com/Andrew-XinFei/p/6245330.html

关于Docker CE 部署docker部署教程的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于167 docker docker构建nginx容器系列问题 docker registry docker run docker toolbo、35. docker swarm dockerStack 部署 投票应用、Centos 在线部署docker及docker-compost、centos7+ docker1.12 实践部署 docker 及配置 direct_lvm的相关知识,请在本站寻找。

本文标签: