docker-image container 基本操作 -常用命令

2023-05-16

基本概念:

  • container

容器。可以把每个 container 看做是一个独立的主机。 container 的创建通常有一个 image 作为其模板。类比成虚拟机的话可以理解为 image 就是虚拟机的镜像,而 container 就是一个个正在运行的虚拟机。一个虚拟机镜像可以创建出多个运行的虚拟主机且相互独立。 注意:container 一旦创建如果没有用 rm 命令移除,将会一直存在。所以用完后记得删除哦。

  • image

镜像。image 相当于 container 的模板,container 创建后里面有什么软件完全取决于它使用什么 image 。image 可以通过 container 创建(相当于把此时 container 的状态保存成快照),也可以通过 Dockerfile (一个文本文件,里面使用 docker 规定的一些写法)来创建。其中通过 Dockerfile 创建的方法能让环境配置和代码一起被版本库一起管理。

  • registry

存放镜像的仓库。只要能连接到 registry 每个人都可以很方便地通过 pull 命令从仓库中获取镜像。docker 默认使用的仓库是 docker hub,国内可以使用 DaoCloud 来建立 Mirror 连接到 docker hub,进而加快获取 image 的速度。

  • boot2docker

一个轻量级 linux 虚拟机,主要是为了让非 linux 系统也能用上 docker 。它实质上是一个 virtualbox 虚拟主机+一个能管理这个虚拟主机的命令行工具。由于这个虚拟主机的存在,在非 linux 系统上 container 需要获取一些物理系统资源(如 usb 设备)时不仅需要配置 docker 命令,还需要配置 boot2docker 这个虚拟主机的资源配置。

常用命令表

通用:

操作命令示例
查看 docker 版本docker versiondocker version
查看 docker 信息docker infodocker info
查看某命令 help 信息docker help [command]docker help attach
查看 docker help 信息docker --helpdocker --help
  • container 相关:
操作命令示例
创建 containerdocker createdocker create chenhengjie123/xwalkdriver
创建并运行 containerdocker rundocker run chenhengjie123/xwalkdriver /bin/bash
创建并运行 container 后进入其 bash 控制台docker run -t -i image /bin/bashdocker run -t -i ubuntu /bin/bash
创建并运行 container 并让其在后台运行,并端口映射docker run -p [port in container]:[port in physical system] -d [image] [command]docker run -p 5000:5000 -d training/webapp python app.py
查看正在运行的所有 container 信息docker psdocker ps
查看最后创建的 containerdocker ps -ldocker ps -l
查看所有 container ,包括正在运行和已经关闭的docker ps -adocker ps -a
输出指定 container 的 stdout 信息(用来看 log ,效果和 tail -f 类似,会实时输出。)docker logs -f [container]docker logs -f nostalgic_morse
获取 container 指定端口映射关系docker port [container] [port]docker port nostalgic_morse 5000
查看 container 进程列表docker top [container]docker top nostalgic_morse
查看 container 详细信息docker inspect [container]docker inspect nostalgic_morse
停止 continerdocker stop [container]docker stop nostalgic_morse
强制停止 containerdocker kill [container]docker kill nostalgic_morse
启动一个已经停止的 containerdocker start [container]docker start nostalgic_morse
重启 container (若 container 处于关闭状态,则直接启动)docker restart [container]docker restart nostalgic_morse
删除 containerdocker rm [container]docker rm nostalgic_morse

命令中需要指定 container 时,既可使用其名称,也可使用其 id 。

  • image 相关:
操作命令示例
从 container 创建 imagedocker commit [container] [imageName]docker commit nostalgic_morse ouruser/sinatra:v2
从 Dockerfile 创建 imagedocker build -t [imageName] [pathToFolder]docker build ouruser/sinatra:v3 .
查看本地所有 imagedocker imagesdocker images
在 registry 中搜索镜像docker search [query]docker search ubuntu
从 registry 中获取镜像 (若无指定 tag 名称,则默认使用 latest 这个 tag)docker pull [imageName]docker pull ubuntu:14.04, docker pull training/webapp
给 image 打 tagdocker tag [imageId] [imageName]docker tag 5db5f8471261 ouruser/sinatra:devel
把本地 image 上传到 registry 中 (此时会把所有 tag 都上传上去)docker push [imageName]docker push ouruser/sinatra
删除本地 imagedocker rmi [image]docker rmi training/sinatra

注意:image 中没有指定 tag 名称的话默认使用 latest 这个 tag 。然而 latest 的含义和 VCS 中的 head 不一样,不是代表最新一个镜像,仅仅是代表 tag 名称为 latest 的镜像。若不存在 tag 名称为 latest 的镜像则会报错。

总结

docker 虽然是一个虚拟化技术,但使用上却更像是在管理系统软件或者代码。里面的一些 pstoprm 命令让使用 Linux 命令的人感到十分亲切(虽然它们的语义有点不一样。。。),startstoprestart 让你感觉像是在控制 service ,而 pushpullcommittag 又让你觉得像是在使用 git 。因此程序员会感到很亲切且容易上手。

同时由于可以使用 Dockerfile 进行 image 的构建,且 docker hub 支持从 github 等地方自动根据 Dockerfile 进行构建,所以 docker 把运行环境也集成到 CI 中了。

美中不足的是由于 docker 目前仅支持 linux 上的容器技术,因此它要在非 Linux 系统下运行必须加多一个虚拟机层。这会造成一些在 Linux 上运行不会出现的问题(ip 地址、硬件资源、文件映射等),同时由于基于 linux ,一些 windows 的程序会水土不服,泛用性比虚拟机差一些。

但带来的好处是占用的系统资源低很多。一个只能开数个虚拟机的电脑一般能开数十个 container ,且 container 的启动时间一般在数秒内,比虚拟机快得多。另外,由于 docker 的 image 除了一些特殊的基础镜像外基本都是增量镜像,因此重复部分不会耗费额外的资源,所以几个看起来有数 g 的 image 如果里面使用的基础镜像有重复部分(大部分情况下都会有部分重复),那么它们实际占用空间将会小得多。

 
 
https://testerhome.com/topics/2760
 
常用命令:
安装Docker:
  • ubuntu安装:镜像管理
    docker images:列出本地所有镜像
    docker search <IMAGE_ID/NAME>:查找image
    docker pull <IMAGE_ID>:下载image
    docker push <IMAGE_ID>:上传image
    docker rmi <IMAGE_ID>:删除image
     
    容器管理
    docker run -i -t <IMAGE_ID> /bin/bash:-i:标准输入给容器    -t:分配一个虚拟终端    /bin/bash:执行bash脚本
    -d:以守护进程方式运行(后台)
    -P:默认匹配docker容器的5000端口号到宿主机的
    -p <HOT_PORT>:<CONTAINER_PORT>:指定端口号
    - -name: 指定容器的名称
    - -rm:退出时删除容器

    docker stop <CONTAINER_ID>:停止container
    docker start <CONTAINER_ID>:重新启动container
    -l:显示最后启动的容器
    -a:同时显示停止的容器,默认只显示启动状态

    docker attach <CONTAINER_ID> 连接到启动的容器
    docker logs <CONTAINER_ID>  : 输出容器日志
    docker cp <CONTAINER_ID>:path hostpath:复制容器内的文件到宿主机目录上
     
    <CONTAINER_ID>
    <CONTAINER_ID>:查看容器中的变化
    <CONTAINER_ID>:查看容器详细信息(输出为Json)
    -f:查找特定信息,如 -'{{ .NetworkSettings.IPAddress }}'
          docker commit -m "comment" -a "author" <CONTAINER_ID>  ouruser/imagename:tag

          docker extc -it <CONTAINER> <COMMAND>:在容器里执行命令,并输出结果
     
  • 网络管理
    docker run -P:随机分配端口号
    docker run -p 5000:5000:绑定特定端口号(主机的所有网络接口的5000端口均绑定容器的5000端口)
    docker run -p 127.0.0.1:5000:5000:绑定主机的特定接口的端口号
    docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py:绑定udp端口号
    docker port <CONTAINER_ID> 5000:查看容器的5000端口对应本地机器的IP和端口号
    使用Docker Linking连接容器:
  • 
    docker run -d -P --name web -v /webapp training/webapp python app.py  
  • 也可以将容器卷挂载到宿主机目录或宿主机的文件上,<容器目录或文件>的内容会被替换为<宿主机目录或文件>的内容,默认容器对这个目录有可读写权限
    
    docker run -d -P --name web -v <宿主机目录>:<容器目录> training/webapp python app.py  
    
    可以通过指定ro,将权限改为只读  
    
    -----:<容器目录>:r trainingwebapp python apppy  
    
    docker run -d -v /dbdata --name db1 training/postgres echo Data-only container for postgres  
    
    首先启动了一个容器,并为这个容器增加一个数据卷/dbdata,然后启动另一个容器,共享这个数据卷  
    docker run -d --volumes-from db1 --name db2 training/postgres
    
    此时db2使用了db1的容器卷,当容器db1被删除时,容器卷也不会被删除,只有所有容器不再使用此容器卷时,才会被删除  
    
    docker rm -v:删除容器卷  
    除了共享数据外,容器卷另一个作用是用来备份、恢复和迁移数据
    
    docker run --volumes-from db1 -v /home/backup:/backup ubuntu tar cvf /backup/backup.tar /dbdata  
    
    启动一个容器数据卷使用db1容器的数据卷,同时新建立一个数据卷指向宿主机目录/home/backup,将/dbdata目录的数据压缩为/backup/backup.tar  
    docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
    
    docker run --volumes-from dbdata2 -v /home/backup:/backup busybox tar xvf /backup/backup.tar  
    启动一个容器,同时把backup.tar的内容解压到容器的backup

    仓库管理
    docker login:登录
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker-image container 基本操作 -常用命令 的相关文章

  • linux环境变量设置 profile,Linux 环境变量 设置 etc profile

    一 Linux的变量种类 按变量的生存周期来划分 xff0c Linux变量可分为两类 xff1a 1 永久的 xff1a 需要修改配置文件 xff0c 变量永久生效 2 临时的 xff1a 使用export命令声明即可 xff0c 变量在
  • Debian 7 桌面美化

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 安装中文字体 1 文泉驿 查找 xff1a apt cache search wqy 可能输出如下信息 xff1a ttf wqy microhei A droid d
  • mysql编程展示数据_Mysql的列修改成行并显示数据的简单实现

    创建测试表 xff1a DROP TABLE IF EXISTS 96 test 96 CREATE TABLE 96 test 96 96 year 96 int 11 DEFAULT NULL 96 month 96 int 11 DE
  • LINUX:window下使用debian安装虚拟环境

    windows系统下 xff0c 使用debian做开发 xff0c 使用的是python编程语言 首先 xff0c 要安装pip 安装命令 xff1a apt install python3 pip 如果使用这个命令后出现如下错误提示 x
  • 如何“优雅地”进行Jetson nano 学习

    RT 其实就是面对多场景应用时 xff0c nano不可能待在同一个地方 xff0c 要么在车上 xff0c 在机器人上 我们扛着一 个大显示器到处跑肯定是不太现实的 xff0c 当然 xff0c 如果想要锻炼身体的同学另说 xff01 改
  • xmake入门,构建项目原来可以如此简单

    前言 在开发xmake之前 xff0c 我一直在使用gnumake makefile来维护个人C C 43 43 项目 xff0c 一开始还好 xff0c 然而等项目越来越庞大后 xff0c 维护起来就非常吃力了 xff0c 后续也用过一阵
  • haproxy负载均衡

    os xff1a root 64 node1 cat etc system release CentOS release 6 4 Final 参考文章 xff1a http www serverlab ca tutorials linux
  • 无线网络wifi (WPA/WPA2)密码破解方法

    无线网络password破解WPA WPA2教程 本教程用于探索无线路由安全漏洞 xff0c 禁止用于非法用途 xff0c 违者法律必究 xff08 与我无关 xff09 在动手破解WPA WPA2前 xff0c 应该先了解一下基础知识 x
  • 关于心跳ajax请求pending状态(被挂起),stalled时间过长的问题。涉及tcp连接异常。...

    环境 xff1a 景安快云服务器 xff08 听说很垃圾 xff0c 但是公司买的 xff0c 我也刚来 xff09 xff0c CentOS 6 8 x86 64 xff0c Apache xff0c MySQL5 1 xff0c PHP
  • 【遥感专题系列】微波遥感(三、SAR图像特征)

    SAR是主动式侧视雷达系统 xff0c 且成像几何属于斜距投影类型 因此SAR图像与光学图像在成像机理 几何特征 辐射特征等方面都有较大的区别 在进行SAR图像处理和应用前 xff0c 需要了解SAR图像的基本特征 本文主要包括 xff1a
  • Python可以用来做什么?这4个在平常生活中都可以用到

    Python是一个非常好用的程序语言 xff0c 开发的速度非常快 xff0c 你都知道Python可以用来做什么吗 xff1f 下面我将介绍几个简单的小程序 xff0c 你也可以试一试 xff01 1 网易云音乐批量下载 你可以利用Pyt
  • Next.js脚手架进阶 — 完美契合ant-design

    前言 上次入门完了之后感觉意犹未尽 xff0c 总觉得这个脚手架还是不太完美 xff0c 还有可以改进的地方 xff0c 所以为了与人方便也是与己方便 xff0c 就继续写几篇吧 xff5e xff0c 不过既然之前的叫做入门系列 xff0
  • Python实现“淘宝自动发货机器人”

    背景 之前看到朋友下载csdn资源 xff0c 但因为没有下载积分 xff0c 因此他会在淘宝上购买一个叫做 csdn资源代下 的业务 对我来说 xff0c 也许这是一个商机 xff08 因为刚好提交了一个csdn漏洞 xff0c 得到了一
  • Javascript定时器那些事儿

    一 什么是定时器 JS提供了一些原生方法来实现延时去执行某一段代码 xff0c 下面来简单介绍一下 setTimeout 设置一个定时器 xff0c 在定时器到期后执行一次函数或代码段 var timeoutId 61 window set
  • new Date() 方法到底是获取什么时间

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 问题 java 中 xff0c new Date 方法 获取的时间 xff0c 究竟与当前的系统时间有什么关联 xff1f 简单的时刻对应关系吗 xff1f 2 测试环
  • Windows使用

    将压缩包安装的软件放入开始菜单 平台需求配置 平台 本文针对windows平台 xff0c 在win11上进行过测试 xff0c 其他平台请自行确认是否可用 需求 最近在安装软件时 xff0c 发现了一个问题 很多软件直接给一个压缩包 xf
  • Python装饰器高级版—Python类内定义装饰器并传递self参数

    本文重点 xff1a 解决了类里面定义的装饰器 xff0c 在同一个类里面使用的问题 xff0c 并实现了装饰器的类属性参数传递 目录 xff1a 一 基本装饰器 二 在类里定义装饰器 xff0c 装饰本类内函数 三 类装饰器 正文 xff
  • 华为交换机链路聚合命令

    配置链路聚合 1 创建聚合组 sys interface eth trunk 2 2 配置聚合模式为手工模式 interface eth trunk 2 mode manual load balance 表示手工模式 mode lacp l
  • VC EXE程序删除自身

    在开发程序过程中 xff0c 有许多情况中都需要执行程序自己把自己从物理磁盘上删除 xff0c 例如 xff0c 卸装程序 xff0c 一些黑客程序获取信息后自清除等 xff0c 我们把这些具有自删除功能的程序统称为 自杀 程序 对于一名程
  • 理解WinRT

    WinRT Windows Runtime 是微软新一代在Win8 Metro下开发框架 xff0c 它是一套面向对象 跨语言并且是Native的库 如果有人问我WinRT的核心技术是什么 xff1f 我的答案是 COM 43 Net Me

随机推荐

  • vim 基本使用

    vim 下基本命令 重新加载 vimrc source vimrc 列出当前缓冲区的所有文档 ls 然后使用 b 43 编号 移至该文档 选中多行 v 43 shift 然后 j k 上下移动 缩进单行 gt gt lt lt 当前行到结尾
  • hashcode()和equals()的作用、区别、联系

    介绍一 hashCode 方法和equal 方法的作用其实一样 xff0c 在Java里都是用来对比两个对象是否相等一致 xff0c 那么equal 既然已经能实现对比的功能了 xff0c 为什么还要hashCode 呢 xff1f 因为重
  • c语言文件中存入/读取double型矩阵型数据

    test c Created on Jun 1 2019 Author lgh include lt stdio h gt include lt stdlib h gt double allocation memory double int
  • windows自动更新变成了灰色,不能选择的原因

    现象 发现我的电脑 属性 自动更新里面所有的按钮都已经是灰色的了 xff0c 而且每次开机都会自动运行自动更新 xff0c 关闭进程也无法停止 xff0c 几秒钟后又会开始更新 xff0c 而且更新后会要求重新启动 控制面板里的安全中心显示
  • 在 Debian Stretch 上安装 FFmpeg

    FFmpeg 是一款流行的多媒体框架 xff0c 可以用来记录 转换数字音频 视频 xff0c 并能将其转化为流的开源计算机程序 采用LGPL或GPL许可证 它提供了录制 转换以及流化音视频的完整解决方案 它包含了非常先进的音频 视频编解码
  • MHA使用手册一:概述(基于0.56版本)

    本文基于MHA官方文档0 56版wiki翻译而成 原文链接 xff1a https github com yoshinorim mha4mysql manager wiki 概述 概述 MHA以最少的停机时间 xff08 通常在10 30秒
  • 海思开发板FFmpeg+Nginx,推流RTMP播放(优秀教程收集+实操整理)

    海思开发板FFmpeg 43 Nginx推流RTSP播放 xff08 优秀教程收集 43 实操整理 xff09 安装FFmpeg及移植FFmpeg编译问题收录 xff1a static declaration of 39 cbrt 39 f
  • mysql配置文件详解

    basedir 61 path使用给定目录作为根目录 安装目录 character sets dir 61 path给出存放着字符集的目录 datadir 61 path从给定目录读取数据库文件 pid file 61 filename为m
  • 华测服务器进不去系统,华测云服务器如何登陆

    华测云服务器如何登陆 内容精选 换一换 当您拥有一台专属主机后 xff0c 您可以在专属主机上创建相应规格族的云服务器 在专属主机上创建云服务器前 xff0c 您必须先完成以下工作 xff1a 购买专属主机如果不使用系统自动创建的默认安全组
  • 七牛云存储 CDN 使用指南

    七牛cdn 使用指南 更新于2016 3 13 分为两种情况 xff1a 1 使用七牛存储 2 直接使用七牛cdn 一 使用七牛存储 xff08 七牛的存储默认使用cdn加速 xff09 静态资源存储到七牛后 xff0c 可以使用七牛提供的
  • 如何在 Debian 中安装 DHCP 服务器

    动态主机配置协议 xff08 DHCP xff09 是一种用于使主机能够从服务器自动分配 IP 地址和相关的网络配置的网络协议 DHCP 服务器分配给 DHCP 客户端的 IP 地址处于 租用 状态 xff0c 租用时间通常取决于客户端计算
  • 重磅更新:码云企业版之项目多仓库功能上线!!!

    开发四年只会写业务代码 xff0c 分布式高并发都不会还做程序员 xff1f 现在的软件开发是越来越复杂了 xff0c 以前讲系统化 模块化 xff0c 现在讲微服务化 xff0c 前后端分离 xff0c 各种编程语言混搭 xff0c 还有
  • tracking 问题解决

    1 dir 或者C 43 43 函数读文件名 xff0c 不推荐 搞乱了名字 2 matio读写矩阵 转载于 https www cnblogs com Wanggcong p 5651081 html
  • Docker系列07—Dockerfile 详解

    Docker系列07 Dockerfile 详解 1 认识Dockerfile 1 1 镜像的生成途径 基于容器制作 dockerfile xff0c docker build 基于容器制作镜像 xff0c 已经在上篇Docker系列06
  • Linux SWAP 深度解读

    概述 本文讨论的swap基于Linux4 4内核代码 Linux内存管理是一套非常复杂的系统 xff0c 而swap只是其中一个很小的处理逻辑 希望本文能让读者了解Linux对swap的使用大概是什么样子 阅读完本文 xff0c 应该可以帮
  • QT QByteArray的十进制与十六进制(字符型) 互相转换 -串口编程

    串口使用中会经常用到 目前使用到的是QByteArray number 源数据 xff0c 目标输出的进制 作下记录 xff0c 以供日后参考 转制方法有很多 xff0c 这只是其中一种 xff0c 有其他QT的进制转换方法 xff0c 欢
  • Ubuntu系统上All-in-one部署OpenStack

    虚拟机软件 xff1a VMware Workstaion12 操作系统 xff1a Ubuntu14 04 1 修改Ubuntu14 04的apt源为国内的阿里源 xff1a cp etc apt sources list etc apt
  • Debian9服务器安装

    对于使用惯windows系统的人来说 xff0c 刚开始接触使用linux系统一定是很不习惯 xff0c 因为使用环境的变化经常会出现一些错误 当然 xff0c 对于我来说 xff0c 我也是刚刚才开始接触Linux xff0c 对此 xf
  • 【AtCoder】ARC095 E - Symmetric Grid 模拟

    题目 E Symmetric Grid 题意 给定n m的小写字母矩阵 xff0c 求是否能通过若干行互换和列互换使得矩阵中心对称 n m lt 61 12 算法 模拟 题解 首先行列操作独立 xff0c 如果已确定行操作 xff0c 那么
  • docker-image container 基本操作 -常用命令

    基本概念 xff1a container 容器 可以把每个 container 看做是一个独立的主机 container 的创建通常有一个 image 作为其模板 类比成虚拟机的话可以理解为 image 就是虚拟机的镜像 xff0c 而 c