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

2020-06-17 06:31:57易采站长站整理

制作镜像的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放在同一目录

docker create –name octmts3.0 -v/home/docker_oct/data:/home/mynginx/octmts/log -p 50000:50000 -p 50001:50001 -p50002:50002 octmts1.0

创建容器+运行

docker run -id –net=host –nameoctmts2.0 -v /home/docker_oct/data:/home/mynginx/octmts/log -p 50000:5000octmts1.0

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

Failed to get D-Bus connection

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

docker create –privileged –net=host –nameoctmts3.0 -v /home/docker_oct/data:/home/mynginx/octmts/log -p 50000:50000 -p50001:50001 -p 50002:50002 octmts1.0 /usr/sbin/init

或者

docker run –privileged –net=host -id –nameoctmts3.0 -v /home/docker_oct/data:/home/mynginx/octmts/log -p 50000:5000octmts1.0 /usr/sbin/init

 四、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