docker中基础命令和基本操作以及基本概念

运行镜像


docker run -it --rm  ubuntu:16.04 bash
-it  :这是两个参数,一个是 -i :交互式操作,一个是 -t 终端。我们这里打算进入bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
--rm :这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动docker rm。我们这里只是随便执行个命令,看看结果,
不需要排障和保留结果,因此使用--rm可以避免浪费空间。
ubuntu:16.04 :这是指用ubuntu:16.04镜像为基础来启动容器。
bash:放在镜像名后的是命令,这里我们希望有个交互式Shell,因此用的是bash 。


要想列出已经下载下来的镜像,可以使用docker image ls 命令

列表包含了仓库名 、标签 、镜像ID 、创建时间以及所占用的空间 。
查看镜像、容器、数据卷所占用的空间。
docker system df

 

虚悬镜像


上面的镜像列表中,还可以看到一个特殊的镜像,这个镜像既没有仓库名,也没有标签,均
为         <none>     。:
<none>     <none>     00285df0df87 5    days ago 342    MB
这个镜像原本是有镜像名和标签的,原来为mongo:3.2,随着官方镜像维护,发布了新版本后,重新docker pull mongo:3.2 时, mongo:3.2 这个镜像名被转移到了新下载的镜像身
上,而旧的镜像上的这个名称则被取消,从而成为了 <none>  。除了 docker pull 可能导致这种情况, docker build 也同样可以导致这种现象。由于新旧镜像同名,旧镜像名称被取
消,从而出现仓库名、标签均为 <none> 的镜像。这类无标签镜像也被称为    虚悬镜像(dangling image),可以用下面的命令专门显示这类镜像:

$docker image ls -f dangling=true

一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除。
 docker image prune亦或docker rmi $(docker images -q -f dangling=true)

中间镜像

docker images -a 显示包括中间层镜像和顶级镜像

这样会看到很多无标签的镜像,与虚悬镜像不同,这些镜像都是其它镜像所依赖的镜像。这些无标签镜像不应该删除,否则会导致上层镜像因为依赖丢失而出错。实际上,这些镜像也没必要删除,因为相同的层只会存一遍,而这些镜像是别的镜像的依赖,因此并不会因为它们被列出来而多存了一份。只要删除那些依赖它们的镜像后,这些依赖的中间层镜像也会被连带删除。

根据仓库名列出镜像


docker image ls ubuntu   列出了Ubuntu仓库下的所有镜像
列出特定的某个镜像,也就是说指定仓库名和标签
docker image ls ubuntu:16.04
docker image ls 还支持强大的过滤器参数 --filter  ,或者简写 -f 。
docker image ls --format "{{.ID}}:{{.Repository}}"


删除镜像


我们需要删除所有仓库名为redis的镜像:
docker image rm $(docker image ls -q redis)
或者删除所有在 mongo:3.2 之前的镜像:
docker image rm $(docker image ls -q -f before=mongo:3.2)

Dockerfile定制镜像


Dockerfile是一个文本文件  其中包含了一条条指令  每一个指令构建一层  因此每一个指令就是描述该层应当如何
构建  比如   构建nginx  Dockerfile内容如下


FROM nginx


RUN echo '<h1>Hello,Docker!</h1>' > /usr/share/nginx/html/index.html


FROM指定基础镜像


定制镜像一定是以一个镜像为基础 在基础镜像上定制   FROM就是指定基础镜像 因此一个Dockerfile中FROM时必备
指令 并且必须时第一条指令   (可以在https://hub.docker.com或者https://store.docker.com/images/centos
上查找相关镜像和版本)

RUN执行名称


1格式 shell格式 RUN <命令> 就像直接在命令行中输入命令一样 
2格式 exec格式 RUN ["可执行文件","参数1","参数2"] 就好像函数调用 

注意  如果使用RUN 每一个命令执行完都会创建一层镜像  RUN也不列外 


开始构建


docker build [选项] <上下文路径/url/>     上下文就是Dockerfile文件和所有准备的文件所在的目录
docker build -t asd .    其中-t为当前构建个的镜像起名称  .表示当前目录为上下文

Dockerfile中的相关指令详解

COPY 赋值命令


和RUN一样存在两种格式  一种类似命令行一种类似函数调用  COPY 指令将从构建上下文目录中 <源路径>的文件/
目录复制到新的一层的镜像内的 <目标路径>位置
 <源路径> 可以是多个,甚至可以是通配符,其通配符规则要满足 Go 的 filepath.Match 规则,如:
COPY hom* /mydir/
COPY hom?.txt /mydir/
 <目标路径> 可以是容器内的绝对路径,也可以是相对于工作目录的相对路径(工作目录可以用WORKDIR指令来指定)。
目标路径不需要事先创建,如果目录不存在会在复制文件前先行创建缺失目录。
此外,还需要注意一点,使用COPY指令,源文件的各种元数据都会保留。比如读、写、执行权限、文件变更时间等。
这个特性对于镜像定制很有用。特别是构建相关文件都在使用Git进行管理的时候。


显示镜像或者容器的详细信息


docker inspect -f='{{.Id}}' myTomcat
其中-f --format 显示数据 {{.Id}}其中.表示上下文(整个元数据)
docker inspect -f='{{.}}' myTomcat 显示整个元数据信息  还可以使用该命令过滤一些容器或者镜像  可以百度一下
 

显示容器的资源使用情况


docker stats 显示所有运行的容器对于宿主机器资源的使用情况

保存镜像和导入镜像


导出镜像

docker save alpine | gzip > alpine-latest.tar.gz
docker save 镜像名 | gzip > 打包后的文件名

导入镜像

docker load -i alpine-latest.tar.gz
docker load -i 打包后文件名  
参数说明如下
-i, –input string Read from tar archive file, instead of STDIN 
从tar归档文件读取镜像,而不是标准输入流
-q, –quiet Suppress the load output 
禁止读入输出


我们结合这两个命令以及ssh甚至pv的话,利用Linux强大的管道,我们可以写一个命令完成从一个机器将镜像迁移到另一个机器,并且带进度条的功能:
docker save <镜像名> | bzip2 | pv | ssh <用户名>@<主机名> 'cat | docker load'


容器导入导出

导出

docker export 7691a814370e > ubuntu.tar
docker export containerId > 导出后文件名

导入快照

cat ubuntu.tar | docker import - test/ubuntu:v1.0
cat 要导入的文件 | docker import - REPOSITORY仓库名称:标签
通过指定URL或者某个目录来导入,例如
$docker    import http://example.com/exampleimage.tgz example/imagerepo

清楚所有未运行的容器
docker container prune

 

参考 docker-从入门到实践

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值