Docker入门介绍

news2024/11/15 21:44:39

一、Docker介绍

1、Docker是什么?

在这里插入图片描述
Docker ,翻译过来就是码头工人.

虚拟化容器技术。Docker基于镜像,可以秒级启动各种容器。每一种容器都是一个完整的运行
环境,容器之间互相隔离。
在这里插入图片描述

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙盒机制,相互之间不会存在任何接口。几乎没有性能开销,可以很容易的在机器和数据中心运行。最重要的是,他们不依赖于任何语言、框架或者包装系统。

2、Docker容器技术与虚拟机的区别

相同点 :docker和容器技术和虚拟机技术,都是虚拟化技术。
不同点
虚拟机技术:
在这里插入图片描述
容器技术:
在这里插入图片描述
通过图片,我们很明显的看到容器少了一层Guest OS,也就是少了虚拟机操作系统这一层,所以docker效率比虚拟机效率高。达到了秒级启动的地步。

docker相较于VM的优点:
1、比VM小、快,Docker容器的尺寸减小相比于整个虚拟机大大简化了分布
到云和分发时间的开销。Docker启动一个容器实例时间仅仅需要几秒钟。

2、Docker是一个开放的平台,构建、发布和运行分布式应用程序。

3、开发人员不需要关系具体是哪个Linux操作系统

4、Google、微软(azure)、亚马逊、IBM等都支持docker。

5、Docker支持Unix/Linux操作系统,也支持Windows和Mac。

Docker局限性:
Docker用于应用程序时是最有用的,但并不包含数据。日志、数据库等通常放在Docker容器外。一个容器的镜像通常都很小,不用和存储大量数据,存储可以通过外部挂载等方式使用,比如:NFS、ipsan、MFS等 ,或者docker命令 ,-v映射磁盘分区。
总之,docker只用于计算,存储交给别人。

3、通过docker架构图初步了解docker

在这里插入图片描述
这里简单给大家介绍一下docker的工作流程。
工作流程:
1、启动docker
2、下载镜像到本地
3、启动docker容器实例

Docker核心技术:
1、Namespace —> 实现Container的进程、网络、消息、文件系统和主机名的隔离。
2、Cgroup —> 实现对资源的配额和调度。
注意:Cgroup的配额,可以指定实例使用的CPU个数,内存大小等。

二、Docker安装

我这里在虚拟机VMware的linux上安装,参考官方文档

1、安装过程

先卸载之前安装的Docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

这里由于我没有安装任何的Docker,所以显示如下:
在这里插入图片描述
在安装Docker之前需要先安装一些工具包

sudo yum install -y yum-utils
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

会显示加载了几个插件
在这里插入图片描述
后面就利用下面开始安装Docker

sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

出现下列显示
在这里插入图片描述
一路y,知道安装完成。

开启Docker

sudo systemctl start docker

测试Docker

sudo docker run hello-world

此命令下载测试图像并在容器中运行它。当容器运行时,它会打印一条消息并退出。
在这里插入图片描述

2、Docker加速器

为了加快从Dockerhub里面加快下载一些镜像,这里我们用一下阿里云的镜像加速器,来加快从Dockerhub里面下载镜像的速度,以减少下载的等待时间。
步骤:
登录自己的阿里云账户,找到控制台(左上角)->容器镜像服务->镜像工具(镜像加速器)->拉到下面,找到对应操作系统的操作文档,按照操作执行一下。我这里用的CentOS作为例子:
在这里插入图片描述

3、Docker安装MySQL

下载镜像文件

sudo docker pull mysql:5.7

如果mysql不加版本号,会下载最新的。
相对应的版本号(TAG),可以看dockerhub-mysql,如下图:
在这里插入图片描述

创建实例并启动:

docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

参数说明:

  • -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
  • -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机
  • -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
  • -v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机
  • -e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码

如何看自己的images里面已经成功加入,可以利用命令:

sudo docker ps

成功截图:
在这里插入图片描述

docker容器文件挂载与端口映射

在这里插入图片描述
上面创建了MySQL容器在linux主机里面,但是由于一些信息需要进入到linux系统里面的MySQL容器里面更改,例如相关配置信息或者查询日志信息,就比较麻烦。所以将linux里面建立一些文件和MySQL里面的文件进行挂载,例如图中在linux系统里面建立 /mydata/mysql/log 和 MySQL容器里面 /var/log/mysql 文件建立联系,并且也和linux的端口3306和MySQL的3306建立联系,访问linux的3306端口就是在访问MySQL的3306端口。
在这里插入图片描述
如上图,我们可以在linux的系统里面去修改mysql的配置信息。
我们开始配置MySQL的配置信息:

vi /mydata/mysql/conf/f/my.cnf

#下面为MySQL的字符码配置信息
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci' 
init_connect='SET NAMES utf8' 
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

然后重启MySQL

sudo docker restart mysql

之后我们可以去查看我们在MySQL容器内部修改的文件内容:
我们修改的文件在linux内部是:/mydata/mysql/conf/f/my.cnf
MySQL相对应的是:/etc/mysql/my.cnf
在这里插入图片描述
可以发现里面的内容和上面自己修改的内容一致。
证明Docker文件挂载成功!!!

4、Docker安装Redis

按照上述办法进行同样的Redis安装。
下载Redis

docker pull redis

默认为下载最新的,如果需要其他相对应的版本,参考Dockerhub-redis文档

进行创建实例并启动,开始文件挂载

docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf`在这里插入代码片`

但是这里面有个小bug,由于redis里面只有/tec/redis,并没有redis.conf,所以没有办法将Linux
的/mydata/redis/conf/f/redis.conf 和redis容器里面的redis.conf进行挂载,所以需要先创建redis.conf,命令:

mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf

由于现在redis只是链接内存,没有持久化,所以利用命令:

docker exec -it redis redis-cli

进入redis之后,输入

set aa bb 
get aa

在这里插入图片描述
然后重启redis,会出现之前set aa的值消失,因此需要进行redis aop持久化,那么就需要修改redis的配置信息。
命令:

vi /mydata/redis/conf/redis.conf

插入:appendonly yes
保存即可。

参考文章:
docker入门,这一篇就够了。
docker入门(利用docker部署web应用)
Docker删除镜像和容器

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

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

相关文章

Ubuntu Linux基本操作+安装工具+安装ROS+g++编译+Cmake

Ubuntu Linux基本操作安装工具安装ROSg编译Cmake 1、进入到根目录 cd /2、回到当前工作空间 cd ~3、查看目录中的内容 lsll4、创建文件夹 mkdir 1235、删除文件夹 rm -rf 123/这里我们在输入要删除的文件夹名时,可以通过按tab键快速补全对应的文件夹名。 按两…

【寒假每日一题】洛谷 P1838 三子棋I

题目链接:P1838 三子棋I - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 小a和uim喜欢互相切磋三子棋。三子棋大家都玩过是吗?就是在九宫格里面OOXX(别想歪了),谁连成3个就赢了。 由于小a比较愚蠢&#xf…

《信号与系统实验》实验 3:信号时域抽样和恢复

文章目录 实验内容实验1:抽样定理验证实验f(t)间隔0.5s间隔1s间隔2s验证抽样定理实验2:信号恢复实验间隔0.5s间隔1s间隔2s抽样间隔对于信号恢复过程的影响DAC一阶保持器总结实验内容 实验1:抽样定

HTTPS协议的原理 --- RSA密钥协商算法

目录 一、TLS握手过程 二、RSA密钥协商握手过程 TLS第一次握手 TLS第二次握手 TLS第三次握手 TLS第四次握手 数字证书和CA机构 数字证书签发和验证流程 三、RSA 算法的缺陷 DH 密钥协商算法 一、TLS握手过程 上图简要概述来 TLS 的握手过程,其中每一个「框…

Morris遍历

1、引入 二叉树的遍历 递归实现的方式: public static class Node {public int value;Node left;Node right;public Node(int data) {this.value data;} }//每个节点都是被有限次访问,时间复杂度O(N),因为每次递归都要存储返回信息&#…

hadoop 集群搭建(详细版)

hadoop 集群搭建更改主机名映射设置免密同步时间创建工作目录下载jdk安装配置Hadoop修改配置文件向其他节点分发配置完成的程序为Hadoop添加环境变量启动集群初始化启动集群web页面web页面:[hdfsweb页面](http://192.168.88.128:9870/)web页面:[yarnweb页面](http://192.168.88…

3.0、Linux-常用目录、文件基本命令

3.0、Linux-常用目录、文件基本命令 命令:ls(列出目录) ls 命令在 Linux 中是常常被使用到的,因为 Linux 不像 Windows有可视化的界面; -a 参数:all ,查看全部的文件,包括隐藏文件&…

【免杀前置课——Windows编程】二十三、内存管理—堆内存管理、虚拟内存管理、文件映射、共享内存、不依靠临界区限制文件多开、DLL注入

内存管理—堆文件映射***文件映射的概念:***共享内存文件多开限制新思路DLL注入远程线程注入远程线程注入.exetest.dll文件映射 文件映射的概念: 文件映射(Mapping)是一种将文件内容映射到进程虚拟内存的技术。 映射成功的文件可以用视图,来引用这段内存,从而达到…

中科易安联网智能门锁2022年度总结

时光如梭,步履不辍。在这繁忙而又充实的一年,中科易安从提升服务、优化产品、扩展市场的维度发力,通过扎实的努力、不懈的勤勉,圆满地完成了2022年的工作。接下来,中科易安将为媒体、友商、用户朋友们呈现中科易安2022…

通过Lambda表达式 简单体验一下java方法引用

观看本文前 您需要先掌握 Lambda表达式 如果您之前没有接触过 可以先查看我的文章 java Lambda概念 通过实现线程简单体验一下Lambda表达式 java Lambda表达式的标准格式及其前提带有(代码演示) 然后 我们用 Lambda表达式 写在里面的其实就是一种解决方案 拿参数做操作 那么 …

Qss文件设置Qt界面风格

需要协商才能修改软件界面的风格,所以要留出通用的接口,于是选择使用QSS文件设置软件风格。 一、创建Qss文件 直接创建以.qss为后缀的文件 二、Qt使用Qss文件有两种办法 1、第一种办法,添加资源文件.qrc,然后在qrc文件中添加qss文…

【云边有个小卖部】

童年就像童话,这是他们在童话里第一次相遇。 那么热的夏天,少年的后背被女孩的悲伤烫出一个洞,一直贯穿到心脏。 刘十三被欺负得最惨,却想保护凶巴巴的程霜。 每当她笑的时候,就让他想起夏天灌木丛里的萤火虫&#xff…

Tic-Tac-Toe有多少种不同棋局和盘面状态(python实现)

目录 1. 前言 2. 如何去重? 3. 代码实现 3.1 对称等价判断 3.2 find_neighbor()改造 3.3 主程序及运行结果 4. 延申思考 1. 前言 在前两篇博客中实现了遍历搜索所有的Tic-Tac-Toe的棋局的python程序实现。 Tic-Tac-Toe可能棋局搜索的实现(python…

【Java寒假打卡】Java基础-多态

【Java寒假打卡】Java基础-多态概述多态中成员访问的特点多态的好处和弊端多态中转型多态中转型存在的风险概述 同一个对象在不同时刻表现出来的不同形态 多态的前提和体现 有继承/实现关系有方法重写。子类对父类进行方法重写有父类引用指向子类对象 package com.hfut.edu.…

【阶段二】Python数据分析NumPy工具使用02篇:数组的基本属性与数组的数据获取

本篇的思维导图: 数组的基本属性 NumPy数组的基本属性主要包括数组的形状、大小、类型和维数。 描述 代码 结果

Zookeeper详解(一)——基础介绍

概念 zookeeper官网:https://zookeeper.apache.org/ 大数据生态系统里的很多组件的命名都是某种动物或者昆虫,比如hadoop就是 🐘,hive就是🐝。zookeeper即动物园管理者,顾名思义就是管理大数据生态系统各…

Linux 系统调用的本质

简单概念 fd #include <unistd.h> #include <string.h>int main(int argc,char* argv[]) {char buf[20]{0};read(0,buf,15);write(1,buf,strlen(buf));return 0; }如果想查看某个系统编程的接口&#xff0c;比如想查看 open 函数的用法&#xff0c;可以这样操作…

Python调用C++代码用法——Linux

目录 前言 C/C动态共享库编译 ctype模块 ctype数据类型 使用案例 float数据 指针 结构体及结构体指针 numpy图像当作指针传入 参考资料&#xff1a; 前言 在项目开发中&#xff0c;有时会使用到多种编程语言&#xff0c;比如部分功能是C/C代码实现的&#xff0c;而另一…

《机器学习与应用》实验二:BP神经网络实验

文章目录 一、实验目的二、实验原理BP算法的数学描述三、程序四、实验结论一、实验目的 1、 熟悉MATLAB中神经网络工具箱的使用方法; 2、 通过在MATLAB下面编程实现BP网络逼近标准正弦函数,来加深对BP网络的了解和认识,理解信号的正向传播和误差的反向传递过程。 二、实验…