Docker安装JAVA软件总结

一、安装JDK

docker pull openjdk:8 #拉取镜像

docker run -id --name=openjdk -p 8080:8080  openjdk:8 #创建容器

二、安装MySql

  • 拉取镜像

        

# 查询中央仓库
docker search -f is-official=true mysql

# 从中央仓库下载
docker pull mysql:8.0.25

  • 配置mysql挂载目录

mkdir -p /usr/local/mysql/data && 
mkdir -p /usr/local/mysql/logs && 
mkdir -p /usr/local/mysql/conf

  • 创建mysql配置文件

        在宿主机上创建mysql配置文件:/usr/local/mysql/conf/my.cnf

        cat > /usr/local/mysql/conf/my.cnf << EOF
[mysqld]
character-set-server=UTF8MB4
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password
wait_timeout=1814400
[mysql]
default-character-set=UTF8MB4
[client]
default-character-set=UTF8MB4    
EOF

  • 创建容器  

# 创建并运行容器,docker 会自动创建 /usr/local/mysql/data 目录和mysql配置目录conf/my.cnf
docker run -id -p 3306:3306 \
--name=mysql \
--restart=always \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/logs:/var/log/mysql \
-v /usr/local/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
-e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.25

三、安装Tomcat

  • 搜索tomcat镜像  

docker search tomcat 

  • 拉取tomcat镜像  

docker pull tomcat:8 

  • 创建容器,设置端口映射、目录映射  

# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir -p /usr/local/tomcat

#创建容器
docker run -id --name=tomcat8 -p 8080:8080 -v /usr/local/tomcat:/usr/local/tomcat/webapps tomcat:8


#docker run -id --name=tomcat8 -p 8080:8080 -v $PWD:/usr/local/tomcat/webapps tomcat:8

 

参数说明:

  • -p 8080:8080:将容器的8080端口映射到主机的8080端口 (第一个8080是宿主机端口用来和tomcat做映射的,第二个8080是容器启动tomcat端口8080,第二个端口是tomcat容器默认启动的端口)

  • -v $PWD:/usr/local/tomcat/webapps:将主机中当前目录挂载到容器的webapps


  • 使用外部机器访问tomcat  

在宿主机目录/usr/tomcat下创建test目录。并在test目录下创建index.html。那么test目录会同步到tomcat8容器的 /usr/local/tomcat/webapps里面
在docker版的tomcat8中其webapps文件为空,其欢迎页都放在webapps.dist文件中
[root@localhost tomcat]# mkdir test
[root@localhost tomcat]# cd test/
[root@localhost test]# vim index.html #在index.html里面编写 <h1>hello tomcat</h1> 

四、安装NGINX

  • 搜索nginx镜像  

docker search nginx 

  • 拉取nginx镜像  

docker pull nginx 

  • 创建目录  

        进入到/usr/local  

mkdir -p /usr/local/nginx/conf.d && 
mkdir -p /usr/local/nginx/logs && 
mkdir -p /usr/local/nginx/html

  • 编写nginx配置文件nginx.conf  

        /usr/local/nginx/conf.d/nginx.conf  

cat > /usr/local/nginx/conf.d/nginx.conf << EOF
server {
        listen       80;
        server_name  localhost;

        location / {
            root   /usr/share/nginx/html;  #usr/share/nginx/html为docker中nginx的静态资源目录
            index  index.html index.htm;
        }
    }
EOF

说明:

第四步其实可以省略,默认创建一个nginx容器,会在/etc/nginx/目录下生成一个叫nginx.conf的配置文件,nginx容器启动会去加载该文件,该文件的内容和第四步配置文件的内容相同。这个文件的末尾有include /etc/nginx/conf.d/*.conf;这句话,也就说在conf.d目录下并且以conf结尾的文件都会被加载,而这个目录下只有一个配置文件就是default.conf,default.conf文件的内容配置了一个server节点,以及默认访问nginx的目录和首页(/html/index.html)

  • 创建nginx容器、端口映射、目录挂载  

docker run -id -p 80:80 \
--name=nginx \
--restart=always \
-v /usr/local/nginx/conf.d:/etc/nginx/conf.d \  #不挂载这个配置文件也是可以的
-v /usr/local/nginx/logs:/var/log/nginx \       #nginx容器默认的日志文件保存到/var/log/nginx目录下
-v /usr/local/nginx/html:/usr/share/nginx/html \ #nginx默认会去访问/usr/share/nginx/html下的index.html
nginx


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

 

如果你不想挂载,所有的都可以不挂载,如果所有的都不挂载,默认情况,当创建nginx容器时,在/etc/nginx/目录下有nginx.conf这个文件,这个文件是nginx的配置文件,nginx容器启动的时候会去读这个配置文件

在宿主机的/usr/local/nginx/html目录下新建 index.html,让其同步到/usr/share/nginx/html目录下  

五、安装Redis

  • 搜索redis镜像  

[root@localhost ~]#docker search redis 

  • 拉取redis镜像  

[root@localhost ~]#docker pull redis:5.0 

  • 创建挂载目录,并复制redis.conf到该目录中  

mkdir -p /usr/local/redis/conf 

  • 创建容器  

docker run -id \
-p 6379:6379 \
--name=redis \
--restart=always \
-v /usr/local/redis/conf/redis.conf:/usr/local/bin/myredis.conf \
redis:5.0 /bin/bash \
-c "redis-server /usr/local/bin/myredis.conf" 

提示:-c "redis-server /usr/local/bin/myredis.conf" 为redis指定以哪个配置文件启动 

六、安装MinIo

拉取镜像
docker pull minio/minio

创建挂载目录
mkdir -p /usr/local/minio/data

创建容器
docker run -p 9000:9000 -p 9090:9090 \
 --net=host \
 --name minio \
 -d --restart=always \
 -e "MINIO_ACCESS_KEY=minioadmin" \
 -e "MINIO_SECRET_KEY=minioadmin" \
 -v /usr/local/minio/data:/data \
 minio/minio server \
 /data --console-address ":9000" -address ":9090" #端口一样则不需要,否则无法启动

 

--console-address ":9000" --address ":9090" docker使用静态的固定端口,以避免启动时使用随机端口  

七、安装Elasticsearch

1、安装Elasticsearch

  • 下载镜像

        如果本地有镜像,则无需下载。是否有镜像,可通过 docker images 命令查看。

docker pull elasticsearch:7.11.1 

  • docker run 运行容器  

#创建目录
mkdir -p /usr/local/elasticsearch/data && chmod 777 /usr/local/elasticsearch/data
mkdir -p /usr/local/elasticsearch/plugins && chmod 777 /usr/local/elasticsearch/plugins

docker run -d --name elasticsearch \
--restart=always \
  -e "discovery.type=single-node" \
  -v /etc/localtime:/etc/localtime:ro \
  -v /usr/local/elasticsearch/data:/usr/share/elasticsearch/data \
  -v /usr/local/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
  -p 9200:9200 \
  -p 9300:9300 \
  elasticsearch:7.11.1

 

  • docker 运行 elasticsearch 时,有可能会报如下错误:  

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 

解决办法是:在宿主机 /etc/sysctl.conf 文件最后添加一行:vm.max_map_count=262144 ,然后执行命令 sysctl -p

echo "vm.max_map_count=262144" >> /etc/sysctl.conf

sysctl -p #让配置生效

 

  • 验证

        通过 docker ps 查看容器的运行信息。

        访问网址 http://主机IP:9200/,会有一点点延迟,会看到类似如下内容:

{
  "name" : "...",
  "cluster_name" : "...",
  "cluster_uuid" : "...",
  "version" : {
    "number" : "7.10.1",
    "build_flavor" : "...",
    "build_type" : "...",
    "build_hash" : "...",
    "build_date" : "...",
    "build_snapshot" : ...,
    "lucene_version" : "...",
    "minimum_wire_compatibility_version" : "...",
    "minimum_index_compatibility_version" : "..."
  },
  "tagline" : "You Know, for Search"

 

  • 默认配置【不用改】

        ES 默认的配置文件 elasticsearch.yml 的内容只有 2 行:

 cluster.name: "docker-cluster"
network.host: 0.0.0.0

 

2、安装IK分词器

复制ik分词器到/usr/local/elasticsearch/plugins目录中即可  

3、安装Kibana

  • 下载镜像  

docker pull kibana:7.11.1 

  • 修改配置  

创建/usr/local/kibana/config/kibana.yml

mkdir -p  /usr/local/kibana/config

cat > /usr/local/kibana/config/kibana.yml << EOF
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch的ip地址:9200" ]  # elasticsearch 改为elasticsearch容器的地址
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN" # 设置kibana为中文
EOF

 

  • 创建容器  

docker run -it -p 5601:5601 \
--name kibana \
--restart=always \
-v /usr/local/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
-e “ELASTICSEARCH_URL=http://192.172.0.14:9200” \
-d kibana:7.11.1 

注意这里的--net elastic 这里指定使用docker中的那个虚拟网络,后面-e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200"指定了Kibana的elasticsearch地址的全局变量端口对应elastcserach容器开放的端口号。 

八、安装RabbitMQ

  • 创建目录  

mkdir -p /usr/local/rabbitmq 

  • 拉取镜像  

docker pull rabbitmq:management  #拉取最新镜像 

  • 创建容器  

docker run -d \
-p 5672:5672 -p 15672:15672 \
--name rabbitmq \
--restart=always \
--hostname rabbitmq rabbitmq:management 

九、安装Nacos

  • 拉取镜像 

docker pull nacos/nacos-server 

  • 创建容器

-v /usr/local/nacos/logs:/home/nacos/logs \ 日志路径 -v /usr/local/nacos/conf:/home/nacos/conf \ 配置文件路径

# 运行nacos 
docker  run \
--name nacos -d \
-p 8848:8848 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
nacos/nacos-server 

 

十、安装Sentinel

  • 拉取镜像

docker pull bladex/sentinel-dashboard 

  • 创建容器  

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

 

十一、安装seata

  • 创建seata所需数据表  

-- 分支事务表
DROP TABLE IF EXISTS `branch_table`;
CREATE TABLE `branch_table`  (
  `branch_id` bigint(0) NOT NULL,
  `xid` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `transaction_id` bigint(0) DEFAULT NULL,
  `resource_group_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `resource_id` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `local_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `branch_type` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `status` tinyint(0) DEFAULT NULL,
  `client_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `application_data` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `gmt_create` datetime(0) DEFAULT NULL,
  `gmt_modified` datetime(0) DEFAULT NULL,
  PRIMARY KEY (`branch_id`) USING BTREE,
  INDEX `idx_xid`(`xid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- 全局配事务表
DROP TABLE IF EXISTS `global_table`;
CREATE TABLE `global_table`  (
  `xid` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `transaction_id` bigint(0) DEFAULT NULL,
  `status` tinyint(0) NOT NULL,
  `application_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `transaction_service_group` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `transaction_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `timeout` int(0) DEFAULT NULL,
  `begin_time` bigint(0) DEFAULT NULL,
  `application_data` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `gmt_create` datetime(0) DEFAULT NULL,
  `gmt_modified` datetime(0) DEFAULT NULL,
  PRIMARY KEY (`xid`) USING BTREE,
  INDEX `idx_gmt_modified_status`(`gmt_modified`, `status`) USING BTREE,
  INDEX `idx_transaction_id`(`transaction_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- 数据锁表
DROP TABLE IF EXISTS `lock_table`;
CREATE TABLE `lock_table`  (
  `row_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `xid` varchar(96) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `transaction_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci,
  `branch_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci,
  `resource_id` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `table_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `pk` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `gmt_create` datetime(0) DEFAULT NULL,
  `gmt_modified` datetime(0) DEFAULT NULL,
  PRIMARY KEY (`row_key`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

 

  • 拉取镜像  

docker pull seataio/seata-server:1.4.2 

  • 在宿主机上创建配置  

        /usr/local/seata/registry.conf  

cat > /usr/local/seata/registry.conf << EOF
registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  type = "nacos"
  nacos {
    application = "seata-server"
    serverAddr = "192.172.0.14:8848" #nacos的外部访问地址
    group = "DEFAULT_GROUP"   #和微服务的分组相同
    namespace = ""
    cluster = "default"
    username = "nacos"
    password = "nacos"
  }
}
config {
  # file、nacos 、apollo、zk、consul、etcd3
  type = "file"
  file {
    name = "file.conf"
  }
}
EOF 

        /usr/local/seata/file.conf  

cat > /usr/local/seata/file.conf << EOF
store {
  ## store mode: file、db、redis
  mode = "db" 
  ## database store property
  db {
    datasource = "druid"
    ## mysql/oracle/postgresql/h2/oceanbase etc.
    dbType = "mysql"
    driverClassName = "com.mysql.cj.jdbc.Driver"
    url = "jdbc:mysql://192.172.0.14:3306/seata_db?serverTimezone=UTC"  #mysql的外部访问地址
    user = "root"
    password = "123456"
    minConn = 5
    maxConn = 30
    globalTable = "global_table"
    branchTable = "branch_table"
    lockTable = "lock_table"
    queryLimit = 100
    maxWait = 5000
  } 
}
EOF 

  • 创建容器  

docker run -d \
--restart always \
--name seata-server \
-p 8091:8091 \
-v /usr/local/seata/registry.conf:/seata-server/resources/registry.conf \
-v /usr/local/seata/file.conf:/seata-server/resources/file.conf \
-e SEATA_IP=外网ip \
-e SEATA_PORT=8091 \
-e MODE=standalone \
seataio/seata-server:1.4.2 

注意:nacos默认是使用cluster集群方式启动的,这里要指定MODE是standalone单机模式,否则会导致seata等服务注册不到nacos。

遇到的坑,如果是部署云服务器,没有设置SEATA_IP,默认注册的是docker的内网ip,seata启动虽然没有问题,但是微服务项目启动连接时,会报错can not register RM,err:can not connect to services-server.

十二、安装zipkin

  • 拉取  

docker pull openzipkin/zipkin 

  •  安装

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

 

  • 26
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Docker —— 从入门到实践 - v1.0.pdf Dubbo部署文档.doc Dubbo面试专题.docx java后端面试题答案.pdf Java并发Fork-Join框架原理解析.docx JAVA核心知识整理.pdf JAVA核心知识点整理.pdf Java面试笔记.docx JAVA面试题解惑系列.pdf Java面试题(基础).pdf JVM 实用参数系列 - v1.0.pdf JVM与性能优化知识点整理.pdf JVM面试专题.docx JVM面试专题及答案.pdf Linux系统Redis笔记.docx MongoDB学习笔记.docx mybatis原理.docx MyBatis面试专题.docx MyBatis面试专题及答案.pdf Mybatis面试题(含答案).pdf MySQL性能优化的21个最佳实践.pdf mysql面试专题.docx MySQL面试题(含答案).pdf Netty面试专题.docx Nginx实战.pdf ORACLE数据库SQL语句编写优化总结.pdf Redis面试题(含答案).docx Redis面试题(含答案).pdf solr索引搜索.docx Spring Boot实战 .pdf Spring Boot面试专题.docx Spring Cloud面试专题.docx SpringBoot面试专题及答案.pdf SpringCloud面试专题及答案.pdf SpringMVC面试专题.docx Spring全家桶知识笔记.pdf Spring源码分析.pdf Spring面试专题.docx Spring面试专题及答案.pdf Spring面试题(含答案).pdf Tomcat面试专题.docx vivo2021届春季招聘在线编程考试.docx 哔哩哔哩2021招聘后端笔试卷(一).docx 哔哩哔哩2021招聘后端笔试卷(二).docx 多线程面试59题(含答案).pdf 多线程面试专题及答案.pdf 完整面试题(含答案).pdf 小米2021软件开发工程师笔试题一.docx 小米2021软件开发工程师笔试题二.docx 并发编程面试专题.docx 微服务面试专题及答案.pdf 快手2021招聘秋招笔试--工程A试卷.docx 快手2021招聘秋招笔试--工程B试卷.docx 快手2021招聘秋招笔试--工程C试卷.docx 拼多多2021部分编程题合集.docx 数据库面试专题及答案.pdf 正则表达式.pdf 消息中间件面试专题及答案.pdf 深入浅出Redis.pdf 爱奇艺2021Java方向笔试题.docx 爱奇艺2021Java方向笔试题(第一场).docx 看透springMvc源代码分析与实践.pdf 网易2021招聘笔试- 系统开发研发工程师(提前批).docx 网易2021笔试- Java 开发工程师(提前批).docx 网易2021笔试- Java 开发工程师(正式批).docx 网易2021笔试- 系统开发研发工程师(正式批).docx 美团点评2021校招后台开发方向笔试题.docx 美团点评2021系统开发方向笔试题.docx 腾讯2021招聘-后台.docx 设计模式面试专题及答案.pdf 详细解析_Log4j_配置 .docx 阿里百度美团面试题集合.pdf 面试宝典.pdf

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值