Linux下docker的常用命令

2023-11-13

我们来了解一下常用的docker命令


  • 其中docker container命令中的参数,有同于docker命令的参数的,其用法相同,效果一样。
  • docker container命令的参数和docker命令的参数不同的有prune,ls
  • 其中docker *命令中的参数,有同于docker命令的参数的,其含义相同。

 

1.docker version   #查看docker的版本
2.docker info   #查看docker的详细信息
3.docker images   #查看本地所有镜像
4.docker images nginx   #查看本地与nginx的相关的镜像
5.docker ps -a   #查看当前所有容器的状态(包括没有运行的)
6.docker ps   #查看当前正在运行的容器的状态
7.docker stop vm1   #停止容器vm1(容器vm1存在,并运行)
8.docker start vm1   #启动容器vm1(容器vm1存在,但没有运行)
9.docker kill vm1   #强制干掉容器vm1(容器vm1存在,并运行)
10.docker attach vm1   #连接容器vm1(当容器vm1正在运行,要再次连接时,使用该命令)
11.docker diff vm1   #查看容器vm1的修改(A – Add;D – Delete;C – Change)
12.docker top vm1   #查看容器vm1的进程
13.docker stats vm1   #查看容器vm1的资源使用率
14.docker pause/unpause vm1   #暂停/恢复容器vm1(但是docker ps中显示仍在运行状态)
15.docker cp index.html vm1:/usr/share/nginx/html   #同docker container cp index.html vm1:/usr/share/nginx/html。拷贝index.html文件到nginx创建的容器vm1的默认发布目录(/usr/share/nginx/html)下。在"Linux下docker应用初体验之nginx,ubuntu,rhel7镜像的使用"文章中使用过。
16.docker logs vm1   #查看容器vm1的日志(即在容器vm1中的所有操作)
17.docker port vm1   #查看容器vm1的端口映射情况(容器vm1正在运行)
18.docker network ls   #列出当前有哪些网络类型
19.docker volume ls   #列出当前有哪些数据卷
20.docker build -t rhel7:apache .   #使用当前目录下Dockerfile文件创建镜像rhel7:apache
21.docker tag rhel7:nginx4 localhost:5000/rhel7:nginx4   #相当于将rhel7:nginx4镜像复制一份出来,名字为localhost:5000/rhel7:nginx4
22.docker login xin.org   #登录xin.org
23.docker logout xin.org  #退出xin.org

______________________________________________________________________________
23.docker run -d --name vm1 ubuntu   #使用镜像ubuntu创建容器vm1,并运行。(-d表示后台运行容器,并返回容器ID)
24.docker run -it --name vm1 ubuntu   #使用镜像ubuntu创建容器vm1,并运行,并进入交互界面。
25.docker run -it --name vm1 rhel7 bash   #使用镜像rhel7创建容器vm1,并与其进行bash交互;(-i:以交互模式运行容器,通常与-t一起使用;-t:为容器重新分配一个伪输入终端)
26.docker run -d --name vm1 -v /tmp/docker:/usr/share/nginx/html nginx   #使用镜像nginx创建容器vm1,并运行,并将本地主机的/tmp/docker目录挂载到容器vm1内的/usr/share/nginx/html目录下。(即本地主机/tmp/docker目录下有什么内容,那容器vm1的/usr/share/nginx/html目录中就有什么内容)。在"Linux下docker应用初体验之nginx,ubuntu,rhel7镜像的使用"文章中使用过。
27.docker exec -it vm1 /bin/bash   #进入容器vm1的bash界面(此时容器vm1正在运行)

——————————————————————————————————————————————————————————————————————————————
28.docker run --rm busybox:v1   #用busybox:v1镜像创建容器,并运行,运行完成之后,立即删除
29.docker run -it --rm ubuntu   #用ubuntu镜像创建容器,并运行,运行完成之后,立即删除
——————————————————————————————————————————————————————————————————————————————
30.docker commit vm1 ubuntu:v1   #将容器vm1打包生成ubuntu:v1镜像
______________________________________________________________________________
31.docker inspect vm1   #查看容器vm1的详情
32.docker inspect nginx   #查看镜像vm1的详情
——————————————————————————————————————————————————————————————————————————————
33.docker rmi nginx   #删除nginx镜像
34.docker rm vm1   #删除容器vm1
#当容器正在运行时,使用该命令回报错。应该先docker stop vm1停止vm1容器,再docker rm vm1删除容器vm1。当然,也可以使用docker rm -f vm1强制删除正在运行的容器vm1。
#即docker rm -f vm1相当于docker stop vm1 + docker rm vm1。
——————————————————————————————————————————————————————————————————————————————
35.docker history nginx   #查看nginx镜像的历史
——————————————————————————————————————————————————————————————————————————————
36.docker load -i ubuntu.tar   #导入ubuntu.tar,以添加镜像ubuntu
37.docker import vm1.tar image   #导入容器vm1.tar为镜像image
——————————————————————————————————————————————————————————————————————————————
38.docker save ubuntu > ubuntu.tar   #导出镜像ubuntu
39.docker export vm1 > vm1.tar   #导出容器vm1
——————————————————————————————————————————————————————————————————————————————
40.docker search  镜像名的一部分   #查找镜像(如:docker search nginx  #查找与nginx相关的镜像)
41.docker pull 镜像名  #拉取镜像
42.docker push 镜像名  #推送镜像

______________________________________________________________________________
43.docker container ls   #同docker ps,查看正在运行的容器
44.docker container prune    #删除所有运行停止的容器
45.docker rm -f `docker ps -aq`   #删除所有容器(运行的和没运行的)

想要了解更多命令:     docker  --help

 

下面,我们来具体看一下docker commit命令,docker attach命令,docker exec命令,docker diff命令+docker logs命令,docker container prune命令,docker save命令的使用方法

 

1.docker commit命令

 

#使用ubuntu镜像,创建一个vm1容器,并进入交互界面。
[root@foundation83 kiosk]# docker run -it --name vm1 ubuntu   
root@06803b2e8e7d:/# touch file   #在容器vm1内创建一个文件
root@06803b2e8e7d:/# ls
bin  boot  dev  etc  file  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@06803b2e8e7d:/# exit   #退出容器


#使用docker commit命令,将容器vm1打包为ubuntu:v1镜像,并提交
[root@foundation83 kiosk]# docker commit vm1 ubuntu:v1  
sha256:ceda2a785c9707b9ba5a9c89bad0fa2c54393dcb484cdb844042635217834269


#使用ubuntu:v1镜像,创建一个vm2容器,并进入交互界面。
[root@foundation83 kiosk]# docker run -it --name vm2 ubuntu:v1
root@67327409e9a9:/# ls
bin  boot  dev  etc  file  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  

#结论:我们会发现,vm2容器中,看到的内容正是容器vm1中的内容。

 

2.docker attach命令

 

#使用镜像ubuntu,创建容器vm3,并进入交互模式
[root@foundation83 kiosk]# docker run -it --name vm3 ubuntu
root@08214d3577be:/#    #使用Crtl+p+q退出。如果使用的是Ctrl+d退出,那么是使用docker attach命令之前,要先使用docker start命令,开启相应的容器

#使用docker attach命令,再次连接容器vm1
[root@foundation83 kiosk]# docker attach vm3  
root@08214d3577be:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

 

3.docker exec命令

 

#使用nginx镜像后台运行容器vm4
[root@foundation83 kiosk]# docker run -d --name vm4 nginx
a9cacd1ca7cf9687d62d186427b78471fc37aa58f63c7b652b329eb0919dd5e5

#使用docker exec命令,进入容器vm4的交互界面,查看一些内容
[root@foundation83 kiosk]# docker exec -it vm4 /bin/bash
root@a9cacd1ca7cf:/# cd /usr/share/nginx/html/
root@a9cacd1ca7cf:/usr/share/nginx/html# ls
50x.html  index.html

 

4.docker diff命令+docker logs命令

 

#使用ubuntu镜像,运行容器vm5,并进入交互模式
[root@foundation83 kiosk]# docker run -it --name vm5 ubuntu
root@9fbf03633bf3:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
root@9fbf03633bf3:/#      #使用Ctrl+p+q退出

#将本地主机的/etc/passwd文件,拷贝到容器vm1的/tmp目录中
[root@foundation83 kiosk]# docker container cp /etc/passwd vm5:/tmp


#使用docker diff命令查看容器vm5的修改信息
[root@foundation83 kiosk]# docker diff vm5
C /tmp    #C表示改变(Change)
A /tmp/passwd   #A表示添加(Add)

#使用docker logs查看容器vm5的日志信息(在容器vm5中的所有操作)
[root@foundation83 kiosk]# docker logs vm5
root@9fbf03633bf3:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

 

5.docker  container prune命令

 

停止容器后不会自动删除这个容器,除非在启动容器的时候指定了 --rm 标志。使用 docker ps -a 命令查看 Docker 主机上包含停止的容器在内的所有容器。你可能会对存在这么多容器感到惊讶,尤其是在开发环境。停止状态的容器的可写层仍然占用磁盘空间。要清理掉这些,可以使用 docker container prune 命令:

[root@foundation83 kiosk]# docker container prune 
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y

默认情况下,系统会提示是否继续。要绕过提示,请使用 -f--force 标志。

默认情况下,所有停止状态的容器会被删除。可以使用 --filter 标志来限制范围。例如,下面的命令只会删除 24 小时之前创建的停止状态的容器:

[root@foundation83 kiosk]# docker container prune --filter "until=24h"

 

4.docker save命令

 

[root@foundation83 docker]# docker save ubuntu > ubuntu.tar
[root@foundation83 docker]# ls ubuntu.tar 
ubuntu.tar

 

下面,我们来总结一下docker常用命令中作用类似的命令的区别

 

总结一下docker save和docker export的区别:

  1. docker save保存的是镜像(image)
  2. docker export保存的是容器(container);

总结一下docker load和docker import的区别:

  1. docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;
  2. docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。

总结一下docker run和docker exec的区别:

  1. “docker run”通常是在新创建的容器中所使用的命令。 它适用于在没有其他容器运行的情况下,您想要创建一个容器,并且要启动它,然后在其上运行一个进程。
  2. “docker exec”适用于在现有容器中运行命令的情况。如果您已经拥有了一个正在运行的容器,并希望更改该容器或从中获取某些内容,那么使用“docker exec”命令就非常合适了。

总结一下docker exec和docker attach的区别:

  1. attach 直接进入容器启动命令的终端,不会启动新的进程;exec 则是在容器中打开新的终端,并且可以启动新的进程。
  2. docker attach可以attach到一个已经在运行的容器的stdin,然后进行命令执行的动作。但是需要注意的是,如果直接从这个stdin中exit(ctrl+d),会导致容器的停止;docker exec同时使用 -it 选项时,会打开一个跟我们平时使用的TTY一样的终端。也不会像attach方式因为退出终端,导致整个容器退出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux下docker的常用命令 的相关文章

  • vue3优雅实现移动端登录注册模块

    前言 近期开发的移动端项目直接上了vue3 新特性composition api确实带来了全新的开发体验 开发者在使用这些特性时可以将高耦合的状态和方法放在一起统一管理 并能视具体情况将高度复用的逻辑代码单独封装起来 这对提升整体代码架构的
  • VUE element-ui 之table表格表头插入输入框

    很简单
  • 手把手教你安装RabbitMQ(基于CentOS7系统)

    RabbitMQ简介及安装 什么是RabbitMQ RabbitMQ的特点 安装 安装Erlang 配置Erlang环境变量 验证环境 安装RabbitMQ 启动RabbitMQ 添加用户 访问 什么是RabbitMQ RabbitMQ是一
  • 财富自由?五年后为什么他月入十万,而我月入六千

    最近无论是在社群里还是 各种付费平台上 都能看到闪闪发光的一个词 财富自由 我好奇地去搜索了一下百度百科 财富自由是指 你无需为生活开销而努力 为钱工作的状态 简单的说 你的资产产生的被动收入 至少等于或超过你的日常开支 这是我们大多数人最
  • int、float和double的字节及位码

    int类型 4字节32位 第一位 符号位 2 9位 阶位 指数位 10 32位 普通数值位 0 00000000 00000000000000000000001 flaot类型 4字节32位 第一位 符号位 2 9位 阶位 指数位 10 3
  • 神经网络优化(二) - 激活函数和损失函数

    1 神经网络中的激活函数activation function 1 1 引入激活函数概念 神经网络的基本构成单元是神经元 在搭建神经网络一文中使用的神经元模型为 这个神经元模型是较为简化的基本神经元模型 还有一种理论模型包含有激活函数和偏置
  • live555学习之二RTSP协议说明

    RTSP协议 是一种基于C S架构的并用于双方通信约定的流媒体协议 全称实时流协议 Real Time Streaming Protocol 集成了网络实时控制 数据传输接收功能 客户端遵循协议发送指令控制多媒体的资源的功能如播放 暂停 停
  • row format delimited fields terminated by ','

    row format delimited fields terminated by 以 结尾的行格式分隔字段
  • base64图片编码大小与原图文件大小之间的联系

    base64图片编码大小与原图文件大小之间的联系 有时候我们需要把canvas画布的图画转换成图片输出页面 而用canvas生成的图片就是base64编码的 它是由数字 字母等一大串的字符组成的 但是我们需要获取它的文件流大小该怎么办呢 B
  • 题解-equation 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y;

    Problem Description Now given the equation 8 x 4 7 x 3 2 x 2 3 x 6 Y can you find its solution between 0 and 100 br Now
  • Docker 容器安全风险和防御综述

    摘要 Docker是目前最具代表性的容器平台之一 它的安全问题引起了产业界和学术界的广泛关注 首先 对Docker架构以及基本安全特性进行介绍 分析了Docker面临的安全威胁 其次 对Docker增强 安全检测 瘦身等方面的安全技术进行了
  • JSONArray操作汇总,排序,筛选,分组

    JSONArray操作汇总 一 排序 1 根据集合对象中某一对象属性进行排序 返回新的集合 2 List进行排序 返回新的List 注意 并没有改变原始list的顺序 二 筛选 1 获取集合对象中某一属性值 2 获取集合对象中某一属性值并去
  • JavaWeb基础7——会话技术Cookie&Session

    导航 黑马Java笔记 踩坑汇总 JavaSE JavaWeb SSM SpringBoot 瑞吉外卖 SpringCloud SpringCloudAlibaba 黑马旅游 谷粒商城 目录 一 会话技术 1 1 会话和跟踪技术介绍 1 2
  • 【华为OD机试 2023】 查找单入口空闲区域(C++ Java JavaScript Python)

    华为od机试题库 华为OD机试2022 2023 C Java JS Py https blog csdn net banxia frontend category 12225173 html 华为OD机试2023最新题库 更新中 C Ja
  • npm安装依赖至指定版本的方法

    简介 本文介绍npm安装依赖至指定版本的方法 依赖的版本可以在淘宝镜像或官方查询到 三种方法 方法一 先在package json里修改好指定版本号 然后输入 npm update webpack 方法二 npm update webpac
  • 【从推理出发】

    赌上爷爷之名 2021年暑假 和现在一样 也是很佛 不想好好学习的时间 8月的天气太过炎热 有时却又暴雨倾盆 很不讨喜 只得在家闲着看电视 动漫打发时间 按照以前的习惯 一般是悠闲地躺在沙发上吹着空调 看着长达900多集的柯南 然后在剧情中
  • spring cloud gateway 自定义负载均衡

    spring cloud gateway 自定义负载均衡 相关类及接口 LoadbalancerClientFilter 使用ribbon负载均衡 默认使用该类 已不推荐使用 deprecated Deprecated public cla
  • 伙计,Go项目怎么使用枚举?

    前言 哈喽 大家好 我是asong 枚举是一种很重要的数据类型 在java C语言等主流编程语言中都支持了枚举类型 但是在Go语言中却没有枚举类型 那有什么替代方案吗 本文我们来聊一聊这个事情 为什么要有枚举 我们以java语言为例子 在J
  • R语言实现可理解的随机森林模型(Random Forest)——iml包

    Random Forest 解释模型 1 介绍 2 理解随机森林运行机理 2 1导入需要的包 2 2 构建随机森林模型 2 3 RF特征重要性 2 4 特征对预测结果的影响 2 5 交互作用 2 6 替代模型 Decision tree s
  • 微信小程序View视图容器组件

    完整微信小程序 Java后端 技术贴目录清单页面 必看 微信小程序框架为开发者提供了一系列完备的UI组件 方便开发者快速构建小程序UI界面 借助这些UI组件开发者可以像搭积木一样快速地拼装出一栋房子的样子 这非常类似于当下建筑行业比较流行的

随机推荐