Docker常用命令总结

news/2024/11/7 15:54:41/

目录

一、帮助启动类命令

(1)启动docker

(2)停止docker

(3)重启docker

(4)查看docker

(5)设置开机自启

(6)查看docker概要信息

(7)查看docker总体帮助文档

(8)查看docker命令帮助文档

二、镜像命令

(1)docker images

(2)docker search

(3)docker pull

(4)docker system df

(5)docker rmi

三、容器命令

(1)docker run

(2)docker ps

(3)退出容器

① exit

② ctrl+p+q

(4)进入正在运行的容器并以命令行交互

① docker exec -it 容器ID/容器名称 bashShell

② docker attach 容器ID

(5)启动已停止运行的容器

(6)重启容器

(7)停止容器

(8)强制停止容器

(9)删除已停止的容器

(10)查看容器日志

(11)查看容器内运行的进程

(12)查看容器内部细节

(13)从容器内拷贝文件到主机上

(14)导入和导出容器


一、帮助启动类命令

(1)启动docker

systemctl start docker

(2)停止docker

systemctl stop docker

(3)重启docker

systemctl restart docker

(4)查看docker

systemctl status docker

(5)设置开机自启

systemctl enable docker

(6)查看docker概要信息

docker info

(7)查看docker总体帮助文档

docker --help

(8)查看docker命令帮助文档

docker 命令 --helpexample:
docker run --help

二、镜像命令

(1)docker images

列出本地主机上有的镜像

docker images [OPTIONS]常用参数:
-a :列出所有的镜像 (含历史映像层)
-q :只显示镜像IDexample:
docker images -a
docker images -q
docker images -aq
docker images redis   #查找镜像名为redis的镜像
docker images redis:6.0.8   #查找镜像名:版本号(REPOSITORY:TAG)对应的镜像

 

字段解析:

  1. REPOSITORY:表示镜像的仓库源
  2. TAG:镜像的标签版本号
  3. IMAGE ID:镜像ID
  4. CREATED:镜像创建时间
  5. SIZE:镜像大小 

同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像

(2)docker search

去配置的镜像网站库找寻找某个镜像,比如:Docker

docker search [OPTIONS] 镜像名字常用参数:
--limit nu   #只输出查到的前nu条记录example:
docker search redis
docker search --limit 3 redis
docker search redis --limit 3    # 放在镜像名称前面后面均可

 

字段解析:

  1. NAME:镜像名称
  2. DISCRIPTION:镜像说明
  3. STARTS:点赞数
  4. OFFICAL:是否是官方认可的
  5. AUTOMATED:是否自动构建 

(3)docker pull

从远程库拉取镜像

docker pull 镜像名字[:TAG]example:
docker pull redis:6.0.8
docker pull ubuntu  # 没有指定版本即拉取最新版 即默认为 ubuntu:latest

(4)docker system df

查看镜像/容器/数据卷所占的空间

docker system df

(5)docker rmi

删除本地有的镜像

#删除单个
docker rmi 镜像ID  #删除镜像,如果此时镜像上面有容器正在运行,会报错无法删除
docker rmi  -f 镜像ID   #强制(forced)删除镜像#删除多个
docker rmi -f 镜像名1:TAG 镜像名2:TAG #删除全部(慎用)
docker rmi -f $(docker images -qa)  
#首先docker images -qa会列举本地所有的镜像的ID,然后作为一个集合送入rmi一个个删除

(6)docker commit

 Docker中的镜像分层,支持通过扩展现有镜像,创建新的镜像。我们进行扩展后提交到本地成为一个新的镜像

docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]example:docker pull ubuntu  # 从镜像仓库拉取基础ubuntu镜像(支持扩展),原始的默认Ubuntu镜像是不带着vim命令的#外网联通的情况下,在容器内安装vim命令
apt-get update
apt-get -y install vim#安装完成后,commit我们自己的新镜像
docker commit -m="ubuntu-add-vim" -a="zjy" a4b1b1cc54f0 atguigu/myubuntu:1.3

提交结果,可以明显的看到SIZE变大了

 

 

三、容器命令

(1)docker run

新建启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]常用参数:
--name=NAME   #为容器指定名字为NAME,不使用的话系统自动为容器命名
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
也即启动交互式容器(前台有伪终端,等待交互,一般连用,即-it);-P: 随机端口映射,大写P
-p: 指定端口映射,小写pexample:以ubuntu为例,启动后要交互先声明交互模式,其次交互得需要一个终端,因此参数为-it
docker run -it ubuntu /bin/bash指定名称
docker run -it --name=myubuntu ubuntu /bin/bash

启动守护式容器

在大部分的场景下,我们希望 docker 的服务是在后台运行的,
我们可以过 -d 指定容器的后台运行模式。

docker run -d 容器名example:
docker run -d redis:6.0.8
docker run -d ubuntu

注意

上面的docker run -d ubuntu 执行后,使用docker ps -a进行查看,会发现容器已经退出

很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.

这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的service即可。例如service nginx start。但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用, 这样的容器后台启动后,会立即自杀,因为它觉得他没事可做了.

最佳的解决方案是,将你要运行的程序以前台进程的形式运行,常见就是命令行模式,类似centos、ubuntu

(2)docker ps

docker ps [OPTIONS]常用参数:
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n nu:显示最近nu个创建的容器。
-q :静默模式,只显示容器编号。example:
docker ps -aq
docker ps -n 3
docker ps -l

(3)退出容器

① exit

run进去容器,exit退出,容器停止

② ctrl+p+q

run进去容器,ctrl+p+q退出,容器不停止

(4)进入正在运行的容器并以命令行交互

① docker exec -it 容器ID/容器名称 bashShell

② docker attach 容器ID

example:#容器ID
docker exec -it c32f612cc218 /bin/bash
docker attach c32f612cc218#容器名称
docker exec -it wizardly_booth /bin/bash
docker attach wizardly_booth

区别 

exec 是在容器中打开新的终端,并且可以启动新的进程。用exit退出,不会导致容器的停止。

attach 直接进入容器启动命令的终端,不会启动新的进程。用exit退出,会导致容器的停止。

推荐大家使用 docker exec 命令,因为退出容器终端,不会导致容器的停止。

(5)启动已停止运行的容器

docker start 容器ID或者容器名

(6)重启容器

docker restart 容器ID或者容器名

(7)停止容器

docker stop 容器ID或者容器名

(8)强制停止容器

docker kill 容器ID或容器名

(9)删除已停止的容器

#删除一个
docker rm 容器ID  
docker rm -f 容器ID  #强制删除#删除多个
docker rm -f $(docker ps -a -q)
或
docker ps -a -q | xargs docker rm

(10)查看容器日志

docker logs 容器ID

(11)查看容器内运行的进程

docker top 容器ID

(12)查看容器内部细节

docker inspect 容器ID

(13)从容器内拷贝文件到主机上

docker cp  容器ID:容器内路径 目的主机路径example:
#以ubuntu为例,我们在/tmp目录下通过touch a.txt创建a文本,将其复制到本机download目录下
docker cp 958443b97285:/tmp/a.txt /download

(14)导入和导出容器

export 导出容器的内容留作为一个tar归档文件[对应import命令]

import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]

docker export 容器ID > 文件名.tar
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号example:#以ubuntu为例
docker export 958443b97285 > abcd.tar
cat abcd.tar | docker import - atguigu/ubuntu:3.7  # 注意 - 左右有分别有一个空格


http://www.ppmy.cn/news/25738.html

相关文章

JAVA线程池的使用

一、池化思想和JAVA线程池 池化是很重要的思想;池化的好处是提供缓冲和统一的管理。这个笔者在本人的数据库连接池的博客中已经提到过了(JAVA常用数据库连接池_王者之路001的博客-CSDN博客 )。 线程池是另一种池化思想的运用,把…

小菜版考试系统——“C”

各位CSDN的uu们你们好呀,今天,小雅兰的内容是小菜版考试系统,最近一直在忙C语言课程设计的事,那么,就请uu们看看我的学习成果吧。 课程设计任务 摘要 题目分析 流程图 关键程序代码 程序运行结果 结论与心得 参…

2023年美赛赛题思路分析

2023年的赛题A-F题的整体难度不算太难,难度在于数据的收集上。整体难度上来看,难度上F题难度最小,建议直接上手。本次先给大家分享一些数据网站,在对各题做简单的思路分析。1、美国国家海洋和大气管理局Homepage | National Ocean…

makefile简易教程

makefile简易教程 一、学习目标 达到多文件快速编译的需求,相关符号的意思,以及其它注意事项。 二、快速入门 2.1 基本概念 Makefile 是一个在Unix和Linux操作系统上使用的构建工具,用于自动化编译和构建源代码。 2.2 用处 通过Makefi…

Centos7 调整磁盘空间

1. 查看磁盘空间占用情况: df -h 可以看到 /home 有很多剩余空间,占了绝大部分, 而我又很少把文件放在home下。 2. 备份 /home 下的内容: cp -r /home/ /homebak/ 3. 关闭home进程: fuser -m -v -i -k /home 报错: -bash: fuser…

Java中多继承的实现

1 问题Java是一种面向对象的只允许单继承的语言,那么怎样在Java中实现多继承呢?2 方法多层继承如果要直接继承类,子类是不可以直接多继承的,但是可以通过多层继承来实现多继承,但多层继承一般不建议超过三次。接口接口…

【python百炼成魔】python之列表详解

文章目录一. 列表的概念1.1 列表是什么?1.2 为什么要使用列表?1.3 列表的定义二. 列表的增删改查操作2.1 列表的读取2.2 列表的切片2.3 列表的查询操作2.3.1 not in ,in 表达式2.3.2 列表元素遍历2.4 列表元素的增加操作2.4.1 append()的相关用法2.4.2 e…

【Azure 架构师学习笔记】-Azure Logic Apps(7)- 自定义Logic Apps 调度

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Logic Apps】系列。 接上文【Azure 架构师学习笔记】-Azure Logic Apps(6)- Logic Apps调用ADF 前言 在稍微了解Logic Apps的使用之后,需要开始考虑如何调度起来。在Logic Apps里面…