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就行了。