docker命令速查

本文深入解析Docker的三大核心概念:Dockerfile、Docker Image及Docker Container,并详述了常用命令,如构建、运行、管理和故障排查,旨在帮助读者掌握Docker的高效使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker 在打包环境方面可以说的上是很nice的一个工具了,而且现在很多大公司在训练深度学习模型方面都容器化了,所以记住docker的常用命令还是挺必要了,好记性不如烂笔头,走起。

Docker简介

docker 的生命周期分为三个阶段,docker file,docker image,docker container(ps 我觉得这张图可以又叫集装箱是怎么练成的)如下:

docker file:是一个文本文件,其内包含了一条条的指令(instruction),每条指令构建一层,因此每一条指令的内容就是描述该层应该如何构建。

docker image(镜像):是一个特殊的文件系统,提供容器运行时所需的程序,库,资源,配置等文件,它中间不包含任何动态数据,其内容是不可变的。

docker container(容器) 于 images来说,关系就像是实例和类,镜像是静态的定义,容器是镜像运行时的实体,在容器这层我们可以做很多操作。

file篇

下图便是一个docker file的构成,我们可以把file想象成一个千层饼,每一个指令都会建立一层,所以在写指令的时候一定要写的简洁。
在这里插入图片描述
将file build成一个image

docker build --tag <name> . 				# 注意:. 代表的是当前目录下的docker file文件

image篇

一般image_name 由两部分组成,[REPOSITORY[:TAG]],如linux/ubuntu:v1

$ docker images											#查看镜像列表
$ docker pull [remote_image_name]						#拉取远程镜像
$ docker search [image_name]							#搜索镜像
$ docker save -o [save_name.tar] [image_name] 			#导出镜像
$ docker load < [export_image_file]						#载入镜像
$ docker import [export_image_file] [image_name]		#导入快照
$ docker rmi [image_name]								#删除镜像
$ docker history [image_name]							#查看镜像的历史命令

使用image创建container

docker run -dit -v [host dir]:[container dir] -p [host port]:[container port] --name [container_name] [image_id] /bin/bash	#这个一般就是docker run的复杂形态了,包括了数据卷挂载和端口映射,以后台模式运行

container篇

$ docker ps	(-a)									#查看容器列表,加上-a参数就显示所有状态下的容器,不加只显示运行中的容器
$ docker stop [container_name]						#停止容器
$ docker start [container_name] 	    			#开启容器
$ docker restart [container_name]					#重启容器
$ docker rm [container_name]						#删除容器
$ docker exec -it [container_name] /bin/bash 		#进入容器,退出后容器不会停止
$ docker attach [container_name]					#进入容器,退出后导致容器停止
$ docker export -o [save_name.tar] [container_name]	#导出容器快照,与save不同的是,快照只会保存容器当时的状态,所有元数据和历史记录会丢失
$ docker logs										#查看容器日志

将container保存为镜像

docker commit -m '注释' [container_id] [image_name]

error篇

问题:
docker server gave HTTP response to HTTPS client 

解决方法:
在/etc/docker下,创建daemon.json文件,写入:
{ "insecure-registries":["仓库地址"]}

问题:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

解决方法:
$ systemctl daemon-reload
$ sudo service docker restart
$ sudo service docker status (should see active (running))
$ sudo docker run hello-world

问题:容器乱码
(太坑爹了,显示不了中文啊!这个一定要注意了!如果原始是镜像里面的就不支持中文。。。那还得下个语言包)

解决方法:
$ LANG=en_US.UTF-8
$ source /etc/profile

参考资料

  • https://blog.youkuaiyun.com/qq_29303759/article/details/88135758
  • https://www.runoob.com/docker/docker-tutorial.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值