Docker学习第一天

Docker是什么

(1)docker是解决了运行环境和配置问题的软件容器,方便做持续集成并有帮助于整体发布的容器虚拟化技术。
(2)一次构建、随处运行,更快速的应用交付和部署,更快捷的升级和扩缩容,更简单的系统运维,更高效的计算资源利用。

Docker的安装

(1)Docker并非一个通用的容器工具,它依赖于已经存在并运行的Linux内核环境。
(2)Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它的执行的效率几乎等同于所部署的Linux主机。
(3)因此,Docker必须部署在Linux内核的系统上。如果其他系统想部署Docker必须安装一个虚拟Linux环境。

Docker的基本组成

(1)镜像:
Docker镜像(Image)就是一个只读的模板,镜像可以用来创建Docker容器,一个镜像可以创建很多容器。相当于容器的源代码,docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。
(2)容器:
从面向对象角度:Docker利用容器(Container)独立运行的一个或者一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是镜像创建的运行实例。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是运行时的实体。容器为镜像提供了一个标准和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是互相隔离的、保证安全的平台。
从镜像容器角度:可以把容器看做一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
(3)仓库
仓库(Respository)是集中存放镜像的场所。类似于Maven仓库,存放各种jar包的地方,github仓库,存放各种git项目的地方,Docker公司提供的官方registry被称为Doceker Hub,存放各种镜像模板的地方。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

为什么Docker会比VM虚拟机更快

(1)由于docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有更明显的优势。
(2)docker利用的是宿主机的内核,而不需要加载操作系统os内核
当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较费时费力的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟。

docker常用命令

(1)帮助启动类命令:
启动docker:systemctl start docker
停止docker:systemctl stop docker
重启docker: systemctl restart docker
查看docker状态:systemctl status docker
开机启动:systemctl enable docker
查看docker概要信息:docker info
查看docker总体帮助文档:docker --help
查看dokcer命令帮助文档:docker 具体命令 --help

(2)镜像命令
列出本地主机上的镜像:docker images (-a :列出本地所有的镜像;-q:只显示镜像id)
其中 :
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签版本号
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一个仓库源可以有多个TAG版本,代表这个仓库源的不同个版本,我们使用REPOSITORY:TAG来定义不同的镜像。如果你不指定一个镜像的版本标签,例如只使用ubuntu,docker将默认使用ubuntu:latest镜像。

docker search 某个镜像名字 (可以使用–limit Num 表示只显示前Num个镜像)

docker pull 某个xxx镜像名字:TAG
没有TAG就是最新版,等价于docker pull镜像名字:latest

docker system df 查看镜像、容器、数据卷所占的空间

docker rmi -f 镜像名:镜像tag/镜像id 删除多个镜像

docker rmi -f $(docker images -qa) 查出所有的镜像id并删除所有镜像

虚悬镜像:仓库名、标签都是<none>的镜像

(3)容器命令
新建+启动容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG]
OPTIONS说明(常用):有些是一个减号,有些是两个减号
--name=“容器新名字” 为容器指定一个名称
-d:后台运行容器并返回容器ID,也即启动守护式容器(后台运行)
-i :以交互式模式运行容器,通常与-t同时使用(interactive:交互式操作)
-t:为容器重新分配一个伪输入终端,通常与-i同时使用;(tty:终端)
也即启动交互式容器(前台有伪终端,等待交互);
-P:随机端口映射,大写P
-p:指定端口映射,小写P

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

退出容器,两种退出方式
exit(run进去容器,exit退出,容器停止)
ctrl + p + q(run进去容器,ctrl+p+q退出,容器不停止)

启动已经停止运行的容器 docker start 容器ID或者容器名字
重启容器 docker restart 容器id或者容器名字
停止容器 docker stop 容器id或者容器名字
强制停止容器 docker kill 容器id或者容器名字

docker rm 删除已经停止的容器

在大部分场景下,我们希望docker的服务是在后台运行的,我们可以通过-d指定容器的后台运行模式。
docker run -d 容器名
redis前后台启动演示case:前台交互式启动-docker run -it redis:6.0.8 后台守护式启动-docker run -d reids:6.0.8

重新进入正在运行的容器并且以命令行交互:
docker exec -it 容器ID bashShell (exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止)
重新进入 docker attach 容器ID(attach直接进入容器中启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止)

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

导入导出容器
export 导出容器内容作为一个tar归档文件【对应import命令】
import 从tar包中的内容创建一个新的文件系统再导入镜像【对应export】
案例:
docker export 容器ID > 文件名.tar
cat 文件名.tar | docker import-镜像用户/镜像名:镜像版本号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值