docker怎么用:实操流程与取舍

docker怎么用,完整流程是安装docker引擎、拉取镜像、创建并启动容器、挂载本地目录、配置端口映射,再通过日志与exec命令调试,最后清理无用镜像与容器;这套方案适合开发测试、轻量服务部署人群,不适合需要内核级定制、高并发数据库生产集群的场景,这类场景改用虚拟机或k8s会更稳妥。镜像就是打包好的程序环境,容器是镜像运行出来的独立实例,你不需要在本机安装程序依赖,容器自带全部运行库,环境隔离性较强,能减少本地环境冲突。操作时优先使用官方镜像仓库DockerHub内的镜像,第三方非认证镜像存在一定安全隐患,上线前建议做漏洞扫描。

docker安装与基础环境校验

Linux系统推荐使用官方源安装,CentOS系列执行yum安装脚本,Ubuntu使用apt添加docker源;Windows和Mac直接安装DockerDesktop,软件会内置轻量虚拟机来承载docker环境。安装完成后在终端输入docker-v,输出版本号代表安装成功;执行dockerrunhello-world,能正常输出提示文字,代表服务可以正常调度容器。docker服务默认开机自启,Linux环境下可以通过systemctl启停docker服务,Windows版DockerDesktop需要手动打开客户端程序,后台进程才会生效。

验证通过,就可以开始拉镜像。

docker镜像与容器操作

镜像操作核心命令,dockerpull镜像名:版本号用来下载镜像,不加版本号默认拉取latest最新标签,latest标签内容会随上游更新,固定版本部署时不要使用latest。dockerimages查看本地所有镜像,dockerrmi镜像ID删除镜像,镜像被容器引用时无法直接删除,必须先停掉并删除关联容器。容器操作中dockerrun是创建并启动容器的核心命令,参数-p宿主机端口:容器端口实现端口转发,-v本地路径:容器内路径做数据挂载,挂载目录可以持久化保存数据,容器删除后文件不会丢失。dockerps查看正在运行的容器,加-a参数查看全部容器,包括已经停止的实例。

操作命令示例作用说明
启动容器dockerrun-d-p8080:80nginx后台运行nginx,宿主机8080映射容器80端口
停止容器dockerstop容器ID优雅终止容器进程
进入容器dockerexec-it容器ID/bin/bash交互式进入容器终端调试
删除容器dockerrm容器ID删除已停止的容器,运行中容器需先停止

你可以用dockerexec进入容器内部查看文件、执行命令,这个方式适合临时排查问题,不要长期在容器内修改配置,容器重建后所有未挂载的数据都会丢失。修改程序或配置的正确方式是编写Dockerfile,基于基础镜像构建新镜像,Dockerfile把安装步骤、文件复制、环境变量固化,保证在任意机器构建出来的镜像环境保持一致。dockerbuild-t自定义镜像名:版本.执行构建,命令末尾的点代表Dockerfile所在的当前目录。

docker数据持久化与网络

docker提供三种数据持久化方案,绑定挂载、命名卷、匿名卷。绑定挂载直接映射宿主机文件夹,适合开发阶段代码热更新;命名卷由docker统一管理,存储在docker的数据目录,生产环境优先选用,读写性能和权限管控更稳定。匿名卷随容器删除同步清理,只适合临时缓存数据。docker默认使用bridge桥接网络,同一宿主机上的容器可以通过容器名互相访问,外部网络需要端口映射才能连通。多容器协同的项目,推荐使用docker-compose,用yaml文件一次性定义多个容器、网络和挂载配置,一条命令完成整套服务启停。

docker-compose.yml文件编写完成后,docker-composeup-d后台启动整套服务,docker-composedown停止并删除容器,网络资源也会同步清理,卷数据默认保留。

docker日志与资源限制

dockerlogs容器ID查看容器输出日志,添加-f参数持续实时输出日志,调试程序报错时高频使用。容器默认没有资源上限,当程序出现内存泄漏,会占用宿主机大量资源,影响主机其他服务。启动容器时增加--memory和--cpus参数,限制最大内存与CPU核数,例如--memory1g--cpus0.5,限制容器最多使用1G内存、0.5核CPU。容器资源限制属于基础隔离手段,无法规避宿主机内核层面的安全风险,公网暴露容器端口时,要搭配防火墙和访问鉴权。

docker系统占用的磁盘会持续上涨,镜像、停止的容器、无用网络和卷都会占用空间,执行dockersystemprune清理闲置资源,加上-a参数会删除未被使用的镜像,清理前确认镜像不再需要,避免误删。

该方法的适用边界是,宿主机内核版本不能过低,Linux内核建议高于3.10,老版本内核会出现功能缺失、容器不稳定;嵌入式精简系统,内核缺少cgroup模块,无法正常运行docker。

敬慕百科汇集百科知识与游戏文化,带你发现世界的每一个精彩角落。

想要了解更多关于docker 怎么用的文章欢迎访问:百科