一、docker swarm集群挂载宿主机目录
1、sudo docker service create --name testrd --detach=false --mount type=bind,src=/root/test,dst=/usr/local/record vmtest:1.0
解析:sudo 以root权限执行,testrd 容器名称,挂载宿主机目录src:宿主机的目录,dst:容器里的目录,vmtest:1.0 带版本的镜像
2、springboot 应用jar包在docker swarm集群部署挂载宿主机目录
docker swarm集群搭建参考原文:https://www.cnblogs.com/bigberg/p/8761226.html
sudo docker service create --replicas 1 -p 9143:9143 -e "spring.cloud.client.ipAddress=172.17.12.99" -e "server.port=9143" -e "EUREKA_INSTANCE_IP-ADDRESS=127.0.0.11" -e "SERVER_PORT=9143" --name test --detach=false --mount type=bind,src=/app,dst=/app test:202203241120
解析:
--replicas : 副本集个数;
--name test:服务名称为test;
server.port=9143 springboot jar 端口号9143;
spring.cloud.client.ipAddress=172.17.12.99 springboot 指定暴露ip为172.17.12.9;
EUREKA_INSTANCE_IP-ADDRESS=127.0.0.11 springboot 指定注册到eureka的ip为127.0.0.11;
容器启动之后,容器中可以运行一些网络应用,通过-p或-P参数来指定端口映射。
宿主机的一个端口只能映射到容器内部的某一个端口上,比如:8080->80之后,就不能8080->81
容器内部的某个端口可以被宿主机的多个端口映射,比如:8080->80,8090->80,8099->80
1)启动容器时,选择一个端口映射到容器内部开放端口上
-p 小写p表示docker会选择一个具体的宿主机端口映射到容器内部开放的网络端口上。
-P 大写P表示docker会随机选择一个宿主机端口映射到容器内部开放的网络端口上
3、根据容器名称查询容器ID并删除
# 第一种写法
docker stop `docker ps -a| grep test-project | awk '{print $1}' `
docker rm `docker ps -a| grep test-project | awk '{print $1}' `
# 第二种写法
docker stop `docker ps -aq --filter name=test-project`
docker rm `docker ps -aq --filter name=test-project`
根据镜像名称查询容器ID并删除
# 第一种写法
docker stop `docker ps -a| grep ygsama/test-project:1.0.2 | awk '{print $1}' `
docker rm `docker ps -a| grep ygsama/test-project:1.0.2 | awk '{print $1}' `
# 第二种写法
docker stop `docker ps -aq --filter ancestor=ygsama/test-project:1.0.2`
docker rm `docker ps -aq --filter ancestor=ygsama/test-project:1.0.2`
根据镜像名称查询镜像ID并删除
docker images -q --filter reference=ygsama/test-project*:*
docker image rm `docker images -q --filter reference=10.2.21.95:10001/treasury-brain*:*`