Docker命令【镜像、容器】【创建、重构】记录
·
1、应用服务docker部署
提示:这里简述项目相关背景:
# 根据docker-compose.yml编排文件启动所有服务(后面若添加服务名称将启动指定服务,可指定多个) -d:后台运行
docker compose up -d
# 根据docker-compose.yml编排文件停止所有服务容器(后面若添加服务名称将停止指定服务,可指定多个)
docker compose stop
# 根据docker-compose.yml编排文件停止并删除所有服务容器(后面若添加服务名称将停止并删除指定服务,可指定多个)
docker compose down
2、应用服务docker镜像构建
在 Docker 中,重新构建镜像可以使用docker build命令。
以下是一个基本的用法示例:
假设你有一个名为Dockerfile的文件位于当前目录下,要重新构建镜像,可以在命令行中执行以下命令:
标签为默认版本 latest 最后点为当前目录
docker build -t <镜像名称>:<标签> .
指定镜像版本 v1.0
docker build -t myapp:v1.0 .
3、重启应用服务、docker容器构建
# 方式一: 新的jar包替换后,可以直接重启容器生效,因为最新的jar被挂载在容器内(但镜像不会更新)
docker restart 容器名 # docker 重启容器
docker compose restart 服务名 # docker compose 重启服务容器 不带服务名称时,重启所有服务容器
# 方式二: 新的jar包替换后,重新制作镜像并且以最新的镜像重启容器
## 重新制作yy-stream服务镜像(不添加服务名称时重新制作所有服务镜像);--no-cache:不使用缓存,已有该镜像重新制作;
docker compose build --no-cache yy-stream
## 使用 -d 将以守护进程模式(后台)启动yy-stream服务(不添加服务名称时重启所有服务);`--force-recreate` 强制重新创建容器;`--no-deps` 表示不启动服务依赖的其他服务,该参数可以不带,依赖服务已启动的情况下不会重启
docker compose up -d --force-recreate --no-deps yy-stream
## 重新制作镜像并且以新镜像重启容器后可以删掉老的镜像
docker image prune
3、Docker常用命令
docker search java # 搜索java镜像,查看更多 docker search --help
docker pull java # 获取java镜像,查看更多 docker pull --help
docker run mysql # 运行一个docker镜像,产生一个容器实例(也可以通过镜像id前三位运行)更多查看 docker run--help
docker images # 查看docker镜像
docker ps #列出正在运行的容器(如果创建容器中没有进程正在运行,容器就会立即停止)
docker ps -a # 列出所有运行过的容器记录
docker save centos > /opt/centos.tar.gz # 导出docker镜像至本地
docker load < /opt/centos.tar.gz #导入本地镜像到docker镜像库
docker stop `docker ps -aq` # 停止所有正在运行的容器
docker rm `docker ps -aq` # 一次性删除所有容器记录
docker rmi `docker images -aq` # 一次性删除所有本地的镜像记录
docker restart 容器名称 #重启容器
docker logs -f 容器名称 --since 1h #实时查看容器从最近一小时开始的日志,单位可以是分钟m,或者秒s
docker exec -it 容器名称 bash #进入容器内部
4、Docker文件创建基础镜像示例
若需要重新制作镜像添加–no-cache参数:
docker build -t java:17 . --no-cache
docker build -t java:17 .
FROM centos:7
ENV TZ=Asia/Shanghai
ENV JAVA_HOME=/usr/java/jdk-17.0.10
ENV PATH=$PATH:$JAVA_HOME/bin
ENV LANG zh_CN.UTF8
ENV WAIT_FILE=wait-for.sh
ENV WORKDIR=/usr/workdir
ENV TIMEOUT=15
ENV SLEEP_SECONDS=1
ENV JAVA_OPTS="java -jar -Xms128m -Xmx800m -Djava.security.egd:file:/dev/./urandom"
WORKDIR $WORKDIR
COPY ./$WAIT_FILE $WORKDIR
COPY ./jdk-17.0.10 $JAVA_HOME
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \
&& yum -y update && yum -y install net-tools nc fontconfig kde-l10n-Chinese glibc-common system-config-language && yum clean all \
&& localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 && localedef -c -f GBK -i zh_CN zh_CN.GBK && localedef -c -f GB2312 -i zh_CN zh_CN.GB2312 \
&& echo 'LANG=zh_CN.UTF-8' > /etc/locale.conf && source /etc/locale.conf && echo 'export LC_ALL=zh_CN.utf8' >> /etc/profile && source /etc/profile \
&& chmod +x /usr/wait-for.sh
CMD ./$WAIT_FILE $WAIT_HOST -t $TIMEOUT -- sleep $SLEEP_SECONDS && $JAVA_OPTS $JAR_FILE
5、yml文件创建容器示例
version: '3.8'
services:
nacos:
image: java:17
hostname: xx-nacos
container_name: xx.nacos
restart: always
networks: [net]
ports: ["8848:8848","9848:9848"]
extra_hosts:
# 指向宿主机: 在linux:'xx-mysql:host-gateway' | Windows:'xx-mysql:host.docker.internal'
- "xx-mysql:192.168.10.10"
environment:
# 定义环境变量,替换基础镜像内默认变量,用来替换启动命令
- JAR_FILE=xx_nacos.jar #jar名称
- WAIT_HOST=127.0.0.1:3306 #数据库地址
# 启动容器时的命令,会替换掉基础镜像的启动命令。
# entrypoint: sh -c "./$WAIT_FILE $WAIT_HOST -t $TIMEOUT -- sleep $SLEEP_SECONDS && $JAVA_OPTS $JAR_FILE"
volumes:
- ./xx-nacos.jar:/xxx/xx-nacos.jar
- ./logs/nacos:/nacos
- ./logs/nacos:/logs
networks:
frmwk:
name: net
driver: bridge
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)