赞
踩
https://docs.docker.com/engine/install/centos/
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
sudo yum install -y yum-utils
配置镜像,即告诉虚拟机docker应该从哪个地址安装
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
systemctl start docker
systemctl enable docker
#验证
docker -v
docker images
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://hnlqq1f3.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
1、
2、
3、
4、
查看github上的docker-compose发行版本的地址:
https://github.com/docker/compose/tags
compose官网安装文档:https://docs.docker.com/compose/install/#install-compose
安装的命令如下:
以编译好的二进制包方式安装在Linux系统中
gihub上下载docker-compose太慢了,下载不动,只能换成国内镜像(daocloud.io)来下载。
下载
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
设置文件具备执行权限
chmod +x /usr/local/bin/docker-compose
查看是否安装成功
docker-compose --version
如果安装出错,要卸载docker-compose,可执行这个命令
二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose
1、在root目录下面建立docker-compose-service文件夹
docker-compose-service文件是我以后存放所有安装的容器地址
注意1:docker-compose.yml文件的格式要求很严格,不能出现tab占位符,如果有得改为2个空格代替,否则会报错
mkdir docker-compose-service
cd docker-compose-service #切换到docker-compose-service文件夹下
vi docker-compose.yml #编辑docker-compose.yml文件
注意2:每次执行docker-compose up -d命令或者其他docker-compose up 命令前必须先切换到docker-compose-service文件夹下,即先执行
cd docker-compose-service
否则会报下面的错
version: "3"
services:
mysql:
image: mysql:5.7
container_name: mysql
restart: always
ports:
- "3381:3306"
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
environment:
MYSQL_ROOT_PASSWORD: "*Qx834¥sD#m&!9051ksh@fkj"
volumes:
- /root/docker-compose-service/mysql/data:/var/lib/mysql
- /root/docker-compose-service/mysql/conf/my.cnf:/etc/my.cnf
redis:
image: redis
container_name: redis
restart: always
environment:
- TZ=Asia/Shanghai
command: redis-server /usr/local/etc/redis/redis.conf
ports:
- "6379:6379"
volumes:
- /root/docker-compose-service/redis/data:/var/lib/redis/data
- /root/docker-compose-service/redis/redis.conf:/usr/local/etc/redis/redis.conf
nginx:
image: nginx
container_name: nginx
restart: always
environment:
- TZ=Asia/Shanghai
ports:
- "82:80"
- "443:443"
volumes:
- /root/docker-compose-service/nginx/conf.d:/etc/nginx/conf.d
- /root/docker-compose-service/nginx/log:/var/log/nginx
- /root/docker-compose-service/nginx/www:/etc/nginx/html
- /root/docker-compose-service/nginx/etc/letsencrypt:/etc/letsencrypt
ls #验证文件是否创建成功
docker-compose up -d
安装完成
由于nacos依赖于mysql, 所以这里单独把nacos配置拿出来
这里很重要,一定要等到mysql安装成功并启动完后再重新创建nacos数据库
之后再安装nacos容器
nacos初始化sql,需要先创建nacos数据库后,然后执行下面的sql
https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql
或者直接将下列sql保存到记事本,重命名为nacos_config.sql
nacos_config.sql文件
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 000000' COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 000000' 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';
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='增加租户字段';
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 000000' COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 000000' 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';
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 000000' COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 000000' 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';
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';
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 000000' COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 000000' COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';
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 000000',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 000000',
`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='多租户改造';
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 000000' COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 000000' 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');
navicat连接服务器上已经安装好并运行的mysql
数据库名称和sql文件名一致,字符集和排序规则对应sql文件要求
nacos_config
刷新得到如下表信息代表数据库创建成功
1.1.4 升级1.3.1需要执行的脚本
ALTER TABLE `roles` ADD UNIQUE `uk_username_role` (`username`, `role`); CREATE TABLE permissions ( role varchar(50) NOT NULL, resource varchar(512) NOTNULL, action varchar(8) NOT NULL, constraint uk_role_permission UNIQUE (role,resource,action) ) ROW_FORMAT=DYNAMIC;
如果启动1.3.1报错,比如mysql时区异常,把conf配置文件弄到主机上
docker cp nacos1.3.1:/home/nacos/conf /home/dockerdata/nacos1.3.1 #修改mysql的配置后docker stop nacos1.3.1docker rm nacos1.3.1
docker run -d \-e PREFER_HOST_MODE=ip \-e MODE=standalone \-e SPRING_DATASOURCE_PLATFORM=mysql \-e MYSQL_SERVICE_HOST=172.168.1.33 \-e MYSQL_SERVICE_PORT=3306 \-e MYSQL_SERVICE_USER=root \-e MYSQL_SERVICE_PASSWORD=root \-e MYSQL_SERVICE_DB_NAME=nacos \-e TIME_ZONE='Asia/Shanghai' \-v /home/dockerdata/nacos1.3.1/logs:/home/nacos/logs \-v /home/dockerdata/nacos1.3.1/conf:/home/nacos/conf \-p 8848:8848 \--name nacos1.3.1 \--restart=always \nacos/nacos-server:1.3.1
安装nacos时,一定要先打开刚才创建好的数据库,否则在启动nacos 会报下面的错
No DataSource set
ERROR Application run failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'opsController' defined in URL [jar:file:/home/nacos/target/nacos-server.jar!/BOOT-INF/lib/nacos-config-1.1.4.jar!/com/alibaba/nacos/config/server/controller/OpsController.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dumpService': Invocation of init method failed; nested exception is java.lang.RuntimeException: Nacos Server did not start because dumpservice bean construction failure :
No DataSource set
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:769)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:218)
... 40 common frames omitted
最后不要忘记更改阿里云安全组的配置规则
cd docker-compose-servicevim docker-compose.yml
version: "3"
services:
mysql:
image: mysql:5.7
container_name: mysql
restart: always
ports:
- "3307:3306"
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
environment:
MYSQL_ROOT_PASSWORD: "root"
volumes:
- /root/docker-compose-service/mysql/data:/var/lib/mysql
- /root/docker-compose-service/mysql/conf/my.cnf:/etc/my.cnf
redis:
image: redis
container_name: redis
restart: always
environment:
- TZ=Asia/Shanghai
command: redis-server /usr/local/etc/redis/redis.conf
ports:
- "6379:6379"
volumes:
- /root/docker-compose-service/redis/data:/var/lib/redis/data
- /root/docker-compose-service/redis/redis.conf:/usr/local/etc/redis/redis.conf
nginx:
image: nginx
container_name: nginx
restart: always
environment:
- TZ=Asia/Shanghai
ports:
- "82:80"
- "443:443"
volumes:
- /root/docker-compose-service/nginx/conf.d:/etc/nginx/conf.d
- /root/docker-compose-service/nginx/log:/var/log/nginx
- /root/docker-compose-service/nginx/www:/etc/nginx/html
- /root/docker-compose-service/nginx/etc/letsencrypt:/etc/letsencrypt
nacos:
image: nacos/nacos-server:1.1.4
container_name: nacos
restart: always
environment:
- PREFER_HOST_MODE=ip
- MODE=standalone
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_MASTER_SERVICE_HOST=123.56.71.102
- MYSQL_MASTER_SERVICE_PORT=3307
- MYSQL_MASTER_SERVICE_USER=root
- MYSQL_MASTER_SERVICE_PASSWORD=root
- MYSQL_MASTER_SERVICE_DB_NAME=nacos_config
- MYSQL_SLAVE_SERVICE_HOST=123.56.71.102
- MYSQL_SLAVE_SERVICE_PORT=3307
volumes:
- /root/docker-compose-service/nacos:/home/nacos/logs
ports:
- "8848:8848"
nacos:
image: nacos/nacos-server:1.1.4
container_name: nacos
environment:
- PREFER_HOST_MODE=ip
- MODE=standalone
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_MASTER_SERVICE_HOST=123.56.71.102
- MYSQL_MASTER_SERVICE_PORT=3307
- MYSQL_MASTER_SERVICE_USER=root
- MYSQL_MASTER_SERVICE_PASSWORD=root
- MYSQL_MASTER_SERVICE_DB_NAME=nacos_config
- MYSQL_SLAVE_SERVICE_HOST=123.56.71.102
- MYSQL_SLAVE_SERVICE_PORT=3307
volumes:
- /root/docker-compose-service/nacos:/home/nacos/logs
ports:
- 8848:8848
restart: always
elasticsearch:
image: elasticsearch:7.4.2
container_name: es7
restart: always
environment:
- discovery.type=single-node
- ES_JAVA_POTS="-Xms64m -Xmx512m"
ports:
- "9200:9200"
- "9300:9300"
volumes:
- /root/docker-compose-service/elasticsearch/data:/usr/share/elasticsearch/data
kibana:
image: kibana:7.4.2
container_name: kibana
restart: always
environment:
- I18N_LOCALE=zh-CN
- XPACK_GRAPH_ENABLED=true
- TIMELION_ENABLED=true
- XPACK_MONITORING_COLLECTION_ENABLED="true"
- ELASTICSEARCH_HOSTS=http://es:9200
- xpack.monitoring.ui.container.elasticsearch.enabled=false
links:
- "elasticsearch"
ports:
- "5601:5601"
点击ESC
:wq 保存退出
docker-compose up -d
docker-compose.yml
version: "3"
services:
mysql:
image: mysql:5.7
container_name: mysql
restart: always
ports:
- "3307:3306"
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
environment:
MYSQL_ROOT_PASSWORD: "root"
volumes:
- /root/docker-compose-service/mysql/data:/var/lib/mysql
- /root/docker-compose-service/mysql/conf/my.cnf:/etc/my.cnf
redis:
image: redis
container_name: redis
restart: always
environment:
- TZ=Asia/Shanghai
command: redis-server /usr/local/etc/redis/redis.conf
ports:
- "6379:6379"
volumes:
- /root/docker-compose-service/redis/data:/var/lib/redis/data
- /root/docker-compose-service/redis/redis.conf:/usr/local/etc/redis/redis.conf
nginx:
image: nginx
container_name: nginx
restart: always
environment:
- TZ=Asia/Shanghai
ports:
- "82:80"
- "443:443"
volumes:
- /root/docker-compose-service/nginx/conf.d:/etc/nginx/conf.d
- /root/docker-compose-service/nginx/log:/var/log/nginx
- /root/docker-compose-service/nginx/www:/etc/nginx/html
- /root/docker-compose-service/nginx/etc/letsencrypt:/etc/letsencrypt
nacos:
image: nacos/nacos-server:1.1.4
container_name: nacos
restart: always
environment:
- PREFER_HOST_MODE=ip
- MODE=standalone
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_MASTER_SERVICE_HOST=123.56.71.102
- MYSQL_MASTER_SERVICE_PORT=3307
- MYSQL_MASTER_SERVICE_USER=root
- MYSQL_MASTER_SERVICE_PASSWORD=root
- MYSQL_MASTER_SERVICE_DB_NAME=nacos_config
- MYSQL_SLAVE_SERVICE_HOST=123.56.71.102
- MYSQL_SLAVE_SERVICE_PORT=3307
volumes:
- /root/docker-compose-service/nacos:/home/nacos/logs
ports:
- "8848:8848"
dokcer中安装elasticsearch
(1)下载ealastic search(存储和检索)和kibana(可视化检索)
版本要统一docker pull elasticsearch:7.4.2docker pull kibana:7.4.2
配置
# 将docker里的目录挂载到linux的/root目录中# 修改/root就可以改掉docker里的mkdir -p /root/docker-compose-service/elasticsearch/configmkdir -p /root/docker-compose-service/elasticsearch/data# es可以被远程任何机器访问#我的设置,注意格式echo "http.host: 0.0.0.0" >/root/docker-compose-service/elasticsearch/config/elasticsearch.yml# 递归更改权限,es需要访问chmod -R 777 /root/docker-compose-service/elasticsearch/
(2)、启动Elasticsearch
# 9200是用户交互端口 9300是集群心跳端口# -e指定是单阶段运行# -e指定占用的内存大小,生产时可以设置32Gdocker run --name es7 -p 9200:9200 -p 9300:9300 \-e "discovery.type=single-node" \-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \-v /root/docker-compose-service/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \-v /root/docker-compose-service/elasticsearch/data:/usr/share/elasticsearch/data \-v /root/docker-compose-service/elasticsearch/plugins:/usr/share/elasticsearch/plugins \-d elasticsearch:7.4.2 # 设置开机启动elasticsearchdocker update es7 --restart=always
如果访问没有错,下面这一步可以跳过!!!
因为容器里的文件映射到了外面,所以删除容器和新建容器数据还在
第一次查docker ps启动了,第二次查的时候发现关闭了,docker logs elasticsearch
http://123.56.71.102:9200
数据挂载到外面,但是访问权限不足
把/mydata/elasticsearch下文件夹的权限设置好,上面已经设置过了
遇到了更新阿里源也下载不下来kibana镜像的情况,先在别的网络下载下来后传到vagrant中
docker save -o kibana.tar kibana:7.4.2 docker load -i kibana.tar # 如何通过其他工具链接ssh 修改/etc/ssh/sshd_config 修改 PasswordAuthentication yes systemctl restart sshd.service 或 service sshd restart # 连接192.168.56.10:22端口成功,用户名root,密码vagrant 也可以通过vagrant ssh-config查看ip和端口,此时是127.0.0.1:2222
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
在安装离线docker镜像的时候还提示内存不足,看了下是因为外部挂载的内存也算在了vagrant中,即使外部删了很多文件,vagrant中df -h硬盘占用率也不下降。我在外部删完文件后在内部又rm -rf XXX 强行接触占用
(3)启动kibana:
# kibana指定了了ES交互端口9200 # 5600为kibana主页端口
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://123.56.71.102:9200 -p 5601:5601 -d kibana:7.4.2
# 设置开机启动kibana
docker update kibana --restart=always
find / -name+文件夹名find / -name kibana
(4)测试
查看elasticsearch版本信息: http://123.56.71.102:9200
{
"name" : "4334173899e6",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "JswYk6h3RdS-ybdiEVGEFg",
"version" : {
"number" : "7.4.2",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "2f90bbf7b93631e52bafb59b3b049cb44ec25e96",
"build_date" : "2019-10-28T20:40:44.881551Z",
"build_snapshot" : false,
"lucene_version" : "8.2.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
显示elasticsearch 节点信息http://123.56.71.102:9200/_cat/nodes
127.0.0.1 14 96 48 9.99 11.11 12.10 dilm * 4334173899e6
4334173899e6代表上面的结点
*代表是主节点
访问Kibana: http://123.56.71.102:5601/app/kibana
docker ps
1、
在浏览器访问 http://ip:8848/nacos/index.html
我的nacos地址: http://123.56.71.102:8848/nacos
默认登录账号 nacos/nacos
2、
查看elasticsearch版本信息: http://ip:9200
我的elasticsearch地址: http://123.56.71.102:9200
3、
访问kibana: http://ip:5601/app/kibana
我的kibana地址: http://123.56.71.102:5601/app/kibana
docker-compose logs -f
docker-compose logs -f elasticsearch
执行docker-compose up -d命令或者其他docker-compose 命令时报错:
ERROR: Top level object in ‘./…/docker-compose.yml’ needs to be an object not ‘<class ‘NoneType’>’
解决办法
cd docker-compose-service #切换到docker-compose-service文件夹下
docker-compose up -d #启动容器
测试-查看elasticsearch版本信息:http://ip:9200的时候访问不了,页面404
我的是访问地址是: http://123.56.71.102:9200
docker-compose logs -f elasticsearch
查看日志发现是docker启动elasticsearch时内存不足问题
解决方法
系统centos7(阿里云轻量级服务器)
cat /etc/redhat-release
docker ps查看容器并没有启动
docker ps
docker ps -a 查看容器确实创建了
docker ps -a
elasticsearch启动时遇到的错误:max virtual memory areas vm.max_count(65530) is too low...
问题翻译过来就是:elasticsearch用户拥有的内存权限太小,至少需要262144;
解决步骤:
1.先切换到root用户;
2.执行命令:
sysctl -w vm.max_map_count=262144
可以查看结果:
sysctl -a|grep vm.max_map_count
会显示如下信息:
vm.max_map_count = 262144
注意:
上述方法修改之后,如果重启虚拟机将失效,所以:
一劳永逸的解决办法:
在/etc/sysctl.conf文件的最后添加一行代码:
vm.max_map_count=262144
即可永久修改。
修改jvm.options文件配置
首先查找jvm.options文件位置(每个服务器的位置可能不同)
[root@iZ2ze19s1rdzjjp5gfjaxxZ docker-compose-service]# find / -name jvm.options
/var/lib/docker/overlay2/49a2b650efb59c15193c66816a5c5295a3bed005651073e86d60c4ee179b0020/merged/usr/share/elasticsearch/config/jvm.options
/var/lib/docker/overlay2/6ca0cfbb248af40428cbe5b9112fc76b07dcc9155c7921f5bae36e1e29dcce89/diff/usr/share/elasticsearch/config/jvm.options
vim进入文件修改虚拟机最小内存
vi
/var/lib/docker/overlay2/49a2b650efb59c15193c66816a5c5295a3bed005651073e86d60c4ee179b0020/merged/usr/share/elasticsearch/config/jvm.options
vi /var/lib/docker/overlay2/6ca0cfbb248af40428cbe5b9112fc76b07dcc9155c7921f5bae36e1e29dcce89/diff/usr/share/elasticsearch/config/jvm.options
找到-Xms属性,修改成512m(我的elasticsearch:7.4.2默认为1g)
保存并退出
vim中按i进入编辑模式,按ESC退出编辑模式,按:进入命令模式,然后在底部命令行输入w为保存,q为退出,q!为强制退出。
再次启动容器,docker ps查看容器启动成功
如果这时还是启动不了,使用top命令查看消耗cpu较多的进程
使用kill -9 进程号 杀死进程
再次启动elasticsearch就可以了![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ja1LfKbT-1663489635739)(C:/Users/28431/AppData/Roaming/Typora/typora-user-images/image-20210721142301901.png)]
kibana也可以正常访问了,如果访问不了就等几分钟再试试!
引入了一个镜像,由于要修改一个参数,因此要进入容器中,一般使用
docker exec -it 容器名 /bin/bash
然而报错:
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: “281c4544b77c”: executable file not found in $PATH: unknown
解决方法
原来该镜像是使用alpine制作的,要进入该容器需要输入
docker exec -it 容器名 /bin/shdocker exec -it kibana /bin/shdocker exec -it es7 /bin/shnetwork.host: 123.56.71.102
访问Kibana: http://123.56.71.102:5601/app/kibana出错
解决办法
docker inspect es7 |grep IPAddress
docker inspect 容器IDdocker inspect e80a93e11ab7
找到Networks下的IPAddress:
记住该IP
IPAddress: 172.17.0.3
docker exec -it 容器名 /bin/bashdocker exec -it kibana /bin/sh #进入kibanadocker exec -it es7 /bin/sh #进入elasticsearch
cd configvi kibana.yml
修改对应的ip,将"http://elasticsearch:9200" 中的 elasticsearch 替换成第一步的ip就好了。
server.name: kibanaserver.host: "0"elasticsearch.hosts: [ "http://172.17.0.3.102:9200" ]xpack.monitoring.ui.container.elasticsearch.enabled: true
我的设置
docker stop kiban容器id
docker restart kibana容器id
再次访问localhost:5601, 正常了
1、内存不足问题 因为练手使用的是aliyun,内存只有1GB,而es默认设置jvm最少需要1GB的堆内存,因此在启动时会报一个内存分配错误,具体的错误截图没保留,因此就不贴了。 解决方法:修改config/jvm.options里面的-Xms和-Xmx的值为合适大小。2、can not run elasticsearch as root [看网上的文章说是不能用root用户启动](https://www.cnblogs.com/sandyyeh/p/8413724.html),需要换其它用户。 解决方法:我是执行adduser命令新增了一个esuser用户,再把es的文件夹移动到home/esuser下面,再更改es文件夹的拥有者sudo chown -R esuser es文件夹,su esuser然后再执行脚本启动成功。 3、es启动是在前台 启动es后,启动信息都显示在前台,无法切换出去,用ctrl+c会把es的进程关掉 解决方法:我是用sh ./ bin/elasticsearch **-d** 来后台启动es的。4、在aliyun启动服务后,无法在自己的浏览器上访问es服务 就像开头那个文章链接里说的,服务启动成功后要访问下127.0.0.1:9200来看看服务启动成功没 ,但是在aliyun启动后,ssh里访问127.0.0.1:9200是没问题的,但是我PC浏览器上无法访问。 这里有两个问题,1是没把9200端口添加到aliyun后台的安全组规则白名单里面,2是es启动默认只监听127.0.0.1(本地环回) 针对阿里云的安全组规则白名单我就不细说了,网上都有文章的,我这里只说说修改es只监听本地环回问题 解决方法:修改config/elasticsearch.yml,把network.host前面的注释符号去掉,并把值改为0.0.0.0;把discovery.seed_hosts前面的注释符号去掉,并把值改为0.0.0.0,修改完之后重启服务,然后就能在自己的PC浏览器上访问9200端口了。 改成0.0.0.0的一个弊端就是公网任何IP段都能直接访问你这个es的端口服务了,这个问题自己斟酌。
在使用docker时,如何追加端口最为方便正在使用的容器,在开发过程中突然需要 443 端口,但是之前run的时候没有添加这个端口,现在想添加,除了export出来后重新run的方法外,还有更好的吗?1.第一步,找到这个Docker容器的IP地址。例如:[root@iZ2ze19s1rdzjjp5gfjaxxZ ~]# docker inspect 'a362c88654dd' | grep IPAddress显示: "IPAddress": "172.17.0.1", "SecondaryIPAddresses": null,2.增加iptables映射iptables -t nat -A DOCKER -p tcp --dport 4430 -j DNAT --to-destination 172.17.0.3:443
systemctl start firewalld
docker-compose up -d | 创建容器并运行 |
---|---|
docker-compose down | 删除容器 |
docker-compose start | 开始运行 |
docker-compose stop | 结束运行 |
docker-compose images | 查看已经安装好的镜像 |
docker-compose ps | 查看目前compose下面的service |
docker-compose exec 容器名 bash | exec 显示的镜像 |
flask 和redis docker-compose 实例 标题上边有源码地址
Dockerfile 创建容器,docker-compse实现部署
pwd more Dockerfilemore app.py more docker-compose.yml
up 安装组下的容器集合
默认的yml的文件名称是当前目录下的docker-compose.yml,如果需要指定:
docker-compose -f 文件名 up
docker-compose up -d 后台运行不显示日志
pwdcurl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://b81aace9.m.daocloud.iosudo docker-compose -f docker-compose.yml up
建议使用docker-compose up -d 后台来运行,如果不后台运行很麻烦ctrl+c的话上边的应用就关闭了。
如果安装出错,要删除所有容器和nacos_config数据库重头再来
docker-compose ps | 查看正在运行的镜像 |
---|---|
docker-compose stop | 结束运行 |
docker-compose down | 删除容器 |
docker ps -a | 查看运行过的容器 |
⑴
docker images | 查看已经安装了的镜像 |
---|---|
docker rmi [IMAGE ID] | 根据镜像ID删除单个镜像 |
docker rmi [IMAGE ID] [IMAGE ID] … | 根据镜像ID批量删除镜像 |
⑵
docker ps -a | 查看运行过的容器 |
---|---|
docker rm [IMAGE ID] [IMAGE ID] … | 根据容器ID批量删除容器 |
docker rmi [IMAGE] [IMAGE] … | 根据镜像名称批量删除镜像 |
⑶
docker ps | 查看正在运行的容器 |
---|---|
docker stop [CONTAINER ID] [CONTAINER ID] … | 停止正在运行的容器 |
docker rm [CONTAINER ID] [CONTAINER ID] … | 根据容器ID批量删除容器 |
docker rmi [IMAGE] [IMAGE ID] … | 根据镜像名称批量删除镜像 |
docker rmi [repository] [tag] | 根据仓库名称和标记删除IMAGE ID相同的镜像 |
列如:
docker rmi docker.io/redis:3.2
如果访问不了nacos, 就连同把nacos_config数据库删了重头再来亿遍,会成功的
从官网上下载linux版本的JDK(jdk-8u172-linux-x64.tar.gz</)
通过ftp或者rz命令上传到linux
我这里需要把JDK安装在/usr/local目录下,在/usr/local下新建文件加java
mkdir /usr/local/java
tar命令解压JDK包,解压地址是 /usr/local/java
tar -zxvf jdk-8u172-linux-x64.tar.gz -C /usr/local/java
进入安装地址,可以看到有JDK的安装目录
接下来配置环境变量
vi命令打开/etc/profile
vi /etc/profile
在文件中加入
#Set Java_Environmentexport JAVA_HOME=/usr/local/java/jdk1.8.0_172export JRE_HOME=/usr/local/java/jdk1.8.0_172/jreexport CLASSPATH=.:$JAVA_HOME/lib$:JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin/$JAVA_HOME:$PATH
加载环境变量
source /etc/profile
至此JDK安装完毕
判断JDK是否安装成功java -versionjava javac
我这里需要把JDK安装在/usr/local目录下,在/usr/local下新建文件加java文件
mkdir /usr/local/java
从华为云下载
cd /usr/local/javawget https://repo.huaweicloud.com/java/jdk/9.0.1+11/jdk-9.0.1_linux-x64_bin.tar.gz
解压
tar命令解压JDK包,解压地址是 /usr/local/java
tar -zxvf jdk-9.0.1_linux-x64_bin.tar.gz -C /usr/local/java
或者
tar -zxvf jdk-8u172-linux-x64.tar.gz -C /usr/local/java
配置JAVA_HOME
vi /etc/profile
添加下面内容
#Set Java_Environmentexport JAVA_HOME=/usr/local/jdk-9.0.1export JRE_HOME=/usr/local/jdk-9.0.1/jreexport CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/libexport PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
或者
#Set Java_Environmentexport JAVA_HOME=/usr/local/java/jdk1.8.0_172export JRE_HOME=/usr/local/java/jdk1.8.0_172/jreexport CLASSPATH=.:$JAVA_HOME/lib$:JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin/$JAVA_HOME:$PATH
加载环境变量
source /etc/profile
验证是否安装成功
java -version
成功!
1、下载jdk安装文件jdk-6u10-linux-i586-rpm.bin
2、上传jdk-6u10-linux-i586-rpm.bin到Linux服务器上,并在shell下执行以下命令
chmod 755 jdk-6u10-linux-i586-rpm.bin./jdk-6u10-linux-i586-rpm.bin
这时会有一段Sun的协议,敲几次空格键,当询问是否同意的时候,敲yes就可以了。
程序会自动生成一个jdk-6u10-linux-i586-rpm.rpm文件,这是主程序包
下面来安装
rpm -ivh jdk-6u10-linux-i586-rpm.rpm #默认安装在/usr/java中
3、设置环境变量(.bashrc文件):
修改用户主目录中的.bashrc文件,添加jdk环境变量。
vim .bashrc
#Set Java_Environment set JAVA_HOME=/usr/javaexport JAVA_HOMEG1N%P o:z3CF^A0setPATH=$PATH:$JAVA_HOME/binexport PATHset CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport CLASSPATH
加载环境变量
source /.bashrc
当然也可以通过更改/etc/profile来实现,但是不推荐这么做,因为这样的设置将对所有用户的shell都生效,对系统安全会产生影响。下面来验证一下变量设置是否生效(在验证前先logout一下,再重新登陆)。如果要使某个用户具有运行java命令的权限,只要修改其bash初始化文件即可。
中的内容可以这样添加
3选1:1、#Set Java_Environmentexport JAVA_HOME=/usr/local/jdk-9.0.1export JRE_HOME=/usr/local/jdk-9.0.1/jreexport CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/libexport PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin 2、#Set Java_EnvironmentJAVA_HOME=/usr/local/java/jdk-9.0.1JRE_HOME=/usr/local/java/jdk-9.0.1/jrePATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/binCLASSPATH=.:$JAVA_HOME/lib/jt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/libexport JAVA_HOME JRE_HOME PATH CLASSPATH 3、#Set Java_Environment export JAVA_HOME=/usr/local/java/jdk-9.0.1export JRE_HOME=/usr/local/java/jdk-9.0.1/jreexport CLASSPATH=.:$JAVA_HOME/lib$:JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin/$JAVA_HOME:$PATH
判断jdk是否安装(显示版本号等信息,说明已经安装)
java -versionjavajavac
which java 查看JDK的安装路径
rm -rf JDK地址(卸载JDK)
rm -rf /usr/local/java/jdk-9.0.1/
查看是否卸载完毕
java -versionjavajavac
vi命令编辑文件profile
vi /etc/profile
删除配置的环境变量
删除用户主目录中(/root)的.bashrc文件中配置的jdk环境变量
vim .bashrc
#Set Java_Environment set JAVA_HOME=/usr/javaexport JAVA_HOMEG1N%P o:z3CF^A0setPATH=$PATH:$JAVA_HOME/binexport PATHset CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport CLASSPATH
至此JDK卸载完毕
卸载默认的JDK:
用root用户登录到系统,打开一个终端输入
rpm -qa | grep
显示内容其中包含以下两行信息
java-1.4.2-gcj-compat-1.4.2.0java-1.4.2-gcj-compat-devel-l.4.2.0
开始卸载jdk
rpm -e java-1.4.2-gcj-compat-1.4.2.0rpm -e java-1.4.2-gcj-compat-devel-l.4.2.0
卸载其他自己安装的jdk直接使用rpm -e java-xxxx
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。