news 2026/4/27 17:59:25

docker

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
docker

一.概念

Docker 是一个开源的应用容器引擎,可以帮助我们减轻服务部署的压力,他有三个概念:镜像、仓库、容器实例,好处是我们可以将我们的 Java 程序放到一个 Tomcat 实例中,再把该镜像放到远程仓库,任何环境想部署该 Java 应用,只需要从远程仓库下载该镜像并运行成为一个容器实例,而实例中运行着我们的 Java 程序,相当于我们构建一次镜像之后,随处运行;
容器内的应用进程直接运行于宿主的内核;
每个容器之间互相隔离,且有自己的文件系统 ,容器之间进程不会相互影响;
镜像是包含某个或多个运行服务的独立 Linux 运行环境;
镜像由一层一层的文件系统组成,这种层级的文件系统称为UnionFS;
分层的好处是可以共享资源,方便复用;
Docker镜像层都是只读的,容器层是可写的。当容器启动时,一个新的可写层被加载到镜像的顶部;

二.命令

帮助启动类

# 启动docker systemctl start docker # 停止docker systemctl stop docker # 重启docker systemctl restart docker # 查看docker状态 systemctl status docker # 开机自启动 systemctl enable docker # 查看docker概要信息 docker info # 查看镜像/容器/数据卷所占的空间 docker system df # 查看docker总体帮助文档 docker --help # 查看docker命令帮助文档 docker 具体命令 --help

镜像类

# 列出本地主机上的镜像 docker images # 从仓库中搜索镜像(https://hub.docker.com) docker search 镜像名 # 下载镜像到本地 docker pull 镜像名:版本号 # 删除镜像(删除全部镜像: docker rmi -f $(docker images -qa)) docker rmi -f 镜像ID

容器类

# 创建容器实例 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] docker run -it --name zs --privileged=true -v 本机路径:容器内路径 -p 6379:6379 redis /bin/bash --name="容器新名字" 为容器指定一个名称; -d: 启动后台守护式容器(后台运行,必须有一个前台进程,否则会自动退出,解决:-it , Ctrl p q) -it: 启动前台交互式容器 -p: 指定端口映射,小写p -P: 随机端口映射,大写P -v:挂载数据卷(保证容器内数据的持久化,容器删除时,数据仍在) # 退出容器终端并停止容器 exit # 退出容器终端但不停止容器 Ctrl p q # 列出当前正在运行的容器实例(所有: -a) docker ps # 启动已停止运行的容器 docker start 容器ID # 重启容器 docker restart 容器ID # 停止容器 docker stop 容器ID # 强制停止容器 docker kill 容器ID # 删除容器 docker rm -f 容器ID # 查看容器日志 docker logs 容器ID # 查看容器内运行的进程 docker top 容器ID # 查看容器内部细节 docker inspect 容器ID # 进入正在运行的容器并以命令行交互(退出: exit) docker exec -it 容器ID /bin/bash # 从容器内拷贝文件到主机上 docker cp 容器ID:容器内路径 目的主机路径 # 导出容器为tar文件 docker export 容器ID > 文件名.tar # 根据tar文件导入为镜像 cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号 # 提交容器为一个新的镜像 docker commit -m="提交的描述信息" -a="作者" 容器ID 目标镜像名:[标签名]

三.Dockerfile

用来构建Docker镜像的文本文件,由一条条构建镜像所需的指令和参数构成的脚本;
每条指令都会创建一个新的镜像层并对镜像进行提交;
Docker执行Dockerfile的大致流程:
(1)docker从基础镜像运行一个容器
(2)执行一条指令并对容器作出修改
(3)执行类似docker commit的操作提交一个新的镜像层
(4)docker再基于刚提交的镜像运行一个新容器
(5)执行dockerfile中的下一条指令直到所有指令都执行完成
编写 Dockerfile 文件 ===> docker build 命令构建镜像 ===> docker run 依镜像运行容器实例;

Dockerfile文件内容:

# 基础镜像FROM centos# 镜像作者信息MAINTAINER bao<zzyybs@126.com># 设置环境变量ENV MYPATH /usr/local# 创建容器后,终端默认登陆的进来工作目录WORKDIR$MYPATH# 容器构建时需要运行的命令(RUN是在 docker build时运行)# 安装java8及lib库: RUN yum -y install glibc.i686RUNmkdir/usr/local/java# 将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包ADD jdk-8u361-linux-x64.tar.gz /usr/local/java/#配置java环境变量ENV JAVA_HOME /usr/local/java/jdk1.8.0_361 ENV JRE_HOME$JAVA_HOME/jre ENV CLASSPATH$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATHENVPATH$JAVA_HOME/bin:$PATH# 当前容器对外暴露出的端口EXPOSE22122# 指定容器启动后的要干的事情(Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换)CMDecho$MYPATHCMDecho"success--------------ok"CMD /bin/bash

构建命令:docker build -t 新镜像名字:TAG .
docker build -t centosjava8:1.5 .

通过Dockerfile启动 Java 服务

Dockerfile文件:

FROM java:8 MAINTAINER bao# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmpVOLUME /tmp# 将jar包添加到容器中并更名为zzyy_docker.jarADD demo-0.0.1-SNAPSHOT.jar /usr/local ENTRYPOINT["java","-jar","/usr/local/demo-0.0.1-SNAPSHOT.jar"]#暴露9876端口作为微服务EXPOSE9876

构建镜像:docker build -t demo .
运行镜像:docker run -d -p:9999:9876 demo
访问微服务:124.70.13.135:9999

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 2:54:07

ComfyUI-Manager跨版本迁移实战指南:5步解决配置兼容难题

ComfyUI-Manager跨版本迁移实战指南&#xff1a;5步解决配置兼容难题 【免费下载链接】ComfyUI-Manager 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager 当你兴奋地升级ComfyUI-Manager后&#xff0c;却发现节点大面积失效、工作流无法加载、配置数据丢…

作者头像 李华
网站建设 2026/4/17 8:50:39

Python多尺度地理加权回归(MGWR)实战指南:5步掌握空间数据分析

Python多尺度地理加权回归(MGWR)实战指南&#xff1a;5步掌握空间数据分析 【免费下载链接】mgwr 项目地址: https://gitcode.com/gh_mirrors/mg/mgwr 多尺度地理加权回归(MGWR)是Python中处理空间异质性的革命性工具&#xff0c;通过引入多尺度带宽选择机制&#xff0…

作者头像 李华
网站建设 2026/4/23 7:13:23

如何快速掌握多视频同步播放:GridPlayer终极操作指南

如何快速掌握多视频同步播放&#xff1a;GridPlayer终极操作指南 【免费下载链接】gridplayer Play videos side-by-side 项目地址: https://gitcode.com/gh_mirrors/gr/gridplayer 在视频剪辑、教育培训和监控管理等专业场景中&#xff0c;同步播放多个视频源是提升工作…

作者头像 李华
网站建设 2026/4/16 21:35:33

iStore插件中心终极指南:OpenWRT新手轻松安装与管理插件

iStore是OpenWRT系统的标准软件中心&#xff0c;采用纯脚本实现&#xff0c;仅依赖OpenWRT标准组件&#xff0c;为新手用户提供像手机应用商店一样简单直观的插件安装体验。无论是刚接触OpenWRT的新手还是资深用户&#xff0c;iStore都能帮你快速找到并安装所需插件&#xff0c…

作者头像 李华
网站建设 2026/4/21 12:37:43

小米运动智能步数生成与多平台同步方案

小米运动智能步数生成与多平台同步方案 【免费下载链接】mimotion 小米运动刷步数&#xff08;微信支付宝&#xff09;支持邮箱登录 项目地址: https://gitcode.com/gh_mirrors/mimo/mimotion 还在为每天的运动步数不达标而烦恼&#xff1f;想让小米运动数据自动同步到微…

作者头像 李华
网站建设 2026/4/24 21:40:38

自愈测试环境的AI实现

随着敏捷开发和DevOps的普及&#xff0c;测试环境需满足高频变更与快速反馈的需求。然而&#xff0c;手动维护环境成本高昂&#xff0c;且故障响应延迟可能拖累整个交付流程。自愈测试环境通过AI实时监控、诊断和修复问题&#xff0c;实现“零接触”运维&#xff0c;成为测试效…

作者头像 李华