Docker

D ocker

什么是Docker

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

Docker三大核心概念

镜像:

Docker 的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。例如:一个镜像可以是一个完整的 Cent OS 操作系统环境,称为一个 CentOS 镜像;也可以是一个安装了 MySQL 的应用程序,称之为一个 MySQL 镜像等等。

Docker 提供了简单的机制来创建和更新现有的镜像,用户也可以从网上下载已经创建好的镜像直接使用。

容器:

Docker 的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器 都是相互隔离、互不可见,以保证安全性的平台。可以将容器看作是一个简易版的 Linux 环境, Docker 利用容器来运行和隔离应用。

仓库:

Docker 仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用 push 命令将它 上传到公有仓库(Public)或者私有仓库(Private)。当下次要在另外一台机器上使用这个镜像 时,只需从仓库获取

安装Docker

安装最新版Docker

使用yum仓库安装Docker

复制代码
yum install -y yum-utils device-mapper-persistent-data lvm2 

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

yum -y install docker-ce docker-ce-cli containerd.io

使用curl安装Docker

复制代码
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
使用阿里云安装docker
复制代码
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start

启动Docker并设置为开机自启动

复制代码
# 启动服务
systemctl start docker
systemctl enable docker

查看Docker版本

安装好的 Docker 系统有两个程序,Docker 服务端和 Docker 客户端。其中 Docker 服务端是一个服务进程,负责管理所有容器。Docker 客户端则扮演着 Docker 服务端的远程控制器,可以用来控制 Docker 的服务端进程。大部分情况下 Docker 服务端和客户端运行在一台机器上

复制代码
docker version

Docker镜像操作

搜索镜像

复制代码
docker search nginx

获取镜像

复制代码
#docker pull 仓库名称[:标签]
docker pull nginx
docker pull nginx:1.20

查看镜像信息

复制代码
#docker images 仓库名称:[标签]
#例如:查看本地所有镜像
docker images
#另一种写法
docker image ls
#根据镜像的唯一标识 ID 号,获取镜像详细信息
docker inspect c20060033e06

为本地镜像添加标签

复制代码
#docker tag名称:[标签]新名称:[新标签]
docker tag nginx nginx_test:1.0

镜像导出

复制代码
docker save -o nginx-latest.tar nginx:latest
docker save -o nginx-1.20.tar nginx:1.20

删除镜像

复制代码
#用名字删除
docker pull nginx:1.20
#用id号删除
docker pull c20060033e06
#在尾部添加-f选项即可强制删除

#删除所有镜像
docker images -q | xargs docker rmi -f

导入镜像

复制代码
docker load < nginx-latest.tar


docker load -i nginx_latest.tar

查看镜像的信息

复制代码
#docker inspect 要显示的详情
docker inspect nginx:latest

修改镜像名称

复制代码
#docker tag 旧名字 新名字
docker tag nginx nginx_kgc:v1

容器

容器是 Docker 的另一个核心概念。简单说,容器是镜像的一个运行实例,是独立运行的一个 或一组应用以及它们所必需的运行环境,包括文件系统、系统类库、shell 环境等。镜像是只读模 板,而容器会给这个只读模板添加一个额外的可写层

容器的创建

复制代码
#docker create [选项]镜像 运行的程序
#常用选项: 
#-i 让容器的输入保持打开 
#-t 让 Docker 分配一个伪终端
#--name 指定容器名称,如果不加的话容器名称是随机生成的

启动与关闭

复制代码
docker start myname
docker stop myname
#一条指令启动与关闭
docker run centos:7.6.1810 bash -c ls /

查看容器

复制代码
docker ps -a

删除容器

复制代码
docker rm myname

#删除所有容器
docker ps -aq | xargs docker stop
docker ps -aq | xargs docker rm

容器的进入

复制代码
docker exec -it 容器 ID/名称 /bash 
#其中: 
#-i 选项表示让容器的输入保持打开; 
#-t 选项表示让 Docker 分配一个伪终端
#exit 退出容器
#pwd 显示当前位置

在容器里传输文件

复制代码
#docker cp 要放的文件 容器名字:/存放位置
docker cp nginx-latest.tar 容器名:/root/nginx-latest.tar
#从容器中拿出文件
docker cp 容器名:/root/nginx-latest.tar ./

容器的导入导出

复制代码
#docker export 容器名 > 存放名
docker export confident_babbage > mynginx.tar
#把文件导成镜像
#cat 文件名| docker import -- 生成的镜像名称:标签
cat mynginx.tar | docker import - mynginx:1.0
复制代码
docker run -d -P --name nginx01 nginx:latest

#-P:随机端口映射
#-p:指定端口映射
#-d:放在后台启动
docker run -d -p 823:80 --name nginx02 nginx:latest

docker的特性

1.下载镜像的时候,镜像在仓库里是压缩的,下载到容器里就是解压的

数据卷

数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上, 对 数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。数据卷的使用类似于 Linux 下对目录进行的 mount 操作

创建数据卷

复制代码
docker run -d -v /data1 -v /data2 --name web nginx:latest

# -v 创建数据卷
复制代码
#与宿主机目录挂载同步
docker run -d -v /var/www/:/data1 --name web-1 nginx:latest
相关推荐
AH_HH3 小时前
Spring Boot 4.0 发布总结:新特性、依赖变更与升级指南
java·spring boot·后端
mqiqe3 小时前
【Spring AI MCP】六、SpringAI MCP 服务端 STDIO & SSE
java·人工智能·spring
Tadas-Gao3 小时前
Spring Boot 4.0架构革新:构建更精简、更安全、更高效的Java应用
java·spring boot·分布式·微服务·云原生·架构·系统架构
vx_bisheyuange3 小时前
基于SpringBoot的库存管理系统
java·spring boot·后端·毕业设计
专注于大数据技术栈3 小时前
java学习--单例模式之懒汉式
java·学习·单例模式
czhc11400756633 小时前
C# 1120抽象类 static
java·开发语言·c#
whltaoin3 小时前
【 Java微服务 】Spring Cloud Alibaba :Nacos 注册中心与配置中心全攻略(含服务发现、负载均衡与动态配置)
java·微服务·nacos·springcloud·注册中心·配置中心
你不是我我3 小时前
【Java 开发日记】有了解过 SpringBoot 的参数配置吗?
java·开发语言·spring boot
稚辉君.MCA_P8_Java4 小时前
Gemini永久会员 Java HotSpot 虚拟机(JVM)的优点
java·jvm·后端
ivanfor6664 小时前
多租户架构的三级权限体系:设计逻辑与精准控制实现
java·开发语言·数据库