docker实践总结——docker常用命令

介绍

docker之前就有过了解,最近工作中有用到,便准备系统的学习一下,顺便通过博客的形式做笔记。

docker和虚拟机(如VMware)的区别:docker比虚拟机要轻量级,虚拟机是模拟硬件,然后在虚拟的硬件上安装操作系统,操作系统本身就是重量级软件,而docker则是基于容器的虚拟化技术,你可以把容器理解为沙箱环境,当然容器化的技术是依赖于操作系统的,在Linux中是基于cgroups来实现的,Windows家庭版安装docker貌似还是依赖虚拟机(Windows专业版则基于Hyper-V实现)。容器中只会有需要运行的应用以及它依赖的必要库(比如依赖一些操作系统的必要库文件,而不向虚拟机一样需要整个操作系统)。docker容器中的软件是直接与系统通信,而虚拟机中的软件与系统通信则多了一层“从操作系统”(虚拟机中的操作系统)。

举个例子,假设我电脑上已经安装了MySQL,但是我需要安装另外一个版本的MySQL做测试用,如果我使用虚拟机,则需要在电脑中安装并启动一个虚拟机,在虚拟机中安装操作系统,然后在虚拟机操作系统中安装MySQL,整个虚拟机跑起来占用资源是相当大的(操作系统+MySQL)。
如果我使用docker,则只需要一个MySQL镜像,将镜像加载到容器中,然后启动容器,这样就运行了一个完全独立于本机的MySQL服务,效果与虚拟机的完全一样,而且这个MySQL服务占用的资源很小,只有MySQL软件本身和一些必要的库文件(必要的库+MySQL),而不是整个操作系统+MySQL软件,非常轻量级的。


几个概念

docker的三个重要概念:

  1. 镜像
    在docker中,镜像属于只读层,可以理解为一个软件包,有点类似操作系统镜像的IOS文件,不过比操作系统较轻量级很多。
  2. 容器
    简单的说,容器可以理解为一个镜像在docker中的实例,容器启动之后便是 docker daemon 的一个子进程,同一个镜像可以多次运行,可以形成多个容器,每个容器都会有一个容器ID(containerID),当然你也可以指定一个容器名称(containerName),容器名称要唯一。
    用面向对象语言来打个比方,如果用Java语言中的类来比作镜像(如Thread类),则容器是这个类的一个对象实例(即 new Thread()),容器本身可以运行和停止,有点像 thread.start() 和tread.stop(),这个比方不一定恰当,能够增强理解就行。
    注意: docker本身不是容器,它是创建容器的工具,是一个容器引擎。
  3. 仓库
    仓库是用于存放镜像的,有点类似于maven仓库。用于集中管理镜像文件。

常用命令


镜像相关命令

以运行Python容器为例:

docker search python       #搜索Python镜像  
docker pull python:3.8.2   #拉取Python3.8.2的镜像 
docker images              #查看本地镜像列表,找到 Python 对应的 IMAGE ID。
docker images python       #列出名称未python的所有镜像
docker image ls            #执行效果好像与”docker images“相同,没有具体研究过差异 
docker history [imageId]   #查看镜像创建历史  


run命令

如下 “b5b4d78bc90c” 为我电脑中Python的 imageId。
可以执行 “docker images python” 找到 imageId 。

docker run -it b5b4d78bc90c /bin/bash #用镜像启动一个容器,并且直接进入该容器:输入"exit"退出容器后容器进程也停止,使用“docker ps -a”可以查看该容器运行状态为Exited。
docker run -itd b5b4d78bc90c /bin/bash  #使用镜像启动一个容器,并在后台执行&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值