docker容器与业务

什么是 Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

镜像和容器的关系

1:镜像就如手机的安卓系统,容器就相当安卓系统上的应用.所以,先有镜像才能有容器.我们打包的都是镜像,并非容器

2:是否可以弄一个通用的镜像,安装所有服务再用容器启动

这个我试过了,是可以的.可以安装一个 LAMPLNMP之类环境,还可以安装其他想要的服务,端口不冲突都可以.但是这样的镜像启动出来的容器就违背了docker初衷,docker轻量级虚拟化,就是用来做单任务启动

安装dockerdocker-compose

在任何一台能上网的centos7上都能安装

安装服务依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

添加yum

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

更新yum缓存

yum makecache fast

安装docker服务

yum -y install docker-ce

启动服务

systemctl start docker

添加网易仓库

vi /etc/docker/daemon.json

{"registry-mirrors": ["http://hub-mirror.c.163.com"]}

上传docker-compose/usr/bin目录下

添加运行权限

chmod +x /usr/bin/docker-compose

docker-compose是什么?

一种容器编排工具,读取yml文件创建或更新容器

:docker logs appname                                                           #  (查看名为appname的容器日志)

     docker ps                                                                             #  (查看当前运行的容器状态)

:docker-compose -f docker-compose.appname.yml up -d    #  (更新或创建容器提供服务)

:docker-compose -f docker-compose.appname.yml up -d    #  (更新或创建容器提供服务)

:docker rm -i appname                                                          #  (删除名为appname的容器)

重启容器:docker restart appname                                            # (重启名为appname的容器)

镜像打包:docker save imgname -o /root/imgname.dock         #  (把名为imgname镜像打包成文件)

镜像导入:docler load -i /root/imgname.dock                            # (导入名为imgname的镜像)

 

docker ps 详解

NAMES:容器名称(appname)

IMAGE:镜像名称

CREATED:创建时间

STATUS:运行状态及时长

PORTS:映射的端口

docker-compose文件详解

version: '3'

services:

        jar1:

                image: ascdc/jdk8

                container_name: appoint

                restart: always

                ports:

                     - "5011:5011"

                volumes:

                     - /etc/localtime:/etc/localtime

                     - /data/jar/oa-appoint-web.jar:/data/oa-appoint-web.jar

                entrypoint: java -jar -Duser.timezone=GMT+08 /data/oa-appoint-web.jar

        jar2:

                image: ascdc/jdk8

                container_name: app

                restart: always

                ports:

                     - "5017:5017"

                volumes:

                     - /etc/localtime:/etc/localtime

                     - /data/jar/oa-app-web.jar:/data/oa-app-web.jar

                entrypoint: java -jar -Duser.timezone=GMT+08 /data/oa-app-web.jar

 

 

version:”3” 适用于1.2x版本以上的docker-compose命令

services:服务名称 #忽略

jar1: 服务名称,要区别于其他容器

image:来源镜像,可以是同一个

container_name:容器名称(就是所谓的appname)

restart:跟随docker服务启动

ports:容器应用映射的端口

volumes:挂在的宿主机目录

entrypoint:启动的应用

 java -jar -Duser.timezone=GMT+08 /data/oa-app-web.jar

从命令看出来 这是一个启动jar工程包的容器. 并且调整了时区为上海时区.

 

docker-compose文件详解2

version: '3'

services:

        mysqldb:

            image: 'mysql/mysql-server:5.7'

            restart: always

            container_name: mysql

            volumes:

              - /data/mysql/data:/var/lib/mysql

              - /etc/localtime:/etc/localtime

            ports:

              - '3306:3306'

            environment:

              TZ: Asia/Shanghai

              MYSQL_ROOT_PASSWORD: "root17317319864"

            command:

              --max_allowed_packet=128M

 

image看出来这是一个启动mysql应用的容器

volumes可以看出挂在了数据的目录(除了数据还可以挂载配置文件)

environment可以看出调整了时区和数据库用户root的密码

command特有的参数可以通过最大的包为128M(业务需要)

 

从两个例子我们可以看出来,要创建一个容器需要镜像名称,填写自己容易记忆的appname

调整参数,映射端口,挂在宿主机目录等等,根据业务需要添加或减少参数.

启动容器:docker-compose-appname.yml目录下执行

docker-compose -f docker-compose-appname.yml up -d

数据持久化是防止容器出故障后,删除重建会导致数据丢失的问题.数据在宿主机的存储内.

无论怎么删除容器再次新建容器,数据仍然在.所以我们要把业务数据和容器分开放.

 

什么是DevOps?

dockerDevOps的角色?

应该如何做?

1:测试环境要使用docker

2:docker测试能确定了业务所依赖的服务版本,系统版本很多信息

3:线上迁移后除了网络环境是不一样的,系统和服务版本几乎是一样的.

4:统一业务的测试方式,尽早部署和线上一样的环境及业务调用方法.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值