• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > 详解基于Docker的服务部署流程

详解基于Docker的服务部署流程

作者:missile2010 字体:[增加 减小] 来源:互联网

本文主要包含Docker,服务部署等服务器相关知识,missile2010 希望可以进行参考

本次总结涉及到Docker-io、Docker-ce的安装、CentOS7镜像的制作、Docker私有仓库搭建、CentOS6.7环境下从CentOS7私有仓库拉取私有镜像、Docker容器运行、CentOS6.5及CentOS7一起运行时兼容性处理等内容。

一、Docker基本组件及DevOps运作流程

DockerImage:Docker镜像是一个运行容器的只读模板。

DockerContainer:Docker容器是一个运行应用的标准化单元。

DockerRegistry:Docker注册服务器用来存放镜像。

DockerEngine:Docker引擎用来在主机上创建,运行和管理容器。

二、Docker安装与配置

由于Docker国外站点下载较慢或无法正常下载,需要更新为国外源之后再进行快速安装配置。CentOS6.5安装docker-io,CnetOS7安装docker-ce

#创建docker相关的目录

mkdir -p /data/docker

#安装docker运行必要工具

sudo yum install -y yum-utilsdevice-mapper-persistent-data lvm2 crontabs

#增加docker下载仓库,使用阿里云仓库下载,国外站点下载太慢

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sudo yum makecache fast

#安装docker并检测docker安装运行情况

sudo yum -y install docker-ce

docker version

systemctl enable docker.service

systemctl start docker.service

#配置docker

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json<<-'EOF'

{"graph": "/data/docker"}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

三、搭建私有Docker仓库

Docker安装完成后dockerd的配置文件在/etc/docker/daemon.json中,如果没有该文件,可以手动创建。

1、安装配置registry镜像

pull docker官方的registry的第二个版本,docker1.6版本以上支持registry2

docker pull registry:2.6.0

或者不指定版本,表示latest版本

docker pull registry

配置daemon.json,去掉docker默认的https的访问,否则易出现如下问题:

Get https://120.78.253.133:5000/v2/:http: server gave HTTP response to HTTPS client

打开配置文件

vim /etc/docker/daemon.json

里面的内容是一个json对象,加上一项insecure-registries,地址自己更改:

{

  "insecure-registries":["192.168.1.78:5000"]

}

此处设置无效时,直接配置服务程序如下(增加红色字体内容):

vim/usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd --insecure-registry 172.18.3.242:5000

重启docker

systemctl daemon-reload

systemctl restart docker

2、无认证启动registry容器

上传到私有仓库的镜像时是默认存放在容器的/var/lib/registry/,为了防止删除registry时上传的镜像也被删除,所以启用一个volume,将上传的镜像持久化保存在我们物理机上,这里保存位置是/opt/registry/。

测试是否启动容器

curlhttp://192.168.1.78:5000/v2/_catalog

如果返回以下信息表示启动成功

{"repositories":["mynginx"]}

3、私有仓库推拉私有镜像

测试上传到我们自己的私有registry,首先将mynginx镜像重命名tag:

docker tag mynginx 192.168.1.78:5000/mynginx

这里需要注意的是重命名的tag必须带有建立192.168.1.78:5000/这个前缀,后面的mynginx是新镜像名,二者名称可以不同。然后开始push到我们建立的私有registry仓库:

docker push 192.168.1.78:5000/mynginx

检测推送镜像的情况,返回以下结果说明推送正常。

curl http://192.168.1.78:5000/v2/_catalog

{"repositories":["mynginx"]}

测试私有仓库镜像拉取pull,本机拉取如下:

docker rmi 192.168.1.78:5000/mynginx

其他物理主机拉取私有仓库镜像,在安装docker前提下配置/etc/docker/daemon.json文件添加insecure-registries,ip地址自己更改:

{
  "insecure-registries":["192.168.1.78:5000"]
}

然后重启docker,执行pull,同理也可以上传镜像

systemctl daemon-reload

systemctl restart docker

docker pull 192.168.1.78:5000/mynginx

4、Dockerfile创建服务镜像

Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序将这些Dockerfile指令翻译真正的Linux命令。Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefile。Docker程序将读取Dockerfile,根据指令生成定制的image。相比image这种黑盒子,Dockerfile这种显而易见的脚本更容易被使用者接受,它明确的表明image是怎么产生的。有了Dockerfile,当我们需要定制自己额外的需求时,只需在Dockerfile上添加或者修改指令,重新生成image即可,省去了敲命令的麻烦。

基于centos7创建镜像,首先拉取centos7镜像,

docker pull centos7

制作镜像的dockerfile如下所示:

FROM centos:7

MAINTAINER tcy  tiancy@jovision.com

RUN yum  update  -y && \

  yum  install crontabs iproutewget net-tools gcc automake autoconflibtool make gcc gcc-c++  zlib* zlib-devel -y

RUN mkdir -p /home/mynginx

COPY  octmts /home/mynginx/octmts

COPY  tools /home/mynginx/tools

WORKDIR /home/mynginx/octmts

RUN chmod –R 755 *

RUN sh install.sh octmts

编译创建镜像

docker build -t octmts -f dockerfile-octmts  .

创建容器

程序文件和dockerfile放在同一目录

创建容器+运行

创建CentOS7容器,使用systemctl后台运行服务程序时遇到以下问题:

Failed to get D-Bus connection

解决方案(此方案在主机是CentOS6.5系统下无效,暂时无法处理):

或者

 四、CentOS6.5系统下使用私有仓库的兼容问题

CentOS6.5系统下使用私有仓库时由于版本问题导致pull私有镜像失败,Docker 1.7.1版本pull私有镜像仓库报错,V1,V2等。Docker 1.7版本和Docker CE的配置文件的位置不同:

Docker 1.7版本 /etc/sysconfig/docker

Docker CE版本使用 /etc/docker/daemon.json

使用docker 1.7版本如果要pulldocker registry v2或harbor里的镜像,如果没有配置CA证书的话,需要配置insecure-registry,并且需要将这个参数加到docker daemon的启动参数里。配置步骤:

1、Docker 1.7解决办法

⑴ 配置DOCKER_OPTS参数并保存

[root@123 ] # vi /etc/sysconfig/docker

other_args=DOCKER_CERT_PATH=/etc/docker

## add
DOCKER_OPTS="--insecure-registry ip:port"

⑵ 修改启动项

[root@123 ] # vi /etc/init.d/docker

## 找到 start 函数,在exec处增加刚配置的DOCKER_OPTS,参见下边空行处

start() {

  if [ ! -x $exec ]; then

   if [ ! -e $exec ]; then

    echo "Docker executable $exec not found"

   else

    echo "You do not have permission to execute the Docker executable$exec"

   fi

   exit 5

  fi

  check_for_cleanup 

  if ! [ -f $pidfile ]; then

    prestart

    printf "Starting $prog:\t"

    echo "\n$(date)\n" >> $logfile


    ## addDOCKER_OPTS

    $exec -d $DOCKER_OPTS &>> $logfile &

    pid=$!

    touch $lockfile

    # waitup to 10 seconds for the pidfile to exist. see

    #https://github.com/docker/docker/issues/5359

    tries=0

    while [ ! -f $pidfile -a $tries -lt 10 ]; do

      sleep 1

      tries=$((tries + 1))

    done

    success

    echo

  else

    failure

    echo

    printf "$pidfile still exists...\n"

    exit 7

  fi
}

⑶ 重启docker并验证pull功能

[root@123 ] # service docker restart

⑷其他方法

不这么费事,直接修改启动项,原理和结果都是相同的,然后重启dockerdaemon

[root@123 ] # vi /etc/init.d/docker

## 找到exec,直接添加--insecure-registry ip:port

prog="docker"

exec="/usr/bin/$prog --inse
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Docker实践8:Compose,docker实践compose
  • Docker buildx构建多平台镜像并推送到私有仓库的方法
  • Docker三个基本概念镜像(Image)容器(Container)仓库(Repository)
  • 什么是Docker?为什么要使用Docker
  • docker 开源的应用容器引擎
  • 如何给docker设置http代理
  • docker官方mysql镜像自定义配置详解
  • 详解Docker数据管理(数据卷&数据卷容器)
  • 如何利用Docker容器实现代理转发与数据备份详解
  • 详解Docker Swarm 在持续集成测试中的应用

相关文章

  • 使VMware ip与本机ip处于同一网段的方法
  • docker 详解设置容器防火墙
  • docker中使用mongodb数据库详解(在局域网访问)
  • Docker学习之常用的基础命令总结
  • 虚拟化应用过程中易出现的五大错误
  • 详解docker pull 下来的镜像文件存放的位置
  • VirtualBox虚拟机网络设置四种模式详细说明
  • Docker Registry 私有仓库搭建详细步骤
  • Docker学习笔记之容器查看启动终止删除的方法
  • 如何运用docker配合python开发环境实例

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • windows中VirtualBox如何调整扩大VMDK格式的磁盘空间
    • 详解VMware虚拟机中CentOS设置固定IP
    • 详解使用docker搭建hadoop分布式集群
    • Docker的安装方法及运行Docker Swarm模式的使用
    • Vmware12虚拟机安装教程 Vmware12虚拟机上安装Oracle
    • Docker volume使用详解及实例
    • Docker容器之内网独立IP访问的方法
    • vmware 实现linux目录映射window本地目录图文详解
    • docker官方mysql镜像自定义配置详解
    • Centos7下安装Docker Engine

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有