Docker简介

Docker简介

文章目录

  • Docker简介
    • 一、Docker
      • 1.什么是docker?
      • 2.容器引擎
      • 3.容器和虚拟机的区别
      • 4.namespace(命名空间)
      • 5.三大容器核心概念
        • 镜像
        • 容器
        • 仓库
    • 二、Docker镜像操作
      • 1.搜索镜像
      • 2.获取镜像
        • 镜像加速下载
      • 3.查看本地下载镜像
      • 4.获取镜像详细信息
      • 5.为本地镜像添加标签
      • 6.删除镜像
      • 7.存出镜像
      • 8.载入镜像
      • 9.上传镜像
      • 10.镜像操作总结
    • 三、Docker 容器操作
      • 1.容器创建
      • 2.查看容器的运行状态
      • 3.启动容器
      • 3.停止容器运行
      • 4.删除容器
      • 5.进入容器
      • 6.宿主机和容器数据的导入和导出
      • 7.容器的导出与导入
        • 导出格式
        • 导入格式
      • 8.创建并启动容器(docker run)
        • docker run 执行过程
        • 执行格式
        • docker run 执行过程
        • 执行格式

一、Docker

1.什么是docker?

docker是go语言开发的应用容器引擎,是用来运行容器里的应用,docker是管理镜像和容器的一种工具。

2.容器引擎

docker containerd podman rocket

3.容器和虚拟机的区别

指标 容器 虚拟机
内核 所有容器共享宿主机内核 每个虚拟机有单独的操作系统和内核
资源隔离 使用namespace进行资源隔离,通过cgroup限制容器的资源最大使用量 完全隔离,每个虚拟机有自己的独立硬件资源
启动速度 秒级 分钟级
性能损耗 容器相当于宿主机的进程,几乎无损耗 需要hypervisor虚拟机管理程序对宿主机资源虚拟访问,至少有20~50%资源损耗
单机容量 单机容量能够支持成百上千个容器 单机空量只能支持最多十几个虚拟机

Docker简介_第1张图片

4.namespace(命名空间)

类型 说明
MNT namespace 提供磁盘挂载点和文件系统的隔离能力
IPC namespace 提供进程间通信的隔离能力
USER namespace 提供用户隔离能力
NET namespace 提供网络隔离能力
UTS namespace 提供主机名隔离能力
PID namespace 提供进程隔离能力

5.三大容器核心概念

镜像

是创建容器的基础,也是一个只读的模板文件,里面包含容器中的应用程序所需要的所有内容(包含程序运行文件、配置文件、这行库文件、操作系统、依赖包 )

容器

是用镜像运行的实例,容器可以被创建、启动、停止、删除,每个容器之间默认是相互资源隔离的

仓库

是用来保存镜像的地方,有公有仓库和私有仓库之分

二、Docker镜像操作

1.搜索镜像

格式:docker search 关键字

Docker简介_第2张图片

2.获取镜像

格式:docker pull 仓库名称[:标签]

镜像加速下载

浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://qfh90gmo.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

Docker简介_第3张图片

3.查看本地下载镜像

docker images

--------------------------------------------------------------------------------------------
REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小;
--------------------------------------------------------------------------------------------

4.获取镜像详细信息

docker inspect 镜像id

Docker简介_第4张图片

5.为本地镜像添加标签

格式:docker tag 名称:[标签] 新名称:[新标签]
docker tag nginx:latest nginx:web

docker images | grep nginx

6.删除镜像

格式:
docker rmi 仓库名称:标签				#当一个镜像有多个标签时,只是删除其中指定的标签
或者
docker rmi 镜像ID号						#会彻底删除该镜像

注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。

Docker简介_第5张图片

7.存出镜像

格式:docker save -o 存储文件名 存储的镜像
docker save -o nginx nginx:web			#存出镜像命名为nginx存在当前目录下
ls -lh

8.载入镜像

#载入镜像:将镜像文件导入到镜像库中
格式:
docker load < 存出的文件
或者
docker load -i 存出的文件

docker load < nginx

Docker简介_第6张图片

9.上传镜像

默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。

docker tag nginx:latest soscscs/nginx:web		#添加新的标签时必须在前面加上自己的dockerhub的username
docker login								#登录公共仓库
Username:用户名
password:密码
docker push soscscs/nginx:web					#上传镜像

10.镜像操作总结

docker serach  镜像|仓库关键词      ##搜索镜像

docker pull  镜像                 ##拉取镜像

docker images                    ##查看本地镜像

docker rmi 镜像名|镜像id [-f]      ##删除镜像

docker tag 旧镜像名:旧标签 新镜像名:新标签  ##添加镜像标签

docker inspect  镜像名|镜像ID        ## 查看镜像详细信息

docker save -o  镜像文件 镜像名|镜像id  ##导出镜像

docker load -i 镜像文件               ##从镜像文件载入镜像(可以从其他主机导出镜像后,然后载入镜像)

docker login                         ##默认登陆公共仓库

docker push   仓库名/镜像名:标签        ##上传镜像到仓库

三、Docker 容器操作

1.容器创建

#容器创建:就是将镜像加载到容器的过程。
新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。

格式:docker create [选项] 镜像
常用选项:
-i:让容器开启标准输入接受用户输入命令
-t:让 Docker 分配一个伪终端 tty
-it :合起来实现和容器交互的作用,运行一个交互式会话 shell 

docker create -it nginx:latest /bin/bash | sh

2.查看容器的运行状态

docker ps -a			#-a 选项可以显示所有的容器

3.启动容器

格式:docker start 容器的ID/名称

3.停止容器运行

格式:docker stop 容器的ID/名称
格式:docker kill 容器的ID/名称

Docker简介_第7张图片

4.删除容器

docker rm 容器的ID/名称
docker rm [-f] (docker ps -a -q)  批量删除容器

Docker简介_第8张图片

5.进入容器

docker exec -it 容器名|容器ID bash/sh  ##进入容器分配一个伪终端,可以在里面操作,exit退出不会停止容器进程
docker attach  容器名|容器ID ##连接到正在运行的容器,共享容器屏幕显示,不能在里面操作,ctrlc退出默认会停止容器讲程

6.宿主机和容器数据的导入和导出

docker cp 容器ID:文件/目录的绝对路径  宿主机本地文件/目录   ##从容器将文件或目录导出到宿主机
docker cp 宿主机本地文件/目录     容器ID:文件/目录的绝对路径  ##从宿主机或目录将文件导入到容器中

Docker简介_第9张图片

7.容器的导出与导入

用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为容器快照文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。

导出格式

docker export 容器ID/名称 > 文件名

导入格式

cat 文件名 | docker import – 镜像名称:标签
docker import 容器模板文件 -- 容器镜像

Docker简介_第10张图片

8.创建并启动容器(docker run)

docker run 执行过程

检查本地是否有镜像(如果有则使用本地镜像创建容器,如果没有则从仓库拉取镜像再创建容器)
在只读的镜像层上挂载一层可读可写的容器层
从docker网桥给容器分配一个虚拟接口和IP地址给容器
使用镜像的默认命令或者指定的命令启动容器,直到容器主进程退出为止

执行格式

docker run [--name 容器名] [--rm  删除容器] [-it]  [-d 后台运行]  镜像名:标签  [容器启动命令]

器(docker run)

docker run 执行过程

检查本地是否有镜像(如果有则使用本地镜像创建容器,如果没有则从仓库拉取镜像再创建容器)
在只读的镜像层上挂载一层可读可写的容器层
从docker网桥给容器分配一个虚拟接口和IP地址给容器
使用镜像的默认命令或者指定的命令启动容器,直到容器主进程退出为止

执行格式

docker run [--name 容器名] [--rm  删除容器] [-it]  [-d 后台运行]  镜像名:标签  [容器启动命令]

Docker简介_第11张图片

你可能感兴趣的:(docker,容器,运维)