Docker常用命令_帮助启动类命令_镜像命令_容器命令

发布于:2022-12-06 ⋅ 阅读:(792) ⋅ 点赞:(0)

Docker常用命令

Docker常用命令

1. 帮助启动类命令

1.1 启动docker:systemctl start docker

1.2 停止docker:systemctl stop docker

1.3 重启docker: systemctl restart docker

1.4 查看docker状态:systemctl status docker

1.5 开机启动:systemctl enable docker

配置开机启动后下次启动Linux系统时,会自动启动docker服务

1.6 查看docker概要信息: docker info

1.7 查看docker总体帮助文档: docker --help

1.8 查看docker命令帮助文档: docker 具体命令 --help

2. 镜像命令

2.1 列出本地主机上的镜像 :docker images 【OPTIONS】

列出本地主机上的镜像 docker images
在这里插入图片描述同一个仓库源可以有多个TAG版本,代表这个仓库源的不同个版本,我们使用REPOSITORY:TAG来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用Ubuntu,docker将默认使用Ubuntu:latest镜像 (最新的镜像)

在这里插入图片描述

2.2 列出远程仓库相关镜像 :docker search 【OPTIONS】镜像名字

列出远程仓库中redis相关镜像(默认是前25个)
docker search redis
在这里插入图片描述列出远程仓库中redis相关镜像的前5个
docker search --limit 5 redis
在这里插入图片描述

2.3 下载镜像 docker pull 镜像名字

docker pull 镜像名字【:TAG】(指定版本下载)

docker pull 镜像名字(不指定TAG就下载最新的版本的)

2.4 查看镜像/容器/数据卷所占用的空间:docker system df

在这里插入图片描述

2.5 强制删除镜像 docker rmi -f 镜像ID

  1. 删除单个 docker rmi -f 镜像ID
    在这里插入图片描述

  2. 删除多个 docker rmi -f 镜像名1:TAG 镜像2:TAG

  3. 删除全部 docker rmi -f $(docker images -qa)

2.6 谈谈docker虚悬镜像是什么?

仓库名,标签都是< none>的镜像,俗称虚悬镜像dangling image
在这里插入图片描述
这种没什么用在docker构建的会出现一些问题

3. 容器命令

有镜像才能创建容器,这是根本前提(下载一个Ubuntu镜像学习)

在这里插入图片描述下载Ubuntu镜像:docker pull ubuntu
在这里插入图片描述

3.1 新建并启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

启动交互式容器(前台命令行)

OPTIONS说明(常用):有些是一个减号,有些是两个减号

--name="容器新名字"      为容器指定一个名称;
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);

-i: 以交互模式运行容器,通常与-t同时使用;
-t: 为容器重新分配一个伪输入终端,通常与-i同时使用;也即启动交互式容器(前台有伪终端,等待交互);
-P: 随机端口映射,大写P
-p: 指定端口映射,小写p
  1. 使用ubuntu:latest以交互模式启动一个容器,在容器内执行/bin/bash命令: docker run -it ubuntu /bin/bash
    在这里插入图片描述

  2. 使用ubuntu:latest以交互模式启动一个容器,并给容器指定名字,在容器内执行/bin/bash命令: docker run -it --name=myu1 ubuntu bash
    在这里插入图片描述

3.2 列出当前所有正在运行的容器docker ps [OPTIONS]

OPTIONS说明(常用):
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n: 显示最近n个创建的容器。
-q: 静默模式,只显示容器编号。

docker ps
在这里插入图片描述
docker ps -a
在这里插入图片描述

3.3 退出容器

  1. exit : run进去容器,exit退出,容器停止
  2. Ctrl + p + q : run进去容器,Ctrl+p+q退出,容器不停止

3.4 启动已停止运行的容器:docker start 容器ID或者容器名字

docker start c269d305b74d在这里插入图片描述

3.5 重启容器: docker restart 容器ID或者容器名字

docker restart c269d305b74d
在这里插入图片描述

3.6 停止容器: docker stop 容器ID或者容器名字

docker stop c269d305b74d
在这里插入图片描述

3.7 强制停止容器: docker kill 容器ID或者容器名字

3.8 删除已停止的容器: docker rm 容器ID

docker rm c269d305b74d
在这里插入图片描述

3.9 强制删除容器: docker rm -f 容器ID

docker rm -f 3b9bfe256607
在这里插入图片描述

一次删除全部容器实例
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm

3.10 重要

有镜像才能创建容器,这是根本前提(下载一个redis镜像学习)
docker pull redis 默认下载最新版的
在这里插入图片描述

3.10.1 启动守护式容器(后台服务器)

在大部分的场景下,我们希望docker的服务是在后台运行的,我们可以过-d指定容器的后台运行模式
docker run -d 容器名 后台服务器
前边我们学习了docker run -it 容器名:交互模式

使用镜像ubuntu:latest 以后台模式启动一个容器
docker run -d ubuntu
在这里插入图片描述

很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程容器运行的命令,如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。

这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的service即可。例如service nginx start 但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,这样的容器后台启动后,会立即自杀因为他觉得他没事可做了.
所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行,常见就是命令行模式,表示我还有交互操作,别中断,o(n_n)O哈哈~

下面我们用redis前后台启动演示:
1. 前台交互式启动 -it
docker run -it redis
在这里插入图片描述在大部分的场景下,我们希望docker的服务是在后台运行的,我们可以过-d指定容器的后台运行模式。

2. 后台守护式启动 -d

docker run -d redis
在这里插入图片描述

3.10.2 查看容器日志 docker logs 容器ID

docker logs 84358a85e4b9
在这里插入图片描述

3.10.3 查看容器内运行的进程docker top 容器ID

docker top 84358a85e4b9
在这里插入图片描述

3.10.4 查看容器内部细节 docker inspect 容器ID

docker inspect 84358a85e4b9
在这里插入图片描述

3.10.5 进入正在运行的容器并以命令行交互: docker exec -it 容器ID bashShell

docker exec -it 84358a85e4b9 /bin/bash
在这里插入图片描述

重新进入 docker attach 容器ID (不推荐使用,他的exec退出会造成容器的停止)

两者的区别:
attach直接进入容器启动命令的终端,不会启动新的进程用exit退出,会导致容器的停止。
exec是在容器中打开新的终端,并且可以启动新的进程用exit退出,不会导致容器的停止。

docker exec -it 84358a85e4b9 bash
在这里插入图片描述
docker exec -it 84358a85e4b9 redis-cli
在这里插入图片描述一般用-d后台启动的程序,再用exec进入对应容器实例

3.10.5 从容器内拷贝文件到主机上docker cp 容器ID:容器内路径 目的主机路径

docker cp 4cb14f41e75e:/tmp/a.txt /mnt
在这里插入图片描述

3.10.6 导入导出容器

docker export 容器ID > 文件名.tar

cat 文件名.tar | docker import -镜像用户/镜像名:镜像版本号

export 导出容器的内容流作为一个tar归档文件[对应import命令]
import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]

  1. 导出 docker export 4cb14f41e75e >ubuntu.tar
    在这里插入图片描述

  2. 导入cat ubuntu.tar | docker import - guoguo/ubuntu:3.7
    在这里插入图片描述

4. 悬空镜像

仓库名、标签均为< none>的镜像被称为虚悬镜像,一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的。

出现虚悬镜像的原因一般是在docker pull **:latest 时产生。当新版本发布后重新pull,旧的镜像名会被新镜像所占用,旧镜像的名字会变成

4.1 查看所有镜像,包括中间层镜像: docker images -a

当我们使用 docker images -a 命令时,出现的 < none>:< none>中间层镜像(对磁盘空间没有影响);
在这里插入图片描述

4.2 查询所有虚悬镜像(未标记的镜像)docker images -f dangling=true

在这里插入图片描述
docker iamges ,列出的 : 即为 dangling image(悬空镜像 —— bad < none>:< none>),因为它并没有作为中间映像,已被作为 Docker iamge 的一部分被列出,它会占用磁盘资源!需要被我们删除!

4.3 删除所有dangling image

4.3.1 方法一:使用 docker image prune

在这里插入图片描述
在这里插入图片描述

4.3.2 方法二:使用 docker rmi 结合 命令:docker rmi $(docker images -f dangling=true -q)

如果你删除了 < none>:< none> image,会提示你释放了多少空间:

Total reclaimed space: 0B # 我这边没有删除,所以为0B。

本文含有隐藏内容,请 开通VIP 后查看