当前位置:首页 » 《随便一记》 » 正文

docker入门教程

15 人参与  2023年05月07日 09:21  分类 : 《随便一记》  评论

点击全文阅读


Docker是一个开源的应用容器引擎,基于Go语言开发,Docker可以打包应用及其依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的系统。
docker相关资源:

Docker 官方主页: https://www.docker.comDocker 官方博客: https://blog.docker.com/Docker 官方文档: https://docs.docker.com/Docker Hub: https://hub.docker.com

Docker架构

来源:菜鸟教程
图片来源:Docker 架构

镜像(Image):Docker镜像(Image),相当于时一个root文件系统。比如Ubuntu镜像就包含了完整的一套Ubuntu最小系统的root文件系统。容器(Container):独立运行的一个或一组应用,是镜像运行后的进程,镜像和容器类似于面向对象程序设计种的类和对象,镜像是静态的定义(比如类),容器时镜像运行时的实体(对象)。容器可以被创建、启动、停止、删除、暂停等。仓库(Respository):可以看成一个代码控制中心,用来保存镜像。官方在Docker Hub提供了庞大的镜像集合供使用,也可以自己上传镜像

Docker与虚拟机的区别:

容器与容器之间只是进程的隔离,虚拟机是完全的资源隔离(容器虚拟化的是操作系统,虚拟机虚拟化的是硬件)虚拟机的启动需要的时间是分钟级别,Docker启动是秒级甚至更短容器使用宿主操作系统的内核,只能运行在同一类型操作系统,虚拟机使用完全独立的内核,可以运行不同操作系统

安装

Docker可以运行在MAC、Windows、CentOS、Ubuntu等操作系统上,官网:https://www.docker.com/
网上有很多安装教程,尽量在linux系统上安装使用。
安装成功后,可以通过docker -v命令查看安装是否成功

> docker -vDocker version 20.10.11, build dea9396

Docker基本命令

服务相关命令

命令描述
systemctl start docker启动docker服务
systemctl stop docker停止docker服务
systemctl restart docker重启docker服务
systemctl status docker查看docker服务状态,启动中:active (running)、停止状态:inactive (dead)
systemctl enable docker设置开机启动docker服务

在这里插入图片描述

镜像相关命令

命令描述
docker images查看本地所有的镜像
docker search 镜像名称从 Docker Hub 查找需要的镜像
docker pull 镜像名称[:版本号]从Docker Hub(仓库)下载指定版本镜像到本地,如果版本号未指定,则默认下载最新的版本。
docker rmi 镜像id
docker rmi 镜像名称[:版本号]
根据镜像id或镜像名称+版本号(若版本号未输,默认是latest)删除指定镜像
docker save 镜像名称:版本>路径/xxx.tar将指定镜像导出到指定路径下(文件后缀为rar)
docker load<文件路径将指定镜像文件导入到系统中
docker tag 原镜像名称:版本 新镜像名称:新版本
docker tag 镜像id 新镜像名称:新版本
标记本地镜像为新镜像名称、新版本(不会修改原有的镜像)
docker history 镜像名称查看指定镜像的创建历史

docker images

命令:docker images [OPTIONS]
描述:列出本地镜像
输出结果字段说明:

REPOSITORY: 镜像名称TAG:镜像版本号IMAGE ID:镜像在本地的idCREATED:镜像在官方被创建的日期SIZE:镜像大小

在这里插入图片描述

docker search

命令:docker search 镜像名称
描述:从 Docker Hub 查找需要的镜像
输出结果字段说明:

NAME: 镜像仓库源的名称DESCRIPTION: 镜像的描述OFFICIAL: 是否 docker 官方发布,若显示为[OK]表示是官方提供的镜像STARS: 类似 Github 里面的 star,表示点赞、喜欢的意思。AUTOMATED: 自动构建。

在这里插入图片描述

docker pull

命令:docker pull 镜像名称[:版本号]
描述:从 Docker Hub 拉取指定的镜像到本地

在这里插入图片描述

docker rmi

命令:

根据镜像id删除:docker rmi 镜像id根据镜像名称和版本号(默认为latest)删除:docker rmi 镜像名称[:版本号]

描述:rmi(remove images的缩写)删除指定的镜像
注意:如果镜像名称一样,版本号一个是latest,一个是具体的版本号,如果具体的版本号就是最新的,则2个镜像的镜像id是一样的,这个时候使用镜像id删除会失败,这个时候就只能使用镜像名称+版本号的方式去删除指定的镜像。

在这里插入图片描述
在这里插入图片描述
也可以批量删除镜像(需要跟docker images -q结合使用),命令行格式为:
docker rmi `docker images -q redis`
在这里插入图片描述

docker save

命令:docker save 镜像名称:版本>路径/xxx.tar
描述:将指定镜像导出到指定路径下(文件后缀为rar)
注意:文件对应的路径必须是已经存在的,路径不存在的话会失败

在这里插入图片描述

docker load

命令:docker load<文件完整路径(包含文件名)
描述:将指定镜像文件导入到系统中

在这里插入图片描述

docker tag

命令:

按照镜像名称和版本:docker tag 原镜像名称:版本 新镜像名称:新版本按照镜像id:docker tag 镜像id 新镜像名称:新版本
描述:标记本地镜像为新镜像名称、新版本

在这里插入图片描述
从结果来看,docker tag并没有将原有的内容进行修改(IMAGE ID)一样,相当于是复制了个镜像

docker history

命令:docker history 镜像名称
描述:查看指定镜像的创建历史

在这里插入图片描述

容器相关命令

命令描述
docker ps查看正在运行的容器
docker run [option] --name=容器名称 本地镜像名称:镜像版本 [待执行命令]创建并启动容器,且自动执行待执行命令
docker exec 参数 容器名称或容器id 待执行命令进入容器(后面退出容器,容器不会关闭)
docker start/restart/stop/kill 容器名称或容器id启动/重启/停止/杀掉 容器
docker pause/unpause 容器名称或容器id暂停容器运行
docker rm 容器名称或容器id删除容器
docker inspect 容器名称或容器id查看容器元信息
docker top 容器名称或容器id查看容器中运行的进程信息
docker stats 容器名称或容器id查看容器占用资源情况
docker cp 本地路径 容器id:路径
docker cp 容器id:路径 本地路径
将本地路径内容拷贝到指定容器的指定路径下
将指定容器的指定路径内容拷贝到本地指定路径
docker logs [option] 容器名称或容器id查看指定容器的日志

docker ps

命令:docker ps或docker ps -a
描述:查看正在运行的容器
结果字段说明

CONTAINER ID:容器IDIMAGE:镜像COMMAND:创建容器时执行的命令(比如docker run时在命令末尾的内容)CREATED:容器创建时间STATUS:容器运行状态PORTS:网络访问端口NAMES:容器名称

在这里插入图片描述

docker run

命令:docker run [option] --name=容器名称 镜像名称:镜像id 待执行命令
option常用参数:

-i:以交互模式运行容器,通常与 -t 同时使用,使用it这2个参数后,容器创建后自动进入容器中,推出容器后,容器自动关闭。-t:为容器重新分配一个伪输入终端,通常与-i同时使用-d:以守护(后台)模式运行容器,并返回容器ID。创建一个容器在后台运行,需要使用docker exec进入容器,退出后容器也不会关闭–name:为创建的容器命名
描述:创建并启动容器,并在容器中自动执行指定的一条命令

在这里插入图片描述

docker start/restart/stop/kill

命令:docker start/restart/stop/kill 容器名称或容器id
描述:启动/重启/停止/杀掉 容器

在这里插入图片描述

docker pause/unpause

命令:docker pause/unpause 容器名称或容器id
描述:暂停容器运行

在这里插入图片描述

docker rm

命令:docker rm 容器名称或容器id
选项:

-v:删除容器后,会去查看关联的卷(数据卷容器类型的)是否不在使用中了,如果不在使用中,则将卷同步删除
描述:删除容器(需要停止容器再删,运行状态的会删除失败)

在这里插入图片描述
在这里插入图片描述

docker inspect

命令:docker inspect 容器名称或容器id
描述:查看容器元信息

在这里插入图片描述

docker top

命令:docker top 容器名称或容器id
描述:查看容器中运行的进程信息
输出结果字段说明:

PID:进程的进程号PPID:父进程进程号C、%CPU:cpu使用率STIME:进程启动时的系统时间TTY:进程启动时终端设备,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。TIME:运行进程需要的累积CPU时间CMD:启动程序名称或命令

在这里插入图片描述

docker stats

命令:docker stats 容器名称或容器id
描述:查看容器占用资源情况

在这里插入图片描述
输入docker stats命令,回车后,出现如下界面:
在这里插入图片描述
之后可以Ctrl+C退出当前界面

docker cp

命令:docker cp 路径1 路径2
描述:将路径1的内容复制到路径2去。如果是表示某个容器的路径,则需要是容器id:容器名称:开头
注意:路径均为绝对路径

在这里插入图片描述

docker logs

命令:docker logs [option] 容器名称或容器id
描述:获取容器的日志
option参数说明

-f:跟踪日志输出–since:显示某个开始时间的所有日志-t:显示时间戳–tail:仅列出最新N条容器日志

在这里插入图片描述

docker exec

命令:docker exec 参数 容器名称或容器id 待执行命令
描述:在运行的容器中执行命令(exit命令退出容器后,容器不会关闭)
参数说明:

-d:分离模式(在后台运行)-i:保持STDIN打开-t:分配一个伪终端

在这里插入图片描述

数据卷和数据卷容器

思考:

Docker容器删除后,容器中产生的数据也会随之销毁(数据非持久化)Docker容器和外部机器不能可以直接交换文件(不能直接,那就间接)容器之间想要进行数据交互(不能直接,那就间接)

为了解决容器中的数据无法与其他机器、容器交互和持久保存的问题,Docker提供了数据卷。
数据卷:

数据卷时宿主机中的一个目录或文件当容器目录和数据卷目录绑定后,对方的修改会立即同步(即容器和数据卷数据同步更新)一个数据卷可以被多个容器同时挂载一个容器可以被挂载多个数据卷

数据卷作用:

容器数据持久化外部机器和容器间接通信容器之间数据交换

配置数据卷

在创建启动容器时,使用 -v参数 设置数据卷:

docker run … -v 宿主机目录(文件):容器内目录(文件)

注意事项:

目录必须时绝对路径如果目录不存在,会自动创建可以挂载多个数据卷

在这里插入图片描述
一个容器可以挂载多个数据卷
在这里插入图片描述

配置数据卷容器

如果某个容器想与数据卷容器共享数据,除了2者的数据卷是同一个的方法外,也可以设置一个数据卷容器,然后其他容器可以跟这个数据卷容器进行挂载。
在创建启动数据卷容器时,使用 -v参数 设置数据卷:

docker run … -v 容器内目录(文件)路径

在创建启动容器时,使用 –volumes-from 数据卷容器id或名称 挂载数据卷容器

docker run … --volumes-from 数据卷容器id或名称

在这里插入图片描述

docker volume命令

docker volume ls

格式:docker volume ls [option]
常用选项:

--filter dangling=true:只显示未使用中的卷

描述:查看全部数据卷容器信息(只展示数据卷容器的卷,主机的数据卷目录、文件或关联数据卷容器的容器均不被识别)

在这里插入图片描述
在这里插入图片描述

docker volume inspect

格式:docker volume inspect 卷名称
描述:查看卷详情

在这里插入图片描述

docker volume rm

格式:docker volume rm 卷名称
描述:删除对应的卷(如果卷还在使用中【被映射、挂载】,则删除失败)

在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/61280.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1