Docker命令

网友投稿 225 2022-10-19

Docker命令

镜像操作

Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像镜像仓库地址:​​pull[选项][Docker Registry地址[:端口号]/仓库名[:标签]

具体的选项可以通过 ​​docker pull --help​​ 命令看到:

Docker 镜像仓库地址:地址的格式一般是<域名/IP>[:端口号]

如下就是获取镜像示例:

docker pull ubuntu

查看镜像

docker images

docker image ls

​​docker image ls​​ 是列出已经下载下来的镜像, 列表包含了仓库名、标签、镜像ID、创建时间以及所占用的空间。

docker system df

​​docker system df​​ 查看镜像、容器、数据卷所占用的空间。

docker image ls -f dangling=true

​​docker image ls -f dangling=true​​​ 查看虚悬镜像,仓库名、标签均为 ​​​​​ 的镜像称为 ​​虚悬镜像(dangling image)​​ 此命令为显示虚悬镜像(也就是说仓库名称和标签全部是为空的)

创建一个虚悬镜像

touch Dockerfile

vim Dockerfile

编辑 Dockerfile 文件添加如下内容:

FROM ubuntu:latestCMD echo "test"

添加完毕之后按 ​​:wq​​ 保存并退出即可。

docker build .

然后虚悬镜像就已经创建好了,使用 docker image ls 查看一下镜像列表如下:

紧接着在用如上介绍的 ​​docker image ls -f dangling=true​​ 进行查看虚悬镜像列表如下:

删除所有的虚悬镜像

docker image prune

运行镜像

有了镜像后,我们就能够以这个镜像为基础启动并运行一个容器。

启动里面的 ​​bash​​ 并且进行交互式操作:

docker run -it --rm ubuntu:latest bash

​​-it​​​:这是两个参数,一个是​​-i​​​ 交互式操作,一个是​​-t​​ 终端​​--rm​​:这个参数是说容器退出后随之将其删除​​ubuntu:latest​​​:这是指用​​ubuntu:latest​​ 镜像为基础来启动容器​​bash​​:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash

可以通过 ​​exit​​ 退出容器:

删除本地镜像

docker image rm[选项]<镜像1>[<镜像2>...]

示例如下:

docker image rm hello-world:latest

docker image rmi -f hello-world:latest

rmi:代表删除本地镜像-f:代表强制删除

docker image rm $(docker image ls -q ubuntu)

如上命令的含义为删除所有仓库名为 ​​ubuntu​​ 的镜像,如果不跟名称,是删除所有镜像。

docker image rm $(docker image ls -q -f before=ubuntu:latest)

如上命令的含义为删除指定版本之前的镜像。

容器操作

容器是独立运行的一个或—组应用,以及它们的运行态环境虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用

启动容器

启动容器有两种方式:

基于镜像新建一个容器并启动一个是将在终止状态(stopped)的容器重新启动

因为 Docker 的容器是轻量级的,用户可以随时删除和新创建容器。示例如下:

docker run ubuntu /bin/echo 'hello world'

启动一个 ​​bash​​ 终端,允许用户进行交互。命令如下:

docker run -t -i ubuntu /bin/bash

​​-t​​:让 Docker 分配一个伪终端并绑定到容器的标准输入上​​-i​​​:则让容器的标准输入保持打开。当利用​​docker run​​ 来创建容器时,Docker 在后台运行的标准操作包括

​​docker run​​ 说明:

检查本地是否存在指定的镜像,不存在就从公有仓库下载利用镜像创建并启动一个容器分配一个文件系统,并在只读的镜像层外面挂载一层可读写层从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去从地址池配置一个 IP 地址给容器执行用户指定的应用程序执行完毕后容器被终止

后台启动

很多时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 ​​-d​​​ 参数来实现。例如 ​​docker run hello-world​​ 会把日志打印在控制台:

而 ​​docker run -d hello-world​​​ 只会打印 ​​容器id​​。如下所示:

docker run -d hello-world

如果需要查看一下启动信息可以使用 ​​docker logs 容器ID​​ 的方式进行查看如上图所示。

停止运行容器

终止一个运行中的容器

docker container stop 容器id

查看容器ID的方式,使用 ​​docker ps​​​ 或者 ​​docker ps -a​​ 这两者的区别可以参考 ​​docker ps和docker ps -a​​ 运行一个容器的方式前面已经介绍过了我们利用 hello-world 这个镜像运行一个容器如下。

运行了一个容器之后我们在开一个终端查看一下容器信息结果如下。

容器ID如下:

得到了该容器ID之后我们就可以来终止一个运行中的容器了如下:

docker container stop 79d6fd21f4d9

如上我们终止了一个 ​​ubuntu​​​ 的容器在第一个终端所展示的信息如下,执行了 ​​exit​​ 命令进行退出。

查看终止状态下的容器

docker container ls -a

重启终止状态下的容器

docker container start 容器id

docker container start 79d6fd21f4d9

重启容器

docker container restart 容器ID

docker container restart 79d6fd21f4d9

进入到容器

在使用 ​​-d​​​ 参数时,容器启动后会进入后台,某些时候需要进入容器进行操作,使用 ​​docker exec​​ 命令可以进入到运行中的容器当中。

docker exec -it 容器ID /bin/bash

想要进行如上操作的验证首先需要启动一个容器,如下,使用 ​​docker ps -a​​ 查看所有容器列表,启动一个容器ID如下。

接下来我们就可以使用如下介绍的命令进入到该启动的容器当中了如下。

docker exec -it c6d4236b6911 /bin/bash

导入导出容器

导出镜像

docker export 容器ID > it6666.zip

docker export 79d6fd21f4d9 > it6666.zip

导入镜像

cat it6666.zip | docker import - it6666/ubuntu:1.0

docker image ls

运行导入的镜像,除了之前介绍的从镜像运行到容器通过镜像的名称去运行的,其实还可以通过镜像的ID去运行一个容器如下所示:

docker run -it 845c6a20ad11 /bin/bash

删除容器

删除一个处于终止状态的容器

docker container rm [容器ID,容器名称]

如果要删除一个运行中的容器,可以添加 ​​-f​​ 参数。

docker container rm -f c6d4236b6911

清理所有处于终止状态的容器

docker container ls -a:命令可以查看所有已经创建的包括终止状态的容器docker container prune:清理所有处于终止状态的容器

从容器内拷贝文档到主机

就拿之前导入的 ​​it6666/ubuntu​​​ 来进行测试,首先以 ​​it6666/ubuntu​​ 运行一个容器出来如下。

进入到 ​​cd /usr/local/​​​ 创建一个 ​​touch test.txt​​。

接下来就是开始我们的拷贝了拷贝方式如下。

docker cp 容器id:容器内文件路径 主机路径

docker cp b53506594fa5:/usr/local/test.txt /root

查看一下主机 ​​/root​​ 目录下是否有该文件如下。

容器生命周期

create:创建容器,并没有启动kill:发出的是​​sigkill​​ 的信号,是无条件终止的信号stop:发出的是​​sigterm​​ 的信号,程序终结信号,可以在退出的时候,被阻塞,可以做一些清理工作

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:剑指Offer之Java算法习题精讲二叉树与N叉树
下一篇:Docker 容器日志的位置
相关文章

 发表评论

暂时没有评论,来抢沙发吧~