【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:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网页转文件下载工具

为了更快捷copy博客 做了个 网页转文件下载工具 1.0.1 更新如下&#xff1a; javaphpjava提供页面转换文件的微服务APIphp调用接口&#xff0c;输出文件下载支持网页转md 1.0.2 更新如下&#xff1a; 样式表切换&#xff0c;白天or黑夜&#xff0c;cookie七天保质期 未…

使用 create-react-app 创建 react 应用

一、创建项目并启动 第一步&#xff1a;全局安装&#xff1a;npm install -g create-react-app 第二步&#xff1a;切换到想创建项目的目录&#xff0c;使用命令create-react-app hello-react 第三步&#xff1a;进入项目目录&#xff0c;cd hello-react 第四步&#xff1a;启…

Java技术栈 —— Hadoop入门(二)

Java技术栈 —— Hadoop入门&#xff08;二&#xff09; 一、用MapReduce对统计单词个数1.1 项目流程1.2 可能遇到的问题1.3 代码勘误1.4 总结 一、用MapReduce对统计单词个数 1.1 项目流程 (1) 上传jar包。 (2) 上传words.txt文件。 (3) 用hadoop执行jar包的代码&#xff0c;…

RNN预测下一句文本简单示例

根据句子前半句的内容推理出后半部分的内容&#xff0c;这样的任务可以使用循环的方式来实现。 RNN&#xff08;Recurrent Neural Network&#xff0c;循环神经网络&#xff09;是一种用于处理序列数据的强大神经网络模型。与传统的前馈神经网络不同&#xff0c;RNN能够通过其…

32GPIO输入LED闪烁蜂鸣器

一.GPIO简介 所有的GPIO都挂载到APB2上&#xff0c;每个GPIO有&#xff11;&#xff16;个引脚 内核可以通过APB&#xff12;对寄存器进行读写&#xff0c;寄存器都是32位的&#xff0c;但每个引脚端口只有&#xff11;&#xff16;位 驱动器用于增加信号的驱动能力 二.具体…

【Go】深入理解 Go map:赋值和扩容迁移 ①

文章目录 map底层实现hmapbmap map hash冲突了怎么办&#xff1f; map扩容触发扩容时机扩容小结为什么map扩容选择增量&#xff08;渐进式扩容&#xff09;&#xff1f;迁移是逐步进行的。那如果在途中又要扩容了&#xff0c;怎么办&#xff1f; map翻倍扩容原理 map写入数据内…

数据库查询3

目录 1. 多表查询 1.1.1 介绍 1.1.2 分类 1.2 内连接 1.3 外连接 1.4 子查询 1.4.1 介绍 1.4.2 标量子查询 1.4.3 列子查询 1.4.4 行子查询 1.4.5 表子查询 2. 事务 2.1 操作 2.2 四大特性 数据库总结2 数据库总结1 1. 多表查询 1.1.1 介绍 多表查询&#xff…

研发日记,Matlab/Simulink避坑指南(七)——数据溢出钳位Bug

文章目录 前言 背景介绍 问题描述 分析排查 解决方案 总结归纳 前言 见《研发日记&#xff0c;Matlab/Simulink避坑指南(二)——非对称数据溢出Bug》 见《研发日记&#xff0c;Matlab/Simulink避坑指南(三)——向上取整Bug》 见《研发日记&#xff0c;Matlab/Simulink避坑…

C语言第十一弹---函数(下)

​ ✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 函数 1、嵌套调用和链式访问 1.1、嵌套调用 1.2、链式访问 2、函数的声明和定义 2.1、单个文件 2.2、多个文件 2.3、static 和 extern 2.3.1、static…

【自然语言处理】【深度学习】文本向量化、one-hot、word embedding编码

因为文本不能够直接被模型计算&#xff0c;所以需要将其转化为向量 把文本转化为向量有两种方式&#xff1a; 转化为one-hot编码转化为word embedding 一、one-hot 编码 在one-hot编码中&#xff0c;每一个token使用一个长度为N的向量表示&#xff0c;N表示词典的数量。 即&…

dos攻击与ddos攻击的区别

①DOS攻击&#xff1a; DOS&#xff1a;中文名称是拒绝服务&#xff0c;一切能引起DOS行为的攻击都被称为dos攻击。该攻击的效果是使得计算机或网络无法提供正常的服务。常见的DOS攻击有针对计算机网络带宽和连通性的攻击。 DOS是单机于单机之间的攻击。 DOS攻击的原理&#…

【GitHub项目推荐--常见的国内镜像】【转载】

由于国内网络原因&#xff0c;下载依赖包或者软件&#xff0c;对于不少互联网从业者来说&#xff0c;都有不小的挑战&#xff0c;时间浪费在这上边&#xff0c;实在可惜。这个项目介绍了常见依赖&#xff0c;软件的国内镜像&#xff0c;助力大家畅爽编码。 这是一个归纳梳理类…

C# 将HTML网页、HTML字符串转换为PDF

将HTML转换为PDF可实现格式保留、可靠打印、文档归档等多种用途&#xff0c;满足不同领域和情境下的需求。本文将通过以下两个示例&#xff0c;演示如何使用第三方库Spire.PDF for .NET和QT插件在C# 中将Html 网页&#xff08;URL&#xff09;或HTML字符串转为PDF文件。 HTML转…

【C语言/数据结构】排序(选择排序,推排序,冒泡排序)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​​​​ 目录 选择排序 选择排序 ​编辑…

js实现动漫拼图2.0版

比较与1.0版&#xff0c;2.0版就更像与华容道类似的拼图游戏&#xff0c;从头到尾都只能控制白色块移动&#xff0c;而且打乱拼图和求助的实现与1.0都不相同 文章目录 1 实现效果2 实现思路2.1 打乱拼图2.2 求助功能2.3 判赢 3 代码实现 js实现动漫拼图1.0版 https://blog.csdn…

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-菜单管理实现

锋哥原创的SpringbootLayui python222网站实战&#xff1a; python222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火…

cmake-find_package链接第三方库

文章目录 基本调用形式和模块模式使用方式 之前我们是使用了绝对路径来链接OpenCV第三方库&#xff0c;但是现在很多库一般会自己写一些cmake文件提供给用户&#xff0c;用户可以直接使用其中的内置变量即可。使用的命令就是find_package。 基本调用形式和模块模式 find_packa…

【RTP】webrtc 学习2: webrtc对h264的rtp打包

切片只是拷贝帧的split的各个部分到新的rtp 包的封装中。并没有在rtp包本身标记是否为关键帧FU-A 切片 输入的H.264 数据进行split :SplitNalu SplitNalu : 按照最大1200字节进行切分 切分后会返回一个数组 对于FU-A :split的数据总大小是 去掉一个字节的nalu header size …

实战 | OpenCV+OCR实现弧形文字识别实例(详细步骤 + 源码)

导 读 本文主要介绍基于OpenCV+OCR实现弧形文字识别实例,并给详细步骤和代码。源码在文末。 背景介绍 测试图如下,目标是正确识别图中的字符。图片来源: https://www.51halcon.com/forum.php?mod=viewthread&tid=6712 同样,论坛中已经给出了Halcon实现代码,…

1948-2022年金融许可信息明细数据

1948-2022年金融许可信息明细数据 1、时间&#xff1a;1948-2022年 2、来源&#xff1a;银监会&#xff08;银监会许可证发布系统&#xff09; 3、指标&#xff1a;来源表、机构编码、机构名称、所属银行、机构类型、业务范围、机构住所、地理坐标、行政区划代码、所属区县、…