最近在使用docker部署springboot时候用到了挺多指令,为了以后温故而知新,故记录一下我目前工作中用到过的指令:
//通过dockerfile文件、应用程序jar包制作镜像,注意 最后一个字符 “ . ”
docker build -t checkorder:v1.0.0 .
dockerfile文件内容描述示例:
//基础镜像
FROM java:8
//作者
MAINTAINER maintainer="***<***@***.com>"
//声明运行环境
ENV ACTIVE_PROFILE=test
//springboot项目内嵌的tomcat,儿tomcat运行默认目录是tmp下的jar
VOLUME /tmp
//应用程序的jar依赖
ADD yuance-fcc-checkorder.jar yuance-fcc-checkorder.jar
//暴露出去的端口号
EXPOSE 8992
//执行脚本
ENTRYPOINT ["/bin/bash", "-c", "java -server -jar -Dfile.encoding=utf-8 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -Dspring.profiles.active=$ACTIVE_PROFILE /yuance-fcc-checkorder.jar"]
//查看所有镜像
docker images
//运行指定镜像
示例:
docker run -d -p 8992:8992 checkorder-fcc-server:v1 //docker默认ip
docker run -p 8992:8992 -d --net="host" checkorder:v1.0.0 //绑定宿主机ip
//删除指定镜像
docker rmi 【IMAGE ID】
//查看目前运行中的容器
docker ps
//所有的容器,包括未运行的
docker ps -a
//进入指定id的容器中(可以理解为一个独立的centos虚拟机)
docker exec -it 【CONTAINER ID】 /bin/bash
//删除指定容器
docker rm 【CONTAINER ID】
//查看docker磁盘占用
docker system df
//查看docker磁盘占用详细信息
docker system df -v
//自动清理docker磁盘空间
docker system prune
//查看所有docker容器查看自动分配的IP地址
docker inspect -f='{{.Name}} {{.NetworkSettings.IPAddress}} {{.HostConfig.PortBindings}}' $(docker ps -aq)
nacos 镜像启动示例:
docker run --name nacos -d -p 8848:8848 --privileged=true --restart=always -e JVM_XMS=512m -e JVM_XMX=2048m -e MODE=standalone -e PREFER_HOST_MODE=hostname -v /home/nacos/logs:/home/nacos/logs nacos/nacos-server:1.2.0
启动后台名为 etc-user.jar,用容器的8080端口监听宿主机8080端口,将容器外mydockerdata数据卷挂载在容器mydockerdata目录中,(:ro -只读的意思,即容器中不可修改卷的内容,只能宿主机修改同步到容器。jdk:1.8是我要运行的镜像)
docker run -itd -p 8080:8080 --name etc-user.jar -v /mydockerdata:/containerVolume:ro jdk:1.8
与Swarm一起使用Compose:
compose的安装治理:
//指定tag版本下载到指定目录下
curl -L "https://github.com/docker/compose/releases/tag/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
//设置可执行权限
services:
nginx:
image: nginx:1.18.0
environment:
- TZ=Asia/beijing
ports:
- 80:80
- 443:443
deploy:
mode: replicated
replicas: 2
mysql:
image: mysql:5.7.30
ports:
- 13306:3306
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--default-time-zone=+8:00
environment:
MYSQL_ROOT_PASSWORD: "root"
deploy:
mode: replicated
replicas: 2
redis:
image: redis:5.0.9
environment:
- TZ=Asia/beijing
ports:
- 6379:6379
deploy:
mode: replicated
replicas: 2
hot:
image: hot:1.0
ports:
- 8992:8992
deploy:
mode: replicated
replicas: 2