提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
- 结合平时运行出现的问题,什么情况下需要什么样的参数进行说明
一、容器启动
-
以java启动应用为例
-
容器基础镜像为openjdk:8-jdk-alpine
-
启动命令
docker run -d \ -p 8080:8080 \ --name=proxy \ registry.cn-shanghai.aliyuncs.com/xxx/proxy:1.0.0
以上为一般情况下启动没有什么问题,遇到特殊情况就需要添加一些参数
二、优化
服务器异常关机重启,如何让容器自动运行?
docker run -d \
-p 8080:8080 \
--restart=always \ #添加 “--restart=always” 即可
--name=proxy \
registry.cn-shanghai.aliyuncs.com/xxx/proxy:1.0.0
如何修改服务端口,以spring boot为例?
docker run -d \
-p 8080:8080 \
--restart=always \
--name=proxy \
-e "server.port=8080" \ #添加 “-e "key=value"” 即可
registry.cn-shanghai.aliyuncs.com/xxx/proxy:1.0.0
如何切换成线上服务配置文件?
docker run -d \
-p 8080:8080 \
--restart=always \
--name=proxy \
-e "spring.profiles.active=prod" \ #添加 “-e "key=value"” 即可
-e "server.port=8080" \
registry.cn-shanghai.aliyuncs.com/xxx/proxy:1.0.0
修改容器内配置文件的需求很频繁?
-----将容器内的配置文件挂载到宿主系统中,可以随意修改,修改后需要重启
docker run -d \
-p 8080:8080 \
--restart=always \
-v /docker/config/proxy:/config \ #将容器内的配置文件挂载到宿主系统中,可以随意修改,修改后需要重启
--name=proxy \
-e "spring.profiles.active=prod" \
-e "server.port=8080" \
registry.cn-shanghai.aliyuncs.com/xxx/proxy:1.0.0
docker容器不断产生日志文件,导致磁盘空间不足?
------添加 log-driver=“none” ,关闭容器日志
docker run -d \
-p 8080:8080 \
--restart=always \
--log-driver="none" \
-v /docker/config/proxy:/config \
--name=proxy \
-e "spring.profiles.active=prod" \
-e "server.port=8080" \
registry.cn-shanghai.aliyuncs.com/xxx/proxy:1.0.0
如何让容器内的端口全部映射到宿主系统进行访问?
-----去掉-p 8080:8080 ,添加 --net host
docker run -d \
--net host
--restart=always \
--log-driver="none" \
-v /docker/config/proxy:/config \
--name=proxy \
-e "spring.profiles.active=prod" \
-e "server.port=8080" \
registry.cn-shanghai.aliyuncs.com/xxx/proxy:1.0.0
如何限制容器的内存大小?
-----添加 -m 500M
docker run -d \
-m 500M \
--net host \
--restart=always \
--log-driver="none" \
-v /docker/config/proxy:/config \
--name=proxy \
-e "spring.profiles.active=prod" \
-e "server.port=8080" \
registry.cn-shanghai.aliyuncs.com/xxx/proxy:1.0.0
如何限制容器的cpu使用核数
-----首先使用top命令,按1,查看核数
-----使用–cpus=2 命令,表示随机使用cpu2个核心
docker run -d \
--cpus=2 \
-m 500M \
--net host \
--restart=always \
--log-driver="none" \
-v /docker/config/proxy:/config \
--name=proxy \
-e "spring.profiles.active=prod" \
-e "server.port=8080" \
registry.cn-shanghai.aliyuncs.com/xxx/proxy:1.0.0
如何指定并限制容器的cpu使用核数
-----首先使用top命令,按1,查看核数
-----使用–cpuset-cpus=“1,3” 命令,表示指定使用cpu2个核心,分别是cpu1和cpu3
docker run -d \
--cpuset-cpus="1,3" \
-m 500M \
--net host \
--restart=always \
--log-driver="none" \
-v /docker/config/proxy:/config \
--name=proxy \
-e "spring.profiles.active=prod" \
-e "server.port=8080" \
registry.cn-shanghai.aliyuncs.com/xxx/proxy:1.0.0
在alpine镜像容器中使用jdk的监控工具如jstack,jstat,jmap,无法使用?
-----添加–init
docker run -d \
-m 500M \
--net host \
--restart=always \
--log-driver="none" \
-v /docker/config/proxy:/config \
--name=proxy \
-e "spring.profiles.active=prod" \
-e "server.port=8080" \
--init \
registry.cn-shanghai.aliyuncs.com/xxx/proxy:1.0.0