1. 准备工作
项目中用到了redis(3.2),mysql(5.7),nginx,elasticsearch(5.5.0),jdk(1.8)。
将项目中的properites或yml中的配置信息全部配置成默认的,
将生成的jar包上传到/usr/local/src/下面
2. 创建Dockerfile
注:Dockerfile F字母是小写
FROM java:8
MAINTAINER 457237252@qq.com
VOLUME /tmp
ADD zookeeper-test-0.0.1-SNAPSHOT.jar qjg.jar
RUN bash -c 'touch /qjg.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/qjg.jar"]
3. 安装mysql
docker search mysql //查看都有哪些mysql在docker hub上,OFFICIAL 代表是否官方。
docker pull mysql:5.7
docker images
docker run -d -e MYSQL_ROOT_PASSWORD=123456 -p 23306:3306 --name mysql mysql:5.7
注:深有体会,用一般方式安装 mysql 用了4小时,用docker安装用了不到五分钟。
在配置文件的[mysqld]后添加lower_case_table_names=1
1.linux下输入命令查看docker容器CONTAINER ID :
命令: docker ps
2.进入docke容器
命令: docker exec -it f0b1c8ab3633 /bin/bash
(f0b1c8ab3633为CONTAINER ID,请修改为你的CONTAINER ID )
3. 不能使用vim命令的时候用如下命令:
apt-get update
apt-get install vim
3.进入mysql目录
命令: cd /etc/mysql/mysql.conf.d
4.查看mysql配置文件:
命令: ls
5.修改配置文件
命令:vim mysqld.cnf
按 i 进入编辑,加入lower_case_table_names=1
按Esc键,输入 :wq 保存退出
6.停止docker
命令:systemctl stop docker
7.启动docker
systemctl restart docker
docker start d3a64017b824
4. 安装redis
docker pull redis:3.2
1、启动无密码的redis
docker run -p 6379:6379 -v $pwd/data:/data -d redis:3.2 redis-server --appendonly yes
备注:
-p 6379:6379 : 将容器的6379端口映射到主机的6379端口
-v $pwd/data:/data : 将主机中当前目录下的data挂载到容器的/data
redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
2、启动带密码的redis
docker run -p 6379:6379 -d --restart=always redis:3.2 redis-server --appendonly yes --requirepass "your passwd"
备注:
-p 6379:6379 :将容器内端口映射到宿主机端口(右边映射到左边)
redis-server –appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
requirepass “your passwd” :设置认证密码
–restart=always : 随docker启动而启动
5. 安装nginx
docker search nginx
docker pull nginx
docker run --name nginx -p 80:80 -d nginx
在/usr/local/下面创建nginx,在nginx下面创建html,conf,logs
然后执行
docker run -d -p 80:80 --name nginx -v /usr/local/nginx/html:/usr/share/nginx/html -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/logs:/var/log/nginx nginx
然后就可以在nginx的目录下进行文件的编辑操作了。
6. 安装elasticsearch
docker pull elasticsearch:5.5.0
docker run -p 9200:9200 -p 9300:9300 --name elasticsearch -e "cluster.name=elasticsearch" -d elasticsearch:5.5.0
7. 常用命令
docker service create --replicas 5 -p 9000:9000 --name qjgdemo qjgdockerdemo //创建5个qjgdemo。
docker service rm qjgdemo //删除这个集群。
docker service scale qjgdemo=1 //将五个集群缩减为四个集群。 注意 qjgdemo=1 中间没有空格,不然会报错。
docker service ls //显示所有的服务集群。
docker node ls //显示所有的集群节点的信息
docker stop 80f6f2843e6b //停止运行容器
docker container rm 80f6f2843e6b //删除停止运行的容器
问题整理:
1. 创建集群部署时:
解决方案:docker login 需要注册docker hub ,网址 https://hub.docker.com 注册一个就行。
2. 执行完docker swarm init 之后 提示执行
docker swarm join --token SWMTKN-1-2w8xcf26mzxplsgree6auc3jjfp1jz0lmzcy0afhyqpvz6n42l-1ri07ah73op54xys130kmr2uo 172.30.0.10:2377 这个。
3. docker service create --replicas 5 -p 9000:9000 --network appnet --network bridge --name qjgdemo qjgdockerdemo
Error response from daemon: network appnet not found 执行这个的时候报错了,改为如下命令:
docker service create --replicas 5 -p 9000:9000 --name qjgdemo qjgdockerdemo
4. 针对上面启动elasticsearch的时候报错了。错误信息如下;
然后参考网页:https://blog.csdn.net/qq_43039260/article/details/87462377
修改了jvm.options文件
find / -name jvm.options
然后进行修改,修改之后重启elasticsearch就行了。