1-docker安装和配置、虚拟化、配置国内源、镜像操作、容器基本操作(run运行容器、-v目录映射、-p端口映射、容器其他操作)

news2024/12/23 10:18:47

1 docker和虚拟化
2 docker安装和配置
2.0 docker 中的一些概念
2.1 配置镜像加速器(国内源)
3 镜像操作

4 容器操作
4.1 容器基本操作
4.2 run运行容器
4.3 -v目录映射
4.4 -p端口映射
4.5 容器其他操作

1 docker和虚拟化

## 什么是虚拟化
 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破【实体结构间的不可切割的障碍】,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。

在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件  对资源充分利用

虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(vip)、桌面虚拟化、服务虚拟化、虚拟机等等。


# 什么是Docker
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 [GitHub](https://github.com/docker/docker) 上进行维护

# 就是虚拟化的一种,更轻量级
	如果使用虚拟机---》一台机器--》最多能运行 数量比较少的虚拟机
    如果使用docker--》一台机器---》可以运行出成千上百台docker容器
    
    
# 容器与虚拟机比较

在这里插入图片描述

2 docker安装和配置

# 在linux机器上安装
0 卸载docker
	yum remove docker docker-common  docker-selinux docker-engine
	rm -rf /var/lib/docker

1 yum 包更新到最新
	sudo yum update
	
2 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的.
	sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3 设置yum源为阿里云
	sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4 安装docker
	sudo yum install docker-ce
	
5 安装后查看docker版本
	docker -v

6 启动docker
	systemctl status docker  # 查看装填
	systemctl start docker   # 启动
	systemctl stop docker    # 停止



7 拉取镜像
	-cento7      docker pull centos:7
    -redis       docker pull redis
    -mysql5.7    docker pull mysql:5.7
    
    
8 查看本地镜像
	docker images
 

9 运行成容器:运行centos镜像成容器
	docker run -di --name=centos  centos:7

10 查看正在运行的容器
	docker ps
	docker ps -a

11 进入容器
	docker exec -it 容器id/bin/bash


2.0 docker 中的一些概念

# docker 是一个cs架构软件
	c端:客户端
    s端:服务端
    只是现在c和s都在同一台机器上

# 镜像(Images):一堆文件---》当成 虚拟机上有个ios文件,操作系统的文件[centos7.iso,windows10.iso]
	-镜像哪里来?目前是从远程仓库拉取的
# 容器(containers)
	-镜像运行---》得到容器---》以后就把容器当成一个可以使用的操作系统即可
    -一个镜像---》可以运行得到很多容器
# 远程仓库(Registry)
	-放着一个个镜像--》一堆文件
    
    
    
 # 镜像和容器的关系
	-跟  类  和   对象
    -一个类,可以产生很多对象,每个对象是一个独立个体

在这里插入图片描述

2.1 配置镜像加速器(国内源)

# 远程仓库在国外[python 下第三方模块:pypi上---》配置国内镜像站]
# 使用国内源,下载镜像时,速度会快---》阿里云
# 参照阿里云提供的笔记做:https://cr.console.aliyun.com/cn-shanghai/instances/mirrors


sudo mkdir -p /etc/docker # 如果有,就不需要创建了
vim /etc/docker/daemon.json 
# 加入
{
  "registry-mirrors": ["https://x1566319.mirror.aliyuncs.com"]
}
# 保存退出
sudo systemctl daemon-reload # 重新加载docker配置
sudo systemctl restart docker# 重启docker
# 国外docker 仓库:
https://hub.docker.com/
    
    
# 搜索想要找的镜像,找到固定版本

# 搜到后--》下载到本地
docker pull centos:centos7

3 镜像操作

# 1 查找镜像
	-从https://hub.docker.com/直接搜
    -使用命令:基本不用 docker search 名字
    
# 2 下载镜像
	docker pull 镜像名:版本号   # 官方有的的才能下下来,没有的找不到
    docker pull 镜像名  # 如果不写版本号,下最新
    
    docker pull mysql:5.7
    docker pull redis  
        
# 3 查看本地镜像
docker images  # 等同于 docker image ls
镜像名字      镜像标签    镜像id,以后通过id操作
REPOSITORY   TAG       IMAGE ID            CREATED       SIZE
centos       centos7   eeb6ee3f44bd        2 years ago   204MB


# 4 删除本地镜像
	docker rmi 7614ae94  # 等同于docker image rm 7614ae9453d1
    docker rmi idid号
    
    一次性把本地所有镜像都删除
    docker images -q  # 查询本地所有镜像,只列出 id号
    
    docker rmi `docker images -q`
    
 

# 总结:
	镜像是一堆文件---》有的叫redis,有的叫centos
    就把镜像当成---》一个操作系统内装了某个软件---》运行成容器--》就相当于这个操作系统上装了某个软件

在这里插入图片描述

4 容器操作

# 镜像是一堆文件
# 容器是由镜像 运行得到的---》运行得到后---》你就把一个个的镜像【当成】一个个虚拟机操作系统再运行即可


在这里插入图片描述

在这里插入图片描述

4.1 容器基本操作

# 把镜像运行成容器,并且一个镜像,可以运行出多个容器


# 查看正在运行的容器
	docker ps
# 查看所有容器
	docker ps -a
# 查看最后一次运行的容器
 	docker ps -l
    
# 启动停止的容器
	docker start id/名字

# 停止运行的容器
	docker stop 7d5e

# 停止所有在运行的容器
	docker stop `docker ps -q`
    
    
# 一次性删除所有容器
	docker rm `docker ps -a -q`
    
# 记住四条:
	docker ps
    docker ps -a
    docker start
    docker stop

4.2 run运行容器

#1 docker run 把镜像运行成容器
	-docker run 参数
    	-i 表示运行容器
        -d 以守护式容器在后台运行,用这个参数创建出来的容器,命令行还在宿主机上,没有进入到容器内部
        -t 表示容器启动后会进入容器命令行。加入这参数后,容器创建就能登录进去。即分配一个伪终端。
        --name 指定容器名字,如果不指定,会随机一个名字
        -p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
        -v 表示目录映射关系(前者是宿主机目录,后者是容器的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上
        
        
        
# 2 案例 -id
	docker run -id --name=centos centos:7  # 执行完,命令在宿主机上,可以通过命令查看正在运行的容器
        
# 3 案例  -it
docker run -it --name=centos centos:7 # 执行完,命令行在容器内,容器很干净,几乎啥软件都没有,可以exit退出到宿主机---》只要退出,容器就停了
    
# 4 创建一个python3.9容器---》不进入
	docker run -id --name=python python:3.9
        
        
# 5 启动一个centos容器并且进入,名字叫mycentos,在内部装个vim,然后退出


# 6 重点:
	如果创建容器并进入---》只要退出---》容器就停了
    容器要运行,必须有个前台进程在运行,并且是夯住(阻塞)的,否则容器就停了
    
# 7 进入到容器内部
	# 在容器内执行命令
	docker exec 容器名字/id  命令
    # 利用这个特性-->进入到容器内部
    docker exec -it 容器名字/id /bin/bash
    docker exec -it python sh
    # 退出,结束掉 /bin/bash
	exit

在这里插入图片描述

4.3 -v目录映射

# 运行出一个 centos77 容器,不进入, 做目录映射
# 把宿主机的 /root/lqz文件夹  映射到 容器内部的 /lqz文件夹
# -v可以写多个,可以是文件或文件夹
docker run -id -v /root/lqz:/lqz --name=centos77 centos:7


容器内部修改文件---》会影响外部

外部修改文件---》影响内部



# 目录映射好处是,后期咱们部署django项目
	1 有个django容器,做好映射,代码放在宿主机上即可,以后更新了代码,只要重启容器,代码就是最新了
    2 运行mysql容器---》mysql配置文件放在宿主机上做好映射
    	mysql容器---》表数据,放到容器中---》如果删了容器---》数据库全没了
    	表数据,放在宿主机上---》把容器删除---》表数据还在----》再启动一个容器做好映射---》数据都还在




4.4 -p端口映射

# -p参数:端口映射  容器中启动一个mysql5.7 --》容器中的3306监听,宿主机3306没人监听,做端口映射后,宿主机的3306就被docker的这个容器监听了

# 启动的mysql的root密码是123456

# 启动mysql容器  -p 宿主机端口:容器端口
# 以后台守护进程运行mysql容器,mysql的root用户密码是123456,宿主机和容器做了端口映射
docker run -id --name=mysql -p 3307:3306  -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

#  netstat -nlp |grep 3307 查看本机80端口占用情况
yum install net-tools -y

# 以后访问宿主机80端口就等于访问容器的3306端口

在这里插入图片描述

4.5 容器其他操作

# 启动容器
	docker start 容器id
# 停止容器
	docker stop 容器id

    
###mysql的容器底层的操作系统是 debian 装软件需要用 
apt-get update
apt-get install vim -y

# 文件拷贝(宿主机执行)
	# 容器的文件copy到宿主机上(不是在容器内执行)
    docker cp 容器名称:容器目录 需要拷贝的文件或目录
    docker cp  ae1759ad935:/lqz/xx.txt /root/xx.txt
    # 宿主机的文件copy到容器中
    docker cp 需要拷贝的文件或目录 容器名称:容器目录
    docker cp /root/yy.txt ae1759ad935:/lqz/yy.txt

        
        
        
# 查看容器IP地址    
	docker inspect 容器名称  # 查看容器的详细描述,很多
    docker inspect ae1759ad935 --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
    
    
# 在多个容器之间是可以ping通的(容器和宿主机也可以)
# centos:172.17.0.3
# mysql:172.17.0.2

    
# 删除容器(删除已停止的容器)
	docker rm 容器id  
    docker rm `docker ps -a -q`
    
    
    
# 无状态的服务(在容器中尽量运行无状态的服务)
    -mysql reids   有状态,运行过程中产生数据,保存,容器删除,数据就没了
    -uwsgi+django  无状态的服务
    
  
    

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

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

相关文章

数十亿美元商机!英国数字基础设施公司Equinix与法国量子计算公司Alice Bob 合作

​(图片来源:网络) 近日,全球数字基础设施公司Equinix宣布与全球领先的法国量子计算公司Alice & Bob合作,旨在共同开发市场上最为可靠的量子处理器之一。此次合作将使Equinix公司的客户通过使用Equinix Metal和Eq…

StarRocks Evolution:One Data,All Analytics

在 11 月 17 日举行的 StarRocks Summit 2023上,StarRocks TSC Member、镜舟科技 CTO 张友东详细介绍了 StarRocks 社区的发展情况,并全面解析了 StarRocks 的核心技术与未来规划;我们特意将他的精彩演讲整理出来,以帮助大家更深入…

合封芯片未来趋势如何?合封优势能否体现?

芯片已经成为现代电子设备的核心组件。为了提高系统的性能、稳定性和功耗效率,一种先进的芯片封装技术——合封芯片应运而生。 合封芯片作为一种先进的芯片封装技术,合封芯片是一种将多个芯片(多样选择)或不同的功能的电子元器件…

DevExpress中文教程 - 如何在macOS和Linux (CTP)上创建、修改报表(下)

DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。 DevExpress Reports — 跨平台报表组件&#x…

java 手机商城免费搭建+电商源码+小程序+三级分销+SAAS云平台

【SAAS云平台】打造全行业全渠道全场景的SaaS产品,为店铺经营场景提供一体化解决方案;门店经营区域化、网店经营一体化,本地化、全方位、一站式服务,为多门店提供统一运营解决方案;提供丰富多样的营销玩法覆盖所有经营…

[kingbase锁等待问题分析]

参考文章:https://www.modb.pro/db/70021 概述 为了确保复杂的事务可以安全地同时运行,kingbase(PostgreSQL)提供了各种级别的锁来控制对各种数据对象的并发访问,使得对数据库关键部分的更改序列化。事务并发运行,直到…

Vatee万腾的科技冒险:vatee创新力量的前沿发现

在当今飞速发展的科技潮流中,Vatee万腾以其独特的创新力量成为前沿的引领者。这场科技冒险不仅仅是技术的迭代,更是一次前所未有的前沿发现之旅,让我们一同深入探索Vatee万腾的科技冒险,感受vatee创新力量的前沿奇迹。 Vatee万腾将…

基于opencv+ImageAI+tensorflow的智能动漫人物识别系统——深度学习算法应用(含python、JS、模型源码)+数据集(一)

目录 前言总体设计系统整体结构图系统流程图 运行环境爬虫1.安装Anaconda2.安装Python3.63.更换pip源4.安装Python包5.下载phantomjs 模型训练1.安装依赖2.安装lmageAl 实际应用1.前端2.安装Flask3.安装Nginx 相关其它博客工程源代码下载其它资料下载 前言 本项目通过爬虫技术…

云原生技术演进之路-(云技术如何一步步演进的,云原生解决了什么问题?)

云技术如何一步步演进的? 云原生解决了什么问题? 物理设备 电脑刚被发明的时候,还没有网络,每个电脑(PC),就是一个单机。 这台单机,包括CPU、内存、硬盘、显卡等硬件。用户在单机…

vue 通过ref调用router-view子组件的方法

由于用的vue2.7版本,但用了vue3 setup的语法; 注意:是vue2的template结构,vue3的setup语法;非这种情况需要举一反三。 处理方案: 1、对router-view加上ref template修改 直接对router-view加上ref&#x…

Linux(6):文件与文件系统的压缩,打包与备份

压缩文件的用途与技术 由于 1 byte 8 bits ,所以每个byte当中会有8个空格,而每个空格可以是0,1。 其实文件里面有相当多的『空间』存在,并不是完全填满的,而『压缩』的技术就是将这些『空间』填满,以让整个文件占用…

AI“胡说八道”?怎么解?

原创 | 文 BFT机器人 01 引言 近年来,人工智能产业迅猛发展,大型语言模型GPT-4发展势头强劲,OpenAI推出ChatGPT、微软推出Bing、马斯克推出“最好的聊天机器人Grok”……科技巨头纷纷入局AI领域,引入人工智能作为办公工具的行业…

APP软件外包开发流程

外包APP软件项目的开发流程可以分为以下几个主要阶段,在整个流程中,沟通和合作是至关重要的,确保开发团队和客户之间有良好的沟通渠道,及时解决问题,保证项目按时交付。北京木奇移动技术有限公司,专业的软件…

unigui同页面内重定向跳转,企业微信内部应用开发获取用户code例子

procedure TMainForm.UniFormCreate(Sender: TObject); varurl: string;code: string; begin //如果没有code值,将进行重定向if UniApplication.Parameters.Values[code] thenbeginurl :https://open.weixin.qq.com/connect/oauth2/authorize?appid你们的企业ID&…

Word怎么看字数?简单教程分享!

“我在写文章时,总是想看看写了多少字。但是我发现我的Word无法看到字数。在Word中应该怎么查看字数呢?请帮帮我!” Word是一个广泛使用的文档编辑工具。在我们编辑文章时,如果想查看写了多少字,也是可以轻松完成的。 …

Whatweb简单使用

目录 简介 安装 debian/ubtuntu redhat/centos 特性 使用 常用参数如下: whatweb -v whatweb --version whatweb -i 1.txt whatweb -v www.baidu.com 扫描等级 whatweb -a 4 www.baidu.com 扫描网段 whatweb --no-errors -t 255 192.168.71.0/24 导出…

Android : AlertDialog对话框、单选、多选、适配器-简单应用

示例图: 1 :创建 AlertDialog.Builder 对象; 2 :调用 setIcon() 设置图标, setTitle() 或 setCustomTitle() 设置标题; 3 :设置对话框的内容: setMessage() 还有其他方法来指定显示…

windows11上安装WSL

Windows电脑上要配置linux(这里指ubuntu)开发环境,主要有三种方式: 1)在windows上装个虚拟机(比如vmware)。缺点是vmware加载ubuntu后系统会变慢很多,而且需要通过samba来实现window…

电线电缆、漆包线工厂开源MES/生产管理系统/云MES

万界星空科技专业的漆包线MES系统功能介绍: 从原材料出入库-拉丝机等设备管理-漆包线称重打印系统自动入库(支持多台秤同时称重)-建立销售报价、销售订单-生产订单-支持扫码出库及自动拣货出库-应收应付账款-对接各种其他系统及财务系统。 …