docker简单快速使用上手

news2025/2/8 5:33:24

1.Docker是什么?

Docker 是一个开源的容器化平台,主要用于开发、运输和运行应用程序。它通过提供轻量级的虚拟化机制,使得开发者可以在一个隔离的环境中运行和管理应用程序及其依赖项。Docker 的核心组件包括镜像(Image)、容器(Container)、Docker 引擎(Docker Engine)和 Docker Hub。

以下是 Docker 的主要概念和功能:

  1. 镜像(Image)
  • 镜像是一个轻量、独立、可执行的软件包,包含了运行某个应用程序所需的所有代码、运行时、库、环境变量和配置文件。可以将镜像看作是一个应用程序的模板。
  1. 容器(Container)
  • 容器是镜像的运行实例。每个容器都是一个隔离的进程,可以在任何支持 Docker 的操作系统上运行。容器之间相互隔离,并且可以独立于主机操作系统进行部署和管理。
  1. Docker 引擎(Docker Engine)
  • Docker 引擎是一个轻量级的运行时和工具集,用于创建、管理和运行容器。它包括一个服务端守护进程(Docker Daemon)、一个 REST API 接口和一个命令行界面(CLI)。
  1. Docker Hub
  • Docker Hub 是一个云端的镜像仓库,允许用户存储、共享和管理 Docker 镜像。用户可以从 Docker Hub 拉取公共镜像,也可以推送自己的镜像到 Docker Hub。

Docker 的优势

  1. 轻量级
  • 与传统的虚拟机相比,Docker 容器共享操作系统内核,不需要额外的操作系统开销,因此启动速度快,资源消耗少。
  1. 一致性和可移植性
  • Docker 镜像包含了应用程序及其所有依赖项,可以在任何运行 Docker 的环境中一致地运行,从而消除了“在我机器上可以运行”的问题。
  1. 敏捷性和效率
  • 开发者可以快速构建、测试和部署应用程序,通过 Docker 容器可以轻松地在不同环境之间迁移和扩展应用。
  1. 隔离性
  • 每个容器在一个隔离的环境中运行,确保应用程序之间不会互相干扰,并且可以更容易地管理应用程序的依赖关系。

Docker 使用场景

  1. 持续集成和持续部署(CI/CD)
  • Docker 使得开发和运维团队可以在整个应用生命周期中保持一致的环境,从而加快软件交付周期。
  1. 微服务架构
  • Docker 非常适合部署和管理微服务,每个微服务可以在一个独立的容器中运行,便于扩展和维护。
  1. 云计算和多云环境
  • Docker 容器可以轻松地在各种云环境中迁移和运行,支持混合云和多云策略。

总的来说,Docker 通过容器化技术,简化了应用程序的开发、部署和运行过程,提供了一种高效、灵活和可靠的解决方案。

2.个人简单理解

docker就一个Liunx虚拟机,属于阉割版的系统,这个系统只会出现对应应用程序所需要的所有代码、运行时、库、环境变量和配置文件,好处就是体积小,性能好

3.那我们为什么需要使用docker呢?

因为我们平时不管是开发,还是测试,运维部署环境,都需要一步一步的安装程序所需要的依赖包和相关插件,如此反复工作效率非常地下,如果我们学会了使用docker,那就可以直接简单一点可以实现几行命令,即可一键部署环境。

在这里插入图片描述

4.什么是镜像和容器

镜像:Docker将应用程序及其所需要的以来,函数库,环境,配置文件打包在一起,称为镜像

容器:镜像中的应用程序运行后形成的进程就是容器,只是dockers会给容器做隔离,对外不可见

5.Docker架构

dockers是一个cs架构的程序,由两部分组成

服务端:docker守护进程,复制处理docker指令,管理镜像,容器

客户端:通道命令或RestAPI向服务端发送指令,可以在本地或远程服务器发送指令。

6.安装Docker

Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到。下面的介绍都针对社区版。

6.1卸载(可选)

如果之前安装过旧版本的docker,可以使用命令卸载

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine # 卸载老版本Docker

/etc/systemd -name '*docker*' -exec rm -f {} ; #清除配置文件和依赖文件

find /etc/systemd -name '*docker*' -exec rm -f {} \;

find /lib/systemd -name '*docker*' -exec rm -f {} \;

6.2安装docker

.在下载docker之前, 最好安装yumutils,并配置yumutils的yum-config-manager来设置稳定版的仓库/源, 方便之后的更新

yum install -y yum-utils # 安装

然后更新本地镜像源(根据实际情况使用)

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo # 配置

然后输入命令:

yum install docker-ce

docker-ce为社区免费版

6.3启动docker

docker应用需要用到各种端口,逐一修改i防火墙设备,非常麻烦因此建议

启动docker前一定要关闭防火墙!

启动docker前一定要关闭防火墙!

启动docker前一定要关闭防火墙!

#关闭
systemctl stop  firewalld
#禁止开机启动防火墙
systemctl disable firewall

通过命令启动docker:

systemctl start docker   #启动docker服务

systemctl stop docker  #停止docker服务

systemctl restart docker   #重启docker服务

然后输入命令,可以查看docker版本

docker -v 

6.4配置镜像

docker官方镜像仓库网速较差,我们需要设置国内镜像,我们可以参考一下菜鸟教程的配置方法

7.Docker基本操作

7.1镜像相关命令

  • 镜像名称一般分两个部分组成:[repository]:[tag]

  • 在没有指定tag,默认是lastest.代表最新版本的镜像

在这里插入图片描述

7.2镜像操作命令

在这里插入图片描述

7.3举例我们安装一个Nginx环境

7.3.1docker hub镜像网站拉取镜像

首先去镜像仓库搜索nginx 镜像,比如docker hub

官方镜像地址:https://hub.docker.com/

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

7.3.2拉取镜像
# 1.获取镜像(默认为最新版本)
docker pull nginx


# 2.获取镜像(指定版本)
docker pull nginx:1.24.0

在这里插入图片描述

7.3.4查看镜像
# 2.查看本地镜像
docker images

# REPOSITORY :镜像名称
# TAG        :镜像标签(版本)
# IMAGE ID   :镜像ID
# CREATED    :创建时间
# SIZE       : 镜像大小

在这里插入图片描述

7.3.5镜像导出磁盘
#镜像导出
# -o 指定镜像文件名称
#  nginx:latest  为镜像名称和TAG

 docker save -o nginx.tar nginx:latest

在这里插入图片描述

#如果需要导入镜像,首先需要把原有的镜像进行删除处理,才能进行镜像导入
  docker rmi nginx:lastest

  #查看镜像
  docker images
  
  # 查看docker load 使用
  docker load  --help
  
  # -i 是指需要读取的镜像文件
  docker load -i nginx.tar

8.操作容器

在这里插入图片描述

8.1创建Nginx容器

在这里插入图片描述

# docker run :创建并运行一个容器
# --name :给容器起一个名字,比如叫mn
# -p:将宿主端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
# -d:后台运行容器
# nginx :镜像名称,例如nginx

docker run --name some-nginx  -p 8080:80  -d nginx

8.2 容器操作

#查看容器是否运行,不支持查看未允许的容器
docker ps

#返回结果
# contaidner id 唯一id
#image 镜像名称
# command 容器内容运行的命令
# created 创建时间
# status 运行状态
#ports 端口
# names 名称

### 查看容器允许日志

```bash
#查看容器运行日志
docker logs mn


#查看容器运行日志
# -f 持续输出日志信息
docker logs -f mn

#停止容器操作
docer stop mn

#再次启动容器
docker start mn

# 查看所有容器(包含已经停止的容器)
docker ps -a 

# 强制删除容器,包含在允许的容器
# -f 强制删除
docker rm -f mn

8.3 进入Nginx容器

进入容器,修改HTML文件内容,添加"你好"

进入容器,进入我们刚刚创建的nginx容器命令为:
  docker exec -it mn bash 
  
    docker exec :进入容器内容,执行一个命令
    -it:给当前进入的容器创建一个标准输入,输出终端,允许我们与容器交互
    mn :要进入的容器的名字
    bash :进入的容器后执行的命令,bash是一个liunx终端交互命令
    

在这里插入图片描述

9. 数据卷

当Docker容器运行的时候,会产生一系列的数据文件,这些数据文件会在关闭Docker容器时,直接消失的。但是其中产生部分的数据内容,
我们是希望能够把它给保存起来,另作它用的。关闭Docker容器=删除内部除了image底层数据的其他全部内容,即删库跑路


#1.不便于修改
当我们要修改Nginx的html内容时,需要进入容器内部修改,很不方便
#2.数据不可复用
在容器内的修改对外是不可见的,所有修改对新创建的容器是不可复用的
#3.升级维护困难
数据在容器内,如果要升级容器必然删除旧容器,所有数据都跟着删除了

数据卷是一个虚拟目录,指向宿主机文件系统中的某个目录

在这里插入图片描述

数据卷操作的基本语法如下:
docker volume [COMMAND]

docker vloime 命令是数据卷操作,根据命令后跟随的command 来确定下一步的操作
create  创建一个volume
imspect 显示一个或多个volume的信息
ls      列出所有的volume
prune   删除未使用volume
rm      删除一个或多个指定的volume


创建一个数据卷,并查看数据卷在宿主机的目录位置
#查看帮助文档
docker volume --help

#创建数据卷
docker volume create html

#查看数据卷
docker volume ls

#数据卷存放在那个位置
docker volume inspect html

#Mountpotint 存放位置

#删除未使用的指定数据卷
docker volume prune

#删除指定数据卷
docker volume rm html

9.1 数据卷挂载

我们以Nginx镜像举例使用,挂载完成数据卷,我们就不需要进入容器内修改数据

#然后挂载数据卷 -v 数据卷:docker容器的目录文件 如果数据卷不存在,会自定创建数据卷
docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx

#查看数据卷
docker inspect html

#进入数据卷
cd /var/lib/docekr/volumes/html/_data

# 修改HTML文件
vi index.html

9.2 目录挂载到容器上

我们以Mysql数据库镜像举例使用,我们可以把配置文件直接挂载到容器上,便于管理配置文件

#查看镜像文件
docker images


#创建文件
mkdr -p mysql/data
mkdr -p mysql/conf


# 换行符 \
#允许mysql 
docker run \
  -- name mysql
  -e MYSQL_ROOT_PASSWORD=123 \
  -p 3306:3306 \
  -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
  -v /tmp/mysql/data:/var/lib/mysql \
  -d \
  mysql:5.7.25


在这里插入图片描述
我们可以通过两种方式实现数据的持久化,避免了容器停止或者删除升级导致的数据丢失问题

以上的内容为学习笔记,只能为大家提供一个简单Docker入门学习,大佬勿喷,有误请指正!!!

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

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

相关文章

FOC方案大合集!

获取链接!!! 本次小编给大家带来了一份FOC的方案大合集。此套方案是基于峰岹科技FU68系列MCU的系列方案,包含常用的无感,有感无刷电机的应用,每份方案都包含了原理图,PCB,代码文件&…

游戏大厂“脱钩”安卓商店: 独立渠道TapTap们能否渔利

一纸公告将游戏厂商与渠道的博弈再度摆上了台面。 近日,腾讯控股旗下手游《地下城与勇士:起源》(下称“DNF手游”)运营团队发布公告称,自6月20日起,DNF手游将不再上架部分安卓平台的头部应用商店。 下架的…

Google Vortex流式存储引擎分析

作者:archimekai,转载请注明出处 参考文献: Edara, P., Forbesj, J., & Li, B. (2024). Vortex: A Stream-oriented Storage Engine For Big Data Analytics. Companion of the 2024 International Conference on Management of Data, 17…

ClickHouse 24.5.3:全面解析与RPM单节点轻松部署!

简介 ClickHouse是由俄罗斯的Yandex公司开发的开源列式数据库管理系统。它最早于2016年开源,主要用于实时数据分析。ClickHouse通过列存储、向量化执行、并行计算等技术,实现了对大规模数据集的快速查询和分析,特别适合实时数据分析和商业智能…

LayoutSystem布局系统

简介: LayoutSystem,是UGUI中由CanvasUpdateSystem发起(m_LayoutRebuildQueue中大部分都是LayoutRebuilder)的关于布局排列的处理系统。 类图: 布局过程 核心代码讲解: LayoutRebuilder

001.VMware Workstation Pro虚拟平台安装

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉&…

探秘企业成功的秘密武器:这个知识库搭建攻略你必须知道

在数字化浪潮中,你的企业还在用传统的信息管理方式吗?别落后了!最新的企业知识库搭建攻略来了,它将是你提升企业竞争力、创新能力和员工效率的强力工具。让我们一起探索如何构建自己的知识王国,解锁企业成功的秘诀! 一、为什么你的企业需要立刻行动搭建知识库? 信息孤…

GWO-CNN-SVM,基于GWO灰狼优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类)

GWO-CNN-SVM,基于GWO灰狼优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类) 1. GWO灰狼优化算法 灰狼优化算法(Grey Wolf Optimizer, GWO)是一种启发式优化算法,模拟了灰狼群体的社会行为,包…

apache activeMq

https://blog.csdn.net/qq_29651203/article/details/108487924 游览器输入地址: http://127.0.0.1:8161/admin/ 访问activemq管理台 账号和密码默认为: admin/admin# yml配置的密码也是如下的密码 activemq:url: failover:(tcp://localhost:61616)username: adminpassword: ad…

C语言程序设计-13 文件

13.1 C 文件概述 所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称,叫做文件名。实 际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、 库文件 (头文件)等。 文件通常是驻留在外部介质(如磁盘等)上的&am…

Linux中的全局环境变量和局部环境变量

Linux中的全局环境变量和局部环境变量 一、全局环境变量二、局部环境变量三、 设置全局环境变量 bash shell用一个叫作环境变量 (environment variable)的特性来存储有关shell会话和工作环境的信息(这也是它们被称作环境变量的原 因&#xff…

Go自定义数据的序列化流程

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

第一题(伏羲六十四卦)

题目: 首先伏羲64卦解密 再用base64解密即可

【网络安全学习】漏洞扫描:-04- ZAP漏洞扫描工具

**ZAP(Zed Attack Proxy)**是一款由OWASP组织开发的免费且开源的安全测试工具。 ZAP支持认证、AJAX爬取、自动化扫描、强制浏览和动态SSL证书等功能。 1️⃣ 安装zap工具 现在的kali版本不一定会预装zap,我们可以自行安装,安装也十分简单。 apt-get …

红队内网攻防渗透:内网渗透之内网对抗:横向移动篇入口切换SMB共享WMI管道DCOM组件Impacket套件CS插件

红队内网攻防渗透 1. 内网横向移动1.1 WMI进行横向移动1.1.1 利用条件:1.1.1 利用详情1.1.1.1 wmic1.1.1.1.1 正向shell上线1.1.1.1.2 反向shell上线1.1.1.2 cscript(不建议使用)1.1.1.3 wmiexec-impacket1.1.1.4 cs插件1.2 SMB横向移动1.2.1 利用条件:1.2.2 利用详情1.2.2…

基于CPWM与DPWM综合调制的光伏逆变器

1. 光伏并网逆变器矢量控制 图 1 为光伏发电系统常用的逆变器拓扑结 构,太阳能光伏电池板发电所产生的直流电能接 入光伏并网逆变器直流侧。逆变器将电能逆变, 经过滤波器与隔离升压变压器连接,最终并入电 网。其中隔离变压器低压侧漏感与LC滤波器组 成LCL滤波。为便于分析…

Vue80-全局路由守卫:前置、后置

一、路由守卫的定义 二、需求 在第三步,做校验! 三、代码实现 3-1、前置路由守卫 注意,此时就不能将router一开始就暴露出去了! to和from是路由组件的信息。 写法一: 写法二: 缺点:若是路由…

gitee添加别人的仓库后,在该仓库里添加文件夹/文件

一、在指定分支里添加文件夹(如果库主没有创建分支,自己还要先创建分支) eg:以在一个项目里添加视图文件为例,用Echarts分支在usr/views目录下添加Echarts文件夹,usr/views/Echarts目录下添加index.vue 1.切换为本地仓…

android | studio的UI布局和代码调试 | UI调试 (用于找到项目源码)

网上找到一个项目,想快速的搞懂是怎么实现的,搞了半天发现原来android都升级到Jetpack Compose了,然后去找源码挺不容易的,摸索中发现了这个调试的方法,还可以。 https://developer.android.com/studio/debug/layout-i…

Portainer.io安装并配置Docker远程访问及CA证书

Portainer.io安装并配置Docker远程访问及CA证书 文章目录 Portainer.io安装并配置Docker远程访问及CA证书一.安装 Portainer.io2.启动容器 二.docker API远程访问并配置CA安全认证1.配置安全(密钥)访问2.补全CA证书信息3.生成server-key.pem4.创建服务端签名请求证书文件5.创建…