【Docker】快速入门手册

目录

1.概述

1.1.安装

1.2.阿里云镜像加速

1.3.运行原理

2.常用操作

2.1.帮助命令

2.2.镜像操作

2.3.容器操作

2.3.1创建、启动

2.3.2.退出、停止

2.3.3.进入交互式界面

2.3.4.守护式容器交互

2.3.5.查看

2.3.6.删除

2.3.7.拷贝

3.容器数据卷

3.1.概述

3.2.使用

4.数据卷容器

4.1.概述

4.2.使用

5.安装Mysql示例

6.处理命令找不到

7.DockerFile

7.1.示例解析

7.2.构建过程

7.3.指令

7.4.案例分析

案例一

案例二

8.推送镜像


1.概述

Docker是一个开源的应用容器引擎。

Docker的理念类似于Windows的镜像系统:

原生的Windows系统拿到手以后要安装一系列的东西,如果每个人拿到手都要重新安装会很麻烦,可以一个人安好一份完整的以后做出镜像系统,其他人直接拿来就用。

Docker支持将安装好的软件编译打包成镜像,其他服务器直接拿镜像来运行就可以。

运行的一个镜像就是一个容器。

Docker主机(host):安装了docker程序的机器。(docker是直接安装在系统之上的)

Docker客户端(client):就是一个客户端程序,连接docker主机,通过命令行或者其他工具来进行操作。

Docker仓库(registry):用来保存各种打包好的docker镜像。

Docker镜像(image):打包好的软件。

Docker容器(container):镜像启动后的实例称为一个容器。每一个镜像运行一次就会产生一个容器。容器是独立运行的一个或者一组应用。

仓库镜像容器是docker的三大要素

1.1.安装

Docker要求Linux的内核版本必须3.10

查看内核版本:uname –r

升级内核版本:yum update

安装docker依赖:yum install  -y epel-release

安装docker:yum install docker

启动docker:systemctl start docker

停止docker: systemctl stop docker

查看docker版本号:docker –v

开机自启docker:systemctl enable docker

配置文件: etc/sysconfig/  路径下名为docker的文件

1.2.阿里云镜像加速

1.3.运行原理

所有操作进程与守护进程打交道,守护进程负责创建一个个的docker容器来跑镜像。

2.常用操作

2.1.帮助命令

查看docker版本信息  docker version

查看docker详细信息  docker info

查看全部命令  docker  --help

2.2.镜像操作

docker的镜像都存在  docker hub上面

查找全部镜像:

docker search 镜像名

查找超过某star数的镜像:

docker search  镜像名  -f  stars=数量值

拉取镜像:

docker pull 镜像名  或者  docker pull 镜像名:tag(tag版本号,在hub上可以查找到)

不跟tag号,默认拉取latest版本。

查看当前操作系统中所有镜像:docker images

查看当前操作系统中的所有当前镜像的ID:image  -q

显示当前操作系统中的所有镜像的ID:image  -qa

删除镜像: docker rmi IMAGE ID(可以通过docker images看到)

删除镜像前要删除该镜像的所有容器才能删除镜像成功

2.3.容器操作

运行镜像就会产生一个容器

2.3.1创建、启动

1.创建容器

run命令会创建一个新的容器。

docker run [options] 镜像名 [command] arg

创建交互式容器:

交互式容器允许docker外的进程直接与docker内的容器进行交互

一般会it命令连用,给予交互式容器一个伪输入终端,以便进行交互。

创建后,会自动进入容器中的一个伪终端界面。

创建守护式容器:

守护式容器,即启动一根守护进程,docker外的进程不能直接与docker内的容器进行交互,而是通过守护进程交互,守护进程再与docker中的容器交互。

创建后,会打印容器ID,然后立即自杀!

原因是创建交互式进程的时候有个伪终端挂着,等待输入,使得容器一直处于一种被使用的状态,而守护式进程启动后,docker发现这个容器什么事儿都没做,因此直接kill掉。

2.启动容器

start命令会启动一个已有的容器。

docker start CONTAINER ID(可以通过docker ps-a命令查看)

2.3.2.退出、停止

退出容器

容器停止并退出:(在交互界面)exit

容器退出但不停止:ctrl+P+Q

停止容器

温柔停止(点关机键关机):

docker stop CONTAINER ID(可以通过docker ps-a命令查看)

强制停止(拔电源):

docker kill CONTAINER ID

2.3.3.进入交互式界面

docker attach 容器ID

2.3.4.守护式容器交互

在宿主机上使用:

docker exec -it 容器ID

-it会给出一个虚拟终端,但是此时不再是直接与容器交互。

而是通过exec指令与守护线程进行交互,守护进程再与容器进行交互。

2.3.5.查看

查看运行中的容器详细信息:docker ps

查看运行中的容器ID:docker ps -q

查看所有容器详细信息:docker ps  -a

查看所有容器ID:docker ps -qa

2.3.6.删除

一般删除:

要求容器处于停止状态。

docker rm CONTAINER ID

强制删除:

可以强制删除运行状态中的容器

docker rm -f CONTAINER ID

删除多个容器:

2.3.7.拷贝

将容器内的文件拷贝到容器外的宿主机上:

3.容器数据卷

3.1.概述

类似于redis的RDB和AOF

数据卷,即将容器内部的数据持久化到宿主机上,也可以将宿主机上的数据同步进容器中来。两边同时维护数据卷,数据卷的改动,对两边都生效。

3.2.使用

docker  run  –it  -v /宿主机绝对路径目录:/容器内目录  镜像名

文件夹不需要新建,执行该条指令后会自动在宿主机容器的对应路径下生成该文件夹

4.数据卷容器

4.1.概述

类似于redis的主从复制。某个容器挂载数据卷,其他容器通过挂载这个卷容器实现数据共享,直接挂载数据卷的这个容器称为数据卷容器。

4.2.使用

挂载数据卷容器要配合dockerfile来实现,主要是要使用dockerfile在数据卷容器中编写脚本,在脚本中声明挂载的数据卷有哪些。然后将数据卷容器打包成镜像,要使用数据卷容器的其他容器创建容器的时候直接就使用数据卷容器的镜像,这样创建出来的子容器才会挂载数据卷容器成功。

主要是因为要声明,挂载的数据卷关系,否则,即使挂载了节点,也不会挂载到父容器的数据卷。

构建数据卷容器镜像:

dockerfile的内容为:

数据卷容器挂载数据卷:

其他容器挂载数据卷容器:

5.安装Mysql示例

docker run

-p 3306:3306

--name mysql01

-v /mysql/conf:/etc/mysql/config.d

-v /mysql/logs:/logs

-v /mysql/data:/var/lib/mysql

-e MYSQL_ROOT_PASSWORD=admin

-d mysql:5.6

如果因为权限问题run失败,则加上--privileged=true来强制获得权限

docker run -p 3306:3306  --name mysql01 --privileged=true  -v /mysql/conf:/etc/mysql/config.d -v /mysql/logs:/logs  -v /mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=admin  -d mysql:5.6

处理navcat连接失败:

Docker MySql报2059错误: Authentication plugin 'caching_sha2_password' cannot be loaded_docker authentication plugin'caching-CSDN博客

navcat连接的时候注意先关闭Linux的防火墙!!!

<1> docker  start  mysql        进入MySql

<2> docker  ps  -a       查出自己创建的container(容器)的ID

<3> docker  exec  -it  63c9e29aelef  bash   (每个人创建的container ID都不一样)

<4> mysql  --user=root  --password

<5>  ALTER  USER  'root'  IDENTIFIED  WITH  mysql_native_password  BY  '1234567';  

6.处理命令找不到

处理vi或者vim命令找不到:

apt-get update

apt-get install vim

7.DockerFile

dockerFile,用来构建Docker镜像的构建文件,是一个由一系列命令和参数构成的脚本。

构建一个Docker镜像分为三步:

  1. dockerFile

编写一个dockerFile

  1. docker build

执行docker build指令

  1. run

运行镜像

7.1.示例解析

dockerFile是以键值对的方式指定的一组命令参数,格式为:

命令  参数

命令后必须带单数,空命令不合法。

from scratch:

继承scratch镜像,scratch是基础镜像,所有镜像只有继承了scratch才会成为一个镜像,类似于JAVA中的Object类。

maintainer:

作者信息,大家约定的格式是作者+邮箱

ADD:

LABEL:

标签,关于镜像的一些详细信息。

CMD:

设置镜像进来后的路径在哪儿。

即docker run -it XXX后进来的路径

7.2.构建过程

docker镜像的构建过程,即dockerFile的从上到下执行。dockerFile从上到下执行,每一条指令都会创建一个新的镜像层,并对镜像进行提交,执行的效果就会是从一个基础镜像开始对镜像进行层层封装,最后包装出一个大的镜像来。

7.3.指令

FROM:

FROM,指定父镜像,可以是基础镜像,也可以是其他镜像,反正本质上一定会是继承自基础镜像。

MAINTAINER:

镜像维护者的姓名和邮箱。

RUN:

RUN,构建时候额外需要运行的命令,这条指令是当前平台的指令,遇到RUN指令就会运行RUN后面该条指令。入一条Linux指令或者Windows指令,一般是用来在当前平台做一些资源或者权限的操作,比如创建文件夹,给文件夹进行权限限定等操作。

EXPOSE:

该镜像对外暴露的端口号。

WORKDIR:

指定在创建容器后,终端登录进来的默认路径,

如指定 /data 终端登录进来就会是在/data路径下。

ENV:

用来设置环境变量。

ADD、COPY:

将一些资源加入镜像中,

ADD会加载后并解压,COPY只会加载。

VOLUME:

用来建里容器数据卷。

CMD、ENTRYPOINT:

用来指定容器启动时需要运行的命令,这条命令是指当前平台的命令,如Linux的指令或者Windows的指令。

CMD可以允许存在多个,但是后面的会覆盖前面的,也就是说只有最后一个才有效。

ENTRUPOINT可以运行存在多个,后面的会追加到前面的去,也就是说会叠加生效。

ONBUILD:

指定当前镜像被继承时所触发的动作。

7.4.案例分析

案例一

docker hub上存在一个精简版的centos镜像,该镜像中的centos只有内核,没有其余任何功能,可以通过编写dockerFile对其进行二次打包,为其增加vim功能和net-tools中的功能。

编写完dockerFile后,使用docker的build指令来构建镜像:

-f 指定dockerFile的位置,-t指定构建后的镜像的名称和路径 . 表示当前路径。

案例二

该案例使用centOS为父镜像,为其加入tomcat、JDK,构成一个tomcat镜像。

该案例主要是为了展示ADD、COPY的作用。

8.推送镜像

推送镜像的前提是镜像要运行起来,因为推送的时候要使用到镜像的容器来向远端仓库上进行推送。

docker的推送和git的推送很像,都是commit然后push

commit:

push:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/354208.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux03 用户权限

01.三种权限 02.UGO&#xff08;root账号&#xff09; 查看权限 不在root文件中写&#xff0c;是因为其他用户不能进来 举个例子 ll是ls -l 第一部分&#xff1a;权限&#xff08;11个字节&#xff09; 第一个&#xff1a;d/- d表示文件夹 - 表示一般文件 二到四&#xff1a…

R语言学习case6:ggplot基础画图(Scatter散点图)

step1: 导入ggplot2库文件 library(ggplot2)step2&#xff1a;带入自带的iris数据集 iris <- datasets::irisstep3&#xff1a;查看数据信息 dim(iris)维度为 [150,5] head(iris)查看数据前6行的信息 step4&#xff1a;利用ggplot工具包绘图 plot1 <- ggplot(iris…

人工智能的圣杯:关于可解释AI(XAI)的一切

​​​​​​​ 在过去十年间&#xff0c;无数个人工智能解决方案在各大企业得到部署。 智能受众评测系统、智能财务合规系统、智能人员招聘系统&#xff0c;不一而足。 这期间&#xff0c;在企业客户却也始终存在一种怀疑态度&#xff1a;AI系统做出的产品部署是否真的值得…

初识人工智能,一文读懂机器学习之逻辑回归知识文集(6)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

QT之 QDebug 调试(一)

在QT中&#xff0c;进行调试&#xff0c;则需要在头文件地方加上 #include <QDebug> 加上之后&#xff0c;在编译之后则其输出的信息则在应用程序输出那里显示信息。 其QDebug 信息调试则如&#xff1a; qDebug() << " 需要插入的信息 "…

以太网交换基础VLAN原理与配置

目录 7.以太网交换基础 7.1.以太网协议 7.2.以太网帧介绍 7.3.以太网交换机 7.4.同网段数据通信全过程 8.VLAN原理与配置 8.1.VLAN的基本概念 8.2.VLAN的应用 7.以太网交换基础 7.1.以太网协议 以太网是当今现有局域网(Local Area Network,LAN)采用的最通用的通信协议…

【王道数据结构】【chapter2线性表】【P44t16】

设有一个长度为n&#xff08;n为偶数&#xff09;的不带头结点的单链表且结点值都大于0&#xff0c;设计算法求这个单链表的最大的孪生和。孪生和的定义为一个结点值与其孪生结点值的和&#xff0c;对于第i个结点&#xff08;从0开始&#xff09;&#xff0c;其孪生结点为第n-i…

【RT-DETR有效改进】EfficientFormerV2移动设备优化的视觉网络(附对比试验效果图)

前言 大家好&#xff0c;我是Snu77&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持Re…

【JaveWeb教程】(35)SpringBootWeb案例之《智能学习辅助系统》登录功能的详细实现步骤与代码示例(8)

目录 案例-登录和认证1. 登录功能1.1 需求1.2 接口文档1.3 思路分析1.4 功能开发1.5 测试 案例-登录和认证 在前面的课程中&#xff0c;我们已经实现了部门管理、员工管理的基本功能&#xff0c;但是大家会发现&#xff0c;我们并没有登录&#xff0c;就直接访问到了Tlias智能…

DS:带头双向循环链表的实现(超详细!!)

创作不易&#xff0c;友友们给个三连吧&#xff01;&#xff01;&#xff01; 博主的上篇文章介绍了链表&#xff0c;以及单链表的实现。 单链表的实现&#xff08;超详细&#xff01;&#xff01;&#xff09; 其实单链表的全称叫做不带头单向不循环链表&#xff0c;本文…

STP生成树协议实验

实验大纲 一、什么是生成树协议 二、生成树原理 1.STP工作原理 2.STP主要参数 3.STP根网桥 4.STP协议版本 三、实验 1.构建网络拓扑结构图 2.配置IP地址&#xff08;8台PC机&#xff09;&#xff1a;192.168.7.1~192.168.7.8 3.配置SW1 4.配置SW2 5.配置SW3 6.配置…

浪潮信息打造高效算力架构 为金融业数字化坚实基座

新时期&#xff0c;数据智能已经逐渐成为金融商业中的重要力量&#xff0c;构建更强大的算力系统&#xff0c;推动金融业务的高效发展&#xff0c;已经成为了金融行业的目标。对此&#xff0c;浪潮信息也为金融客户提供了崭新的解决方案。此前&#xff0c;某银行基于浪潮信息量…

第二模块 函数模块

第二模块 函数&模块 day09 文件操作相关1. 文件操作1.1 读文件1.2 写文件1.3 文件打开模式1.4 常见功能1.5 上下文管理练习题 2.csv格式文件3.ini格式文件4.XML格式文件4.1 读取文件和内容4.2 读取节点数据4.3 修改和删除节点4.4 构建文档 5.Excel格式文件5.1 读Excel5.1 写…

ESP32 SPIFFS文件系统

简介 本章涉及知识点&#xff1a;ESP32 SPIFFS文件系统、日志输出。 ESP-IDF版本&#xff1a;V5.1.2 源码 小智学长的源码&#xff1a;DesktopScreen 7 文件系统 系统配置 如果是自己构建的项目&#xff0c;如图。要在CMakeLists中配置上spiffs。 如果是直接跑官方例程则忽略系…

wireshark利用sshdump自身组件进行远程实时抓包过滤

引言 以前在不了解wireshark可以远程抓包的时间&#xff0c;经常通过tcpdump在远程linux主机将抓包文件保存下来后&#xff0c;然后拖拽入windows中再打开&#xff0c;进行分析查看。 此过程比较繁琐&#xff0c;也不够实时。比较常用的抓包动作是仅出现某特征的报文后&#…

手动导入jar包到Maven的解决方案(简单有效!)

想要导入一个jar包到项目中&#xff0c;这个jar包在Maven中没有可以尝试以下方式。 第一步 先找到你maven的本地仓库&#xff0c;我的仓库就在这里&#xff0c;你可以根据你安装的maven找到你的目录 第二步 根据坐标创建文件夹。 这个依赖modbus4j.jar&#xff0c;Maven远…

Cesium.js实现显示点位对应的自定义信息弹窗(数据面板)

博客&#xff1a;关于Cesium的常见需求整理之点位和弹窗&#xff08;点位弹窗&#xff09; 博客&#xff1a;cesium添加点、线、面、文字、图标、模型等标绘 零、相关技术选型&#xff1a; Vue2 Vuecli5 Cesium.js 天地图 一、需求说明 在使用2D地图&#xff08;天地图、高德…

微信小程序(二十一)css变量-定义页面主题色

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.使用css变量 2.消除按钮白块影响 3.修改图标样式 源码&#xff1a; npmTest.json {"navigationStyle": "custom","usingComponents": {//引入vant组件"van-nav-bar"…

低代码助力软件开发

随着企业对于低代码开发平台的需求日益增长&#xff0c;急需一个通用的解决方案来满足各种低代码平台的开发需求。正是在这种情况下&#xff0c;低代码引擎应运而生。 作为一种通用的开发框架&#xff0c;通过对低代码平台系统常用的功能进行解构&#xff0c;将其划分为多个功能…

2. HarmonyOS 应用开发 DevEco Studio 准备-2

2. HarmonyOS 应用开发 DevEco Studio 准备-2 首选项设置 中文设置 主题 字体 插件安装和使用 保存时操作 编辑器 工程树管理 代码树管理 标记 字符串可视化编辑 参考文档 常用快捷键 编辑 查找或替换 编译与运行 调试 其他 预览 页面预览 自定义组件预览 预览…