docker基础命令
docker清理 mp.weixin.qq.com/s/y4vjmRBa-…
以root权限进入容器 sudo docker exec -it -u root 容器id /bin/bash
- 实时查看docker容器名为s12的最后10行日志
- $ sudo docker logs -f -t --tail 10 s12
- 查看Docker信息
- docker info
- 下载镜像
- docker pull busybox
- BusyBox是一个最小的Linux系统
- 运行一个带标签镜像的容器
- sudo docker run -t -i ubuntu:14.04 /bin/bash
- 跑个Hello World
- docker run busybox /bin/echo Hello World
- 构建容器
- sample_job=$(docker run -d busybox /bin/sh -c "while true;do echo Docker;sleep 1;done")
- 其中的-d是放在后台执行
- 查看日志
- docker logs $sample_job
- 名为sample_job的容器,停止命令是
- docker stop $sample_job
- 重启该容器
- docker restart $sample_job
- 要将容器删除,需要先将容器停止,容器删除命令为:
- docker rm $sample_job
- 将容器的状态保存为新的镜像的方法为:
- docker commit
- 查看镜像
- docker images
- 搜索镜像
- docker search (image-name)
- 查看镜像的历史版本
- docker history (image-name)
- 将镜像推送到registry
- docker push (image-name)
- 查看我们正在运行的容器
- docker ps -l
- 端口映射
- docker run -d -p 5000:5000 training/webapp python app.py
- 移除镜像
- docker rmi(镜像名称或者id前3位)
docker部署
blog.csdn.net/weixin_4268… jar包docker部署 1.部署的jar包配置maven pom 2.添加docker file 3.配置服务器上的docker.service 4.配置idea 的docker插件 maven插件参考mario-rich
docker安装
docker 镜像加速
sudo cp -n /lib/systemd/system/docker.service /etc/systemd/system/docker.service
sudo sed -i "s|ExecStart=/usr/bin/docker daemon|ExecStart=/usr/bin/docker daemon --registry-mirror=<your accelerate address>|g" /etc/systemd/system/docker.service
sudo sed -i "s|ExecStart=/usr/bin/dockerd|ExecStart=/usr/bin/dockerd --registry-mirror=<your accelerate address>|g" /etc/systemd/system/docker.service
sudo systemctl daemon-reload
sudo service docker restart
容器
#dockerfile
FROM java:8
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone
安装mysql
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=rich mysql:latest 或
version: '3'
services:
mysql:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: **
ports:
- 3306:3306
volumes:
- "/root/db-data/mysql/:/var/lib/mysql"
restart: always
#chmod 777 /root/db-data/mysql/
搭建maven私有仓库
www.jianshu.com/p/09a6cab37… docker run -d -p 8081:8081 --name nexus -v /root/nexus-data:/var/nexus-data --restart=always sonatype/nexus3
docker exec -it 511d6878bca5 /bin/bash
获取登陆密码
cd nexus-data/
cat admin.password 登录后可以自定义修改密码
安装nginx
version: '3'
services:
nginx:
image: nginx:latest
ports:
- 443:443
volumes:
- "/root/nginx-config/service.conf:/etc/nginx/conf.d/service.conf"
- "/root/nginx-config/1_service.xy-design.top_bundle.crt:/etc/nginx/1_service.xy-design.top_bundle.crt"
- "/root/nginx-config/2_service.xy-design.top.key:/etc/nginx/2_service.xy-design.top.key"
java:
build:
context: .
ports:
- 8088:8088
volumes:
- "/root/java/mario-rich-web-1.0.0-SNAPSHOT.jar:/root/java/mario-rich-web-1.0.0-SNAPSHOT.jar"
command: ["java", "-jar", "/root/java/mario-rich-web-1.0.0-SNAPSHOT.jar"]
安装redis
docker run --name redis -p 6379:6379 -d redis
安装zookeeper
docker run --name zookeeper --restart always -d zookeeper
后台服务jar
# 例如xxl-job-admin
version: '3'
services:
jobadmin:
build:
context: /root/docker
dockerfile: Dockerfile
ports:
- 8077:8077
volumes:
- "/root/java/xxl-job-admin-2.2.1-SNAPSHOT.jar:/root/java/xxl-job-admin-2.2.1-SNAPSHOT.jar"
command: ["java", "-jar", "/root/java/xxl-job-admin-2.2.1-SNAPSHOT.jar"]
安装es
services:
elasticsearch:
image: elasticsearch:7.8.0
container_name: elasticsearch
restart: always
environment:
# 开启内存锁定
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
# 指定单节点启动
- discovery.type=single-node
ulimits:
# 取消内存相关限制 用于开启内存锁定
memlock:
soft: -1
hard: -1
ports:
- 9200:9200
- 9300:9300
- 5601:5601
volumes:
- /root/es/data:/usr/share/elasticsearch/data
- /root/es/logs:/usr/share/elasticsearch/logs
- /root/es/plugins:/usr/share/elasticsearch/plugins
#需要给与/root/es/data 下3个文件777权限
搭建loki日志系统
loki local-config
auth_enabled: false
server:
http_listen_port: 3100
ingester:
lifecycler:
address: 127.0.0.1
ring:
kvstore:
store: inmemory
replication_factor: 1
final_sleep: 0s
chunk_idle_period: 5m
chunk_retain_period: 30s
max_transfer_retries: 0
schema_config:
configs:
- from: 2018-04-15
store: boltdb
object_store: filesystem
schema: v11
index:
prefix: index_
period: 168h
storage_config:
boltdb:
directory: /tmp/loki/index
filesystem:
directory: /tmp/loki/chunks
limits_config:
enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 168h
chunk_store_config:
max_look_back_period: 0s
table_manager:
retention_deletes_enabled: false
retention_period: 0s
promtail
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://loki:3100/loki/api/v1/push
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: rich-web
__path__: /var/log/*log
# __path__: /Users/vimk/IdeaProjects/java/mario-rich/log/rich-web/*log
grafana
version: "3"
networks:
loki:
services:
loki:
image: grafana/loki:1.5.0
ports:
- "3100:3100"
volumes:
- $PWD:/etc/loki
- $PWD/etc/loki/loki-local-config.yaml:/etc/loki/local-config.yaml
networks:
- loki
promtail:
image: grafana/promtail:1.5.0
volumes:
- $PWD:/etc/promtail
- /var/log:/var/log
- $PWD/etc/promtail/promtail-docker-config.yaml:/etc/promtail/docker-config.yaml
command: -config.file=/etc/promtail/docker-config.yaml
networks:
- loki
#无法启动
#docker run -v $(pwd):/mnt/config -v /Users/vimk/IdeaProjects/java/mario-rich/log/rich-web/log:/var/log -v /Users/vimk/IdeaProjects/java/mario-rich/docker-compose/etc/promtail/promtail-docker-config.yaml:/etc/promtail/docker-config.yaml grafana/promtail:1.5.0 -config.file=/etc/promtail/docker-config.yaml
grafana:
image: grafana/grafana:master
ports:
- "3000:3000"
environment:
GF_EXPLORE_ENABLED: "true"
GF_SECURITY_ADMIN_USER: "rich"
GF_SECURITY_ADMIN_PASSWORD: "rich"
networks:
- loki
version: "3"
networks:
loki:
services:
grafana:
image: grafana/grafana:master
ports:
- "3000:3000"
environment:
GF_EXPLORE_ENABLED: "true"
GF_SECURITY_ADMIN_USER: "rich"
GF_SECURITY_ADMIN_PASSWORD: "rich"
networks:
- loki
安装flink
#manager
version: "2.2"
services:
jobmanager:
image: flink:1.11.0-scala_2.11
ports:
- "8081:8081"
command: jobmanager
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
taskmanager:
image: flink:1.11.0-scala_2.11
depends_on:
- jobmanager
command: taskmanager
scale: 1
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
taskmanager.numberOfTaskSlots: 2
#task
version: "2.2"
services:
jobmanager:
image: flink:1.11.0-scala_2.11
ports:
- "8081:8081"
command: standalone-job --job-classname com.job.ClassName [--job-id <job id>] [--fromSavepoint /path/to/savepoint [--allowNonRestoredState]] [job arguments]
volumes:
- /Users/vimk/IdeaProjects/java/mario-rich/docker-compose/flink/usrlib:/opt/flink/usrlib
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
parallelism.default: 2
taskmanager:
image: flink:1.11.0-scala_2.11
depends_on:
- jobmanager
command: taskmanager
scale: 1
volumes:
- /Users/vimk/IdeaProjects/java/mario-rich/docker-compose/flink/usrlib:/opt/flink/usrlib
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
taskmanager.numberOfTaskSlots: 2
parallelism.default: 2