目录
一.Docker概述
1.什么是Docker
2.Docker的优势
3.Docker的应用场景
4.Docker核心概念
二.Docker安装
1.本安装方式使用阿里的软件仓库
2.Docker镜像操作
3.Docker容器操作
一.Docker概述
因为 Docker 轻便、快速的特性,可以使应用达到快速迭代的目的。每次小的变更,马上就可以看到效果,而不用将若干个小变更积攒到一定程度再变更。每次变更一小部分其实是一种非常安全的方式,在开发环境中能够快速提高工作效率。
Docker 容器能够帮助开发人员、系统管理员、质量管理和版本控制工程师在一个生产环节中一起协同工作。制定一套容器标准能够使系统管理员更改容器的时候,程序员不需要关心容器的变化,而更专注自己的应用程序代码。从而隔离开了开发和管理,简化了开发和部署的成本。
1.什么是Docker
Docker 是一种开源的容器化平台,核心作用是让应用程序及其依赖能够在隔离的容器环境中运行,实现 “一次构建,到处运行” 的效果。
简单来说,它像一个 “标准化的包装箱”:
-
开发者将应用代码、运行环境(如库、配置)等打包进 “容器”,确保应用在任何支持 Docker 的环境(开发机、服务器、云平台等)中都能以相同方式运行,解决了 “在我这能跑,到你那却不行” 的兼容性问题。
-
容器与宿主机系统共享内核,但拥有独立的文件系统和资源(如内存、CPU),相比虚拟机更轻量、启动更快(秒级),资源利用率也更高。
2.Docker的优势
特性 | Docker 容器 | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
计算能力损耗 | 几乎无 | 损耗 50% 左右 |
性能 | 接近原生 | 弱于 |
系统支持量(单机) | 上千个 | 几十个 |
隔离性 | 资源限制 | 完全隔离 |
容器技术的优势主要体现在以下几个方面:
-
隔离性:不同的容器之间相互隔离,一个容器的故障或异常不会影响其他容器的运行,提高了应用的稳定性和安全性。
-
可移植性:容器将应用及其依赖项打包成一个独立的单元,使得应用可以在不同的环境中(如开发环境、测试环境、生产环境)无缝迁移和运行,避免了 “在我的机器上能运行,但在你的机器上不行” 的问题。
-
资源高效利用:容器共享宿主机的操作系统内核,不需要为每个应用运行独立的操作系统,大大减少了资源的浪费,提高了服务器的利用率。
-
快速部署和扩展:容器的启动速度非常快,通常只需要几秒钟,而且可以根据需要快速创建和销毁容器,方便进行应用的快速部署和弹性扩展。
3.Docker的应用场景
-
开发环境管理:开发人员可以使用容器来创建一致的开发环境,确保团队成员之间的环境一致性,提高开发效率。
-
持续集成和持续部署(CI/CD):在 CI/CD 流程中,容器可以帮助实现应用的快速打包、测试和部署,实现自动化的软件开发流程。
-
微服务架构:容器技术非常适合微服务架构,每个微服务可以打包成一个独立的容器,独立开发、测试和部署,提高系统的可伸缩性和容错性。
-
云计算:云服务提供商可以利用容器技术为用户提供更高效、灵活的计算资源,用户可以根据自己的需求快速创建和管理容器化的应用。
4.Docker核心概念
-
镜像(Image):容器的 “模板”,包含运行应用所需的完整文件系统和配置。
-
容器(Container):镜像的 “实例”,是动态运行的进程,可被创建、启动、停止、删除。
-
Docker Engine:运行和管理容器的核心引擎。
-
Docker Hub:公共镜像仓库,可共享或获取现成镜像。
二.Docker安装
1.本安装方式使用阿里的软件仓库
关闭系统防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's=enforcing/=disabled/=' /etc/selinux/config
下载Docker的repo文件
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
替换仓库地址
sed -i 's/$releasever/8/g' /etc/yum.repos.d/docker-ce.repo
sed -i 's/$basearch/x86_64/g' /etc/yum.repos.d/docker-ce.repo
更新索引文件并安装Docker
dnf clean all dnf makecache dnf -y install docker-ce
添加国内镜像站
mkdir /etc/docker/ cat>/etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker-0.unsee.tech","https://docker.hlmirror.com"] }
开启Docker服务
systemctl daemon-reload systemctl restart docker systemctl enable docker docker version
优化内核参数
vim /etc/sysctl.conf net.ipv4.ip_forward=1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 sysctl -p
2.Docker镜像操作
获取镜像
[root@localhost ~]# docker pull nginx:1.24.0
docker pull 是 Docker 里的一个关键命令,其主要功能是从 Docker 镜像仓库(默认是 Docker Hub)中拉取镜像到本地 Docker 主机
查看镜像信息
[root@localhost ~]# docker images
docker images 是 Docker 中一个基础且常用的命令,主要用于列出本地 Docker 主机上的镜像信息。docker images 命令会列出本地 Docker 主机上所有可用的镜像,展示镜像的基本信息,帮助用户了解本地镜像的存储情况,包括镜像的仓库名、标签、镜像 ID、创建时间和大小等。
查看镜像的详细信息
[root@localhost ~]# docker inspect c15
docker inspect 是 Docker 中一个非常实用的命令,它用于返回 Docker 对象(如容器、镜像、网络、卷等)的底层详细信息,这些信息以 JSON 格式展示,方便用户深入了解 Docker 对象的配置和状态。
修改镜像标签(老名字+新名字)
[root@localhost ~]# docker tag nginx1.24.0 nginx:v1 [root@localhost ~]# docker images
在 Docker 中,docker tag 命令用于为现有的 Docker 镜像添加一个新的标签(tag)。标签本质上是镜像的一个别名,它可以让你更方便地引用和管理镜像,同时也有助于区分不同版本或用途的镜像。
删除镜像
(1)用镜像名删除
[root@localhost ~]# docker rmi nginx:v1
(2) 用ID删除
[root@localhost ~]# docker rmi c15
存出镜像和载入镜像
(1)导入
[root@localhost ~]# docker save -o nginx nginx:1.24.0
docker save 命令用于将一个或多个 Docker 镜像保存为一个 tar 归档文件,这在需要将镜像传输到其他 Docker 环境(如离线环境)时非常有用。
(2)导入
[root@localhost ~]# docker load<nginx
3.Docker容器操作
创建容器
[root@localhost ~]# docker create -it centos:7
docker create 是 Docker 中的一个重要命令,它的主要作用是基于指定的镜像创建一个新的容器,但并不立即启动该容器。
查看所有的容器
[root@localhost ~]# docker create -it centos:7
docker create 是 Docker 中的一个重要命令,它的主要作用是基于指定的镜像创建一个新的容器,但并不立即启动该容器。
容器的运行
[root@localhost ~]# docker start 5a
docker start 是 Docker 中用于启动已创建但处于停止状态容器的命令。docker start 命令的主要作用是将之前使用 docker create 创建好但处于停止状态的容器,或者之前已经停止运行的容器重新启动起来。它会重新初始化容器的运行环境,加载相关资源,让容器内的进程继续执行。
利用容器执行命令
[root@localhost ~]# docker run centos:7 /usr/bin/bash -c "ls /root"
docker run 是 Docker 中最常用的命令之一,它的主要功能是基于指定的镜像创建并启动一个新的容器。
在启动容器时持续在后台运行
[root@localhost ~]# docker run -dit centos:7 /bin/bash
容器的终止
[root@localhost ~]# docker stop b18
docker stop 命令用于优雅地停止一个或多个正在运行的 Docker 容器。docker stop 命令的主要作用是向正在运行的容器内的主进程发送终止信号,让容器内的应用程序有机会正常关闭和清理资源,而不是像 docker kill 那样直接强制终止容器。这有助于避免数据丢失或损坏,保证应用程序的正常关闭流程。
容器导出
[root@localhost ~]# docker export 03f > centos7
docker export 命令用于将一个运行中的或已停止的 Docker 容器的文件系统内容导出为一个 tar归档文件。
容器导入生成镜像
[root@localhost ~]# docker import centos7 centos7:test [root@localhost ~]# docker images
容器删除
[root@localhost ~]# docker rm 7f