docker安装spring cloud 以及 cloud alibaba 相关支持服务的配置

docker安装与命令

使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh
启动docker
systemctl start docker

重启docker
systemctl restart docker

停止docker
systemctl stop docker

搜索镜像
docker search 镜像名称

下载镜像
docker pull 镜像

查看已安装镜像列表
docker images

删除镜像
docker rmi 镜像id

运行镜像生成新的容器
docker run -d -it 镜像名称:版本号
eg: docker run -d -it -p 8080:8080 tomcat:7
  -p 端口映射,前者宿主机端口,后者容器端口,多个端口 -p 8080:8080 -p 9090:9090
  -d 后台运行容器
  -it 以交互模式运行容器 
eg: docker run -d -it -p 8080:8080 --name test -v /opt:/opt tomcat:7
  -v 数据挂载
  -e  设置配置参数
 -e TZ="Asia/Shanghai" 设置时区
 --network=host 容器端口映射主机端口
 --restart always docker重启时重启容器

查看运行容器
docker ps

查看所有容器
docker ps -a

进入容器
docker exec -it 容器id /bin/bash

退出容器不停止容器
Ctrl+P+Q

退出容器停止容器
exit
当容器启动时有添加 -d命令同时有进程在前台运行时exit退出时不会停止容器

容器的启动停止
docker start 容器id
docker stop 容器id

重启容器
docker restart 容器id

删除容器
docker rm 容器id

查看容器日志
docker logs 容器id -f

查看指定时间后的日志,只显示最后100行
docker logs -f -t --since="2020-06-17" --tail=100 CONTAINER_ID

查看某时间段日志
docker logs -t --since="2020-06-17T13:23:37" --until "2020-06-17T12:23:37" CONTAINER_ID

修改已启动的容器的时区
1.复制相应的时区文件,替换系统时区文件;
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
有的容器基础镜像是有这个文件的,直接拷贝就可以,如果不能拷贝,则是因为创建镜像时依赖的基础镜像 运行的容器没有这两个文件,使用下面的办法
2. 创建文件夹
mkdir -p /usr/share/zoneinfo/Asia
3.回到宿主机,复制宿主机里的文件到容器中
docker cp /usr/share/zoneinfo/Asia/Shanghai 容器ID或容器名:/usr/share/zoneinfo/Asia
4. 进入容器
docker exec -it 容器Id或容器名 bash
执行命令 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
5. 验证 输入 date

docker安装MySQL

docker search mysql 命令来查看可用版本

下载 Mysql 镜像

docker pull mysql:5.6

部署启动MySQL镜像

docker run -d \
--name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

  • -d:以后台的方式运行;
  • --name mysql:指定容器的名称为 mysql;
  • -p 3306:3306 将容器的 3306 端口挂载到宿主机的 3306 端口上;
  • -e MYSQL_ROOT_PASSWORD=123456:指定 root 的密码为 123456

将容器中的目录文件复制到宿主机中

# 将容器中的 mysql 配置文件复制到宿主机中指定路径下,路径可以根据需要进行修改
docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf /usr/local/docker/mysql/config
# 将容器中的 mysql 存储目录复制到宿主机中
docker cp mysql:/var/lib/mysql/ /usr/local/docker/mysql/data

停止容器并删除

docker stop 容器id 
docker rm 容器id

正式运行 Mysql 容器并将刚刚复制到本地的配置和存储目录挂载到新的容器里面

docker run -d \
--name mysql \
-p 3306:3306 \
--restart always \
-v /usr/local/docker/mysql/config/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v /usr/local/docker/mysql/data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

完成后可以docker ps查看容器是否运行,确认运行远程连接

docker安装zookeeper

下载zookeeper镜像

docker pull zookeeper

启动容器并添加映射

docker run -d -p 2181:2181 --name zookeeper01 --restart always 镜像id

docker 安装redis

docker run -d \
-p 6379:6379 \
--name redis \
--restart always \
-v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf \
-v /usr/local/docker/redis/data:/data  \
redis:alpine \
redis-server --appendonly yes --requirepass "123456"
  • -p 6379:6379: 将容器的 6379 端口映射到宿主机的 6379 端口;
  • --restart always 设置docker重启时自动重启容器
  • -v /usr/local/docker/redis/data:/data : 将容器中的 /data 数据存储目录, 挂载到宿主机中 /usr/local/docker/redis/data 目录下;
  • -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf : 将容器中 /etc/redis/redis.conf 配置文件,挂载到宿主机的 /usr/local/docker/redis/redis.conf 文件上;
  • redis-server --appendonly yes: 在容器执行 redis-server 启动命令,并打开 redis 持久化配置;
  • --requirepass "123456" 设置redis密码

进入redis容器并且连接redis 确认正常运行

docker  exec -it redis redis-cli -h 127.0.0.1 -p 6379 -a password

docker 安装RabbitMQ

下载镜像

#指定版本,该版本包含了web控制页面
docker pull rabbitmq:management

运行镜像

docker run -d \
--hostname my-rabbit \
--name rabbit \
--restart always \
-e RABBITMQ_DEFAULT_USER=user \
-e RABBITMQ_DEFAULT_PASS=password \
-p 15672:15672 -p 5672:5672 rabbitmq:management

访问管理页面

http://localhost:15672/

docker安装nginx

拉取镜像

docker pull nginx:1.8

测试启动

docker run --name nginx-test -p 8081:80 -d nginx

将容器内nginx的配置文件拷贝到本地

docker cp a2bdd792b474:/etc/nginx/nginx.conf /usr/local/docker/nginx/conf

赋予本地存放nginx配置中的文件夹开放权限

chmod -R 777 nginx

创建容器启动镜像,将配置等需要修改的文件进行映射

docker run -d \
-p 80:80 \
--name nginx-test-web \
--restart always \
--network=host \
-v /usr/local/docker/nginx/www:/usr/share/nginx/html \
-v /usr/local/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/docker/nginx/logs:/var/log/nginx nginx

创建一个index.html放入www文件夹中,访问部署的地址

docker 安装 zipkin

1、拉镜像

docker pull openzipkin/zipkin

2、运行镜像

docker run -d --restart always -p 9411:9411 --name zipkin openzipkin/zipkin

3、访问可视化界面

浏览器访问:http://ip:9411/zipkin/

docker 安装 nacos

拉镜像,版本查看:https://github.com/nacos-group/nacos-docker

docker pull nacos/nacos-server:1.1.4

创建数据目录

mkdir -p  /usr/local/docker/nacos/logs

创建存储nacos配置的数据库

create database nacos_config

nacos初始化sql,需要先创建nacos数据库后,然后执行下面的sql

https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info   */
/******************************************/
CREATE TABLE `config_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(255) DEFAULT NULL, `content` longtext NOT NULL COMMENT 'content', `md5` varchar(32) DEFAULT NULL COMMENT 'md5', `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间', `src_user` text COMMENT 'source user', `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip', `app_name` varchar(128) DEFAULT NULL, `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', `c_desc` varchar(256) DEFAULT NULL, `c_use` varchar(64) DEFAULT NULL, `effect` varchar(64) DEFAULT NULL, `type` varchar(64) DEFAULT NULL, `c_schema` text, PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info'; /******************************************/ /* 数据库全名 = nacos_config */ /* 表名称 = config_info_aggr */ /******************************************/ CREATE TABLE `config_info_aggr` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(255) NOT NULL COMMENT 'group_id', `datum_id` varchar(255) NOT NULL COMMENT 'datum_id', `content` longtext NOT NULL COMMENT '内容', `gmt_modified` datetime NOT NULL COMMENT '修改时间', `app_name` varchar(128) DEFAULT NULL, `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段'; /******************************************/ /* 数据库全名 = nacos_config */ /* 表名称 = config_info_beta */ /******************************************/ CREATE TABLE `config_info_beta` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(128) NOT NULL COMMENT 'group_id', `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', `content` longtext NOT NULL COMMENT 'content', `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps', `md5` varchar(32) DEFAULT NULL COMMENT 'md5', `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间', `src_user` text COMMENT 'source user', `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip', `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta'; /******************************************/ /* 数据库全名 = nacos_config */ /* 表名称 = config_info_tag */ /******************************************/ CREATE TABLE `config_info_tag` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(128) NOT NULL COMMENT 'group_id', `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id', `tag_id` varchar(128) NOT NULL COMMENT 'tag_id', `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', `content` longtext NOT NULL COMMENT 'content', `md5` varchar(32) DEFAULT NULL COMMENT 'md5', `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间', `src_user` text COMMENT 'source user', `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip', PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag'; /******************************************/ /* 数据库全名 = nacos_config */ /* 表名称 = config_tags_relation */ /******************************************/ CREATE TABLE `config_tags_relation` ( `id` bigint(20) NOT NULL COMMENT 'id', `tag_name` varchar(128) NOT NULL COMMENT 'tag_name', `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(128) NOT NULL COMMENT 'group_id', `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id', `nid` bigint(20) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`nid`), UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`), KEY `idx_tenant_id` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation'; /******************************************/ /* 数据库全名 = nacos_config */ /* 表名称 = group_capacity */ /******************************************/ CREATE TABLE `group_capacity` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群', `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值', `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量', `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值', `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量', `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_group_id` (`group_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表'; /******************************************/ /* 数据库全名 = nacos_config */ /* 表名称 = his_config_info */ /******************************************/ CREATE TABLE `his_config_info` ( `id` bigint(64) unsigned NOT NULL, `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `data_id` varchar(255) NOT NULL, `group_id` varchar(128) NOT NULL, `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', `content` longtext NOT NULL, `md5` varchar(32) DEFAULT NULL, `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00', `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00', `src_user` text, `src_ip` varchar(20) DEFAULT NULL, `op_type` char(10) DEFAULT NULL, `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', PRIMARY KEY (`nid`), KEY `idx_gmt_create` (`gmt_create`), KEY `idx_gmt_modified` (`gmt_modified`), KEY `idx_did` (`data_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造'; /******************************************/ /* 数据库全名 = nacos_config */ /* 表名称 = tenant_capacity */ /******************************************/ CREATE TABLE `tenant_capacity` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID', `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值', `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量', `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数', `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量', `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_tenant_id` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表'; CREATE TABLE `tenant_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `kp` varchar(128) NOT NULL COMMENT 'kp', `tenant_id` varchar(128) default '' COMMENT 'tenant_id', `tenant_name` varchar(128) default '' COMMENT 'tenant_name', `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc', `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source', `gmt_create` bigint(20) NOT NULL COMMENT '创建时间', `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`), KEY `idx_tenant_id` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info'; CREATE TABLE users ( username varchar(50) NOT NULL PRIMARY KEY, password varchar(500) NOT NULL, enabled boolean NOT NULL ); CREATE TABLE roles ( username varchar(50) NOT NULL, role varchar(50) NOT NULL, constraint uk_username_role UNIQUE (username,role) ); CREATE TABLE permissions ( role varchar(50) NOT NULL, resource varchar(512) NOT NULL, action varchar(8) NOT NULL, constraint uk_role_permission UNIQUE (role,resource,action) ); INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE); INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN'); 

运行镜像

docker run -d \

-e PREFER_HOST_MODE=ip \

-e MODE=standalone \

-e SPRING_DATASOURCE_PLATFORM={数据源平台  mysql} \

-e MYSQL_MASTER_SERVICE_HOST={MYSQL主服务主机ip} \

-e MYSQL_MASTER_SERVICE_PORT={MYSQL主服务端口} \

-e MYSQL_MASTER_SERVICE_USER={MYSQL主服务用户名} \

-e MYSQL_MASTER_SERVICE_PASSWORD={MYSQL主服务密码} \

-e MYSQL_MASTER_SERVICE_DB_NAME={MYSQL主服务数据库名 nacos_config } \

-e MYSQL_SLAVE_SERVICE_HOST={MYSQL从服务主机ip} \

-e MYSQL_SLAVE_SERVICE_PORT={MYSQL从服务端口} \

-v /usr/local/docker/nacos/logs:/home/nacos/logs \

-p 8848:8848 \

--name nacos \

--restart=always \

nacos/nacos-server:1.1.4

访问nacos

ip:8848/nacos

新增测试配置 

查看数据库是否更新 数据库配置没有问题的话可以在表config_info中看到刚才新增的配置信息

获取配置 http://ip:8848/nacos/v1/cs/configs?dataId=test01.yml&group=DEFAULT_GROUP

docker 安装sentinel

拉取镜像

docker pull bladex/sentinel-dashboard

运行镜像

docker run --name sentinel -d -p 8858:8858 -d bladex/sentinel-dashboard

访问dashboard 地址

地址:http://localhost:8858
账号密码都为:sentinel

docker 直接拉取镜像无法运行时修改dashboard 的账号密码
如果想要修改需要拉取java环境镜像
用户可以通过如下参数进行配置:
-Dsentinel.dashboard.auth.username=sentinel 用于指定控制台的登录用户名为 sentinel;
-Dsentinel.dashboard.auth.password=123456 用于指定控制台的登录密码为 123456;

其他参数配置见官网文档
https://github.com/alibaba/Sentinel/wiki/%E6%8E%A7%E5%88%B6%E5%8F%B0#%E9%89%B4%E6%9D%83

docker安装 seata:1.0.0

拉取镜像

docker pull seataio/seata-server

测试启动镜像

docker run --name seata-server -p 8091:8091 -d  seataio/seata-server:1.0.0

将容器中的registry.conf复制到本地来

docker cp seata-server:/seata-server/resources/registry.conf /usr/local/docker/seata/conf

官网下载复制config.txt文件进行修改

官网地址
https://github.com/seata/seata/tree/1.0.0/script/config-center

将配置中的
store.db.db-type=mysql
store.db.driver-class-name=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true
store.db.user=mysql
store.db.password=mysql
改为自己数据库的地址

从官网拉取shell脚本将config.txt推送到nacos配置中心

官网链接:https://github.com/seata/seata/blob/1.0.0/script/config-center/nacos/nacos-config.sh

官网shell中推送脚本中有个nacos-config.log这个文件没有导致一直推送报错
官网中也未找到nacos-config.log这个文件,自己新建空白nacos-config.log也无法正常运行nacos-config.sh

重新拉取#1842标签版本的nacos-config.sh成功执行
官网链接:https://github.com/seata/seata/commit/4695d450a07b0f6cdfe61b6dd2db22adbee18969#diff-19562cc9801112787601930e539d9560

这时进入nacos控制台中应该可以看见我们推送过去的配置,默认配置是在public中的,手动克隆到自己建的命名空间

更改复制出来的registry.conf配置文件使用nacos 做注册、配置中心,db存储日志

registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  type = "nacos"

  nacos {
    serverAddr = "localhost:8848"
    namespace = "19de1733-6c9f-42b8-9b34-166a9182988f" #上面nacos中的命名空间
    cluster = "default"
  }
}

config {
  # file、nacos 、apollo、zk、consul、etcd3
  type = "nacos" nacos { serverAddr = "127.0.0.1:8848" namespace = "19de1733-6c9f-42b8-9b34-166a9182988f" #上面nacos中的命名空间 group = "SEATA_GROUP" #分组id } } 

创建存储seata配置的数据库

create database seata

初始化seata数据库

官网地址:https://github.com/seata/seata/blob/1.0.0/script/server/db/mysql.sql
复制出来执行就行

创建完成如图

停止并删除之前的容器

docker stop seata-server
docker rm seata-server

赋予本地存放seata配置中的文件夹开放权限

chmod -R 777 seata

重新创建启动容器,并将本地registry.conf挂载到容器中

docker run -d \
--name seata-server \
-e SEATA_IP=向注册中心注册时IP \
-p 8091:8091 \
-v /usr/local/docker/seata/conf/registry.conf:/seata-server/resources/registry.conf \
seataio/seata-server:1.0.0

其他环境变量

运行成功后进入nacos控制台查看服务列表,seata服务成功注册

docker运行自己的jar包

创建镜像启动容器运行

  1. 使用rz命令上传jar到服务器的指定目录(没有此命令的安装一下lrzsz)
  2. 使用vim命令创建Dockerfile 文件
  3. 然后将下面的内容复制到Dockerfile文件中
FROM java:8
MAINTAINER bin
ADD demo-1.0.0.jar demo.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","demo.jar"]
  • from java:8 拉取一个jdk为1.8的docker 镜像
  • maintainer 镜像作者名称
  • demo-1.0.0.jar 上传的jar包名称
  • demo.jar 将该jar包重新命名的名称,在容器中运行的名称
  • expose 该容器暴露的端口是多少,就是jar在容器中以多少端口运行
  • entrypoint 容器启动之后执行的命令,java -jar demo.jar 即启动jar
  1. 创建好Dockerfile文件之后,执行命令 构建镜像 最后的 “ . ” 表示 Dockerfile 文件在当前目录下
docker build -t demo .
  1. 镜像构建成功,运行容器
docker run -d --name demo -p 8080:8080 demo
  1. docker ps 查看容器是否成功启动

运行jdk镜像将存放jar的目录进行挂载

  1. 在服务器中拉取jdk8的镜像
  2. 构建容器启动
docker run -d \
--restart=always \
-v /usr/local/docker/demo/jar:/jar -v /server/logs/demo:/mnt/logs/demo \
-p 8080:8080 \
--name demo \
java:8 /usr/bin/java -jar \
-Duser.timezone=GMT+08 \
/jar/demo-1.0.0.jar
  • -Duser.timezone 设置时区
  • java:8 /usr/bin/java -jar 是执行 java jar的命令
  • /jar/demo-1.0.jar 是需要运行的jar包的位置在容器中的什么位置,/jar 下面
 来源: 锌闻网

猜你喜欢

转载自www.cnblogs.com/1994jinnan/p/13369440.html