版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_31032177/article/details/80282705 </div>
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css">
<div id="content_views" class="markdown_views prism-atom-one-dark">
<!-- flowchart 箭头图标 勿删 -->
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<p>一、安装docker</p>
yum list docker //查询可下载的软件,查询结果如下
docker.x86_64 2:1.13.1-53.git774336d.el7.centos @extras
yum -y install docker.x86_64 //安装docker
service docker start/stop/restart //启动/停止/重启docker服务
- 1
- 2
- 3
- 4
- 5
- 6
- 7
二、安装docker-compose 插件用于编排镜像
curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose //下载并安装docker-compose
chmod +x /usr/local/bin/docker-compose //设置权限
docker-compose -version //查看版本,此版本为1.14 版本过低部分功能无法使用
- 1
- 2
- 3
- 4
- 5
- 6
- 7
三、获取国内镜像加速器
注册阿里云帐号即可获得 如图配置可解决无法pull镜像的问题
四、部署基础镜像
1、从网上镜像仓库下载镜像(可联网环境)
docker search 命令查询镜像源中的镜像,下图以swarm为例
docker pull 命令根据NAME下载对应的镜像 ,docker images 查看服务器中已有镜像
2、本地tar文件导入镜像(离线环境)
将压缩文件导入服务器
docker load -i 命令可将压缩成tar文件的镜像导入服务器
docker load -i docker_mapbox.tar
- 1
五、重构建镜像
因为一般的基础镜像不足以满足实际部署需求,需要对镜像进行个性化的定制如:数据库需要建表,序列,导入数据;tomcat需要放入war包。
1、Dockerfile的构建
例1:数据库镜像重构
FROM mdillon/postgis:latest //基础镜像,本地有会用本地;本地没有会从网上pull
MAINTAINER "LJL" <1491623908@qq.com> //维护人信息
ENV TZ=Asia/Shanghai //地地区
COPY ./all_object.sql /docker-entrypoint-initdb.d/ //将"本路径"下的all_object.sql 文件拷贝到PG数据库的docker-entrypoint-initdb.d/文件路径下(该目录下的文件在镜像启动容器时会自动运行)
all_object.sql内有建表和导入数据等语句
CREATE TABLE “public”.“sys_menu” (
“id” varchar(64) COLLATE “default” NOT NULL,
“parent_id” varchar(64) COLLATE “default” NOT NULL,
“parent_ids” varchar(2000) COLLATE “default” NOT NULL,
“name” varchar(100) COLLATE “default” NOT NULL,
“sort” numeric(10) NOT NULL,
“href” varchar(2000) COLLATE “default”,
“target” varchar(20) COLLATE “default”,
“icon” varchar(100) COLLATE “default”,
“is_show” char(1) COLLATE “default” NOT NULL,
“permission” varchar(200) COLLATE “default”,
“create_by” varchar(64) COLLATE “default” NOT NULL,
“create_date” timestamp(0) NOT NULL,
“update_by” varchar(64) COLLATE “default” NOT NULL,
“update_date” timestamp(0) NOT NULL,
“remarks” varchar(255) COLLATE “default”,
“del_flag” char(1) COLLATE “default” NOT NULL
)
WITH (OIDS=FALSE)
;
COMMENT ON TABLE “public”.“sys_menu” IS ‘菜单表’;
COMMENT ON COLUMN “public”.“sys_menu”.“id” IS ‘编号’;
COMMENT ON COLUMN “public”.“sys_menu”.“parent_id” IS ‘父级编号’;
COMMENT ON COLUMN “public”.“sys_menu”.“parent_ids” IS ‘所有父级编号’;
COMMENT ON COLUMN “public”.“sys_menu”.“name” IS ‘名称’;
COMMENT ON COLUMN “public”.“sys_menu”.“sort” IS ‘排序’;
COMMENT ON COLUMN “public”.“sys_menu”.“href” IS ‘链接’;
COMMENT ON COLUMN “public”.“sys_menu”.“target” IS ‘目标’;
COMMENT ON COLUMN “public”.“sys_menu”.“icon” IS ‘图标’;
COMMENT ON COLUMN “public”.“sys_menu”.“is_show” IS ‘是否在菜单中显示’;
COMMENT ON COLUMN “public”.“sys_menu”.“permission” IS ‘权限标识’;
COMMENT ON COLUMN “public”.“sys_menu”.“create_by” IS ‘创建者’;
COMMENT ON COLUMN “public”.“sys_menu”.“create_date” IS ‘创建时间’;
COMMENT ON COLUMN “public”.“sys_menu”.“update_by” IS ‘更新者’;
COMMENT ON COLUMN “public”.“sys_menu”.“update_date” IS ‘更新时间’;
COMMENT ON COLUMN “public”.“sys_menu”.“remarks” IS ‘备注信息’;
COMMENT ON COLUMN “public”.“sys_menu”.“del_flag” IS ‘删除标记’;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
例2:tomcat镜像重构
FROM tomcat
MAINTAINER "LJL" <1491623908@qq.com>
ENV TZ=Asia/Shanghai
COPY ./geoserver.war /usr/local/tomcat/webapps/ //将"本路径"中的war包拷贝到tomcat的webapp路径下,会在启动tomcat时自动解压运行war包
//除了以上的配置参数外还有很多,有兴趣自查
- 1
- 2
- 3
- 4
- 5
- 6
- 7
2、运行Dockerfile构建镜像(此教程将此过程配置在docker-compose.yml 文件中)
docker build -t ljl/ssh ./ //-t镜像名字 .当前目录
- 1
六、docker-compose 统一编排管理容器
1、docker-compose.yml文件的配置(上文中的"本路径"均是指与此文件相同的路径)
目录结构如图
version: '2' //版本号 services: //服务,下一级均为服务名 tomcatGeo: //服务名 container_name: Geo //生成容器名 image: "tomcat:Geo" //生成该容器的镜像名(重构后的镜像) build: //构建镜像 context: . //dockerfile来源路径(.代表本路径) dockerfile: Dockerfile.tomcatGeo //指定dockerfile ports: //配置端口 - "9087:8080" //映射端口:软件端口(外网通过 ip地址:9087 来访问此tomcat) networks: //网络名(仅为一个标记,用来保证所有容器运行与同一网络下,保证容器间的互相通信的可行性) - mynet
tomcatMap: container_name: Map image: "tomcat:Map" build: context: . dockerfile: Dockerfile.tomcatMap ports: - "8888:8080" networks: - mynet tomcatWeb: container_name: Web image: "tomcat:Web" build: context: . dockerfile: Dockerfile.tomcatWeb ports: - "8087:8080" networks: - mynet //以上三个tomcat是同一个基础镜像的三个不同的重构 postgresql: container_name: postgresql image: "postgresql:131" build: context: . dockerfile: Dockerfile.PGsql environment: //环境参数:帐号密码 - POSTGRES_PASSWORD=postgres - POSTGRES_USER=postgres ports: - "5432:5432" networks: - mynet mongo: container_name: mongo image: docker_mongo:latest ports: - "27017:27017" networks: - mynet mapbox: container_name: mapbox image: container-backup:latest ports: - "9095:80" networks: - mynet
networks:
mynet:
//参数还有很多,有兴趣自查
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
2、docker-compose up -d 命令 完成镜像重构和容器启动
重构的镜像如图
启动的容器如图
如果端口链接打不开 尝试此代码
firewall-cmd --zone=public --add-port=5432/tcp --permanent
- 1
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-258a4616f7.css" rel="stylesheet">
</div>