docker容器

发布时间:2025-03-24 人气:26次

  Docker容器是一种轻量级、可移植的虚拟化技术,旨在简化软件的交付过程。它允许开发人员将应用程序及其所有依赖项(包括库、配置文件等)打包到一个标准化的单元中,这个单元可以在任何支持Docker的环境中运行。这种隔离性使得应用之间不会相互干扰,从而提高了开发和测试的效率。


  与传统的虚拟机相比,Docker容器更加轻量,因为它们共享主机操作系统的内核,而无需每个容器都运行一个完整的操作系统。这使得启动速度更快,资源占用更少,适合在微服务架构中使用。


1 简介 

Docker是一个用于开发、部署和运行应用程序的开源平台,它基于容器化技术,能够将应用及其依赖项打包成一个独立的容器,从而实现应用的快速部署和迁移。

docker中有3个重要的概念:镜像(Image):是一个只读的模板,包含了运行应用程序所需的所有文件系统、代码、运行时环境、库和依赖项等。可以把它看作是应用程序的 “蓝图”,例如一个包含了 Nginx/Redis服务的镜像。容器(Container):是镜像的一个运行实例。基于同一个镜像可以创建多个容器,每个容器都是相互隔离的,拥有自己独立的文件系统、进程空间等。就像根据一份 “蓝图” 建造出多个相互独立的 “房子”。仓库(Repository):是用于存储和分发镜像的地方,类似于代码仓库。常见的公共仓库有 Docker Hub,你可以在上面找到各种官方和社区维护的镜像,也可以搭建自己的私有仓库。

2. 环境安装 

Ubuntu系统使用命令安装:sudo apt install docker

CentOS系统使用:yum install docker更改仓库源: 编辑 vim /etc/docker/daemon.json 这个文件,若没有就创建对应路径和文件。

输入内容:{

    "registry-mirrors": [

        "https://docker.1panel.live",

        "https://hub.rat.dev"

    ]

}

3. 示例展示 1. 拉取镜像本例拉取一个centos镜像,不指定版本,默认拉取最新的

命令:docker pull centos , 这一步可能比较慢,看网络环境。拉取成功后,我们可以使用docker images查看本地以及拉取的镜像。2. 创建容器在前一个步骤中已经从仓库中拉取了centos的镜像,现在我们根据这个镜像制作容器。命令: docker run -d --name centos_young centos sleep infinity-d : 表示容器是后台执行的--name centos_young : centos_young是我们要创建的容器名字(名字随便起,不指定会给一个随机的名字),后面这个“centos” 是镜像名字,表示我们要从哪个镜像为基础来创建容器。sleep infinity: 让容器持续运行,避免容器启动后立即退出; 或者容器有一个一直执行的程序,可以不加这个选项3. 查看状态执行创建容器命令后,会输出一个容器ID(一串字符),然后我们是docker ps -a 可以查看我们所有的容器状态,信息有:容器ID,镜像名字,创建时间,状态, 端口, 容器名字。容器ID:用于区分不同容器,如图中蓝色框里面的,后面我们要指定某个容器操作,就可以根据容器ID执行命令。docker ps -a 输出的容器ID是我们我们创建容器时候返回回来的一串字符串的前面部分。 状态:Up表示容器正在运行,Exit表示容器已经退出。4.以交互模式进入容器执行命令:docker exec -it centos_young bash 或者 docker exec -it 容器ID bash 便能以交互模式进入容器,然后执行命令等操作。进入容器后:我们可以看到前面的用户名字变成:root@6be23953473d (@后面的内容就是容器ID)。然后我们就可以在容器中执行命令或者其他操作了。5. 退出容器在容器中输入:exit 即可退出。退出后路径前面用户名又变回宿主机的名字了。6. 删除容器删除容器前,要确保容器是停止状态的。先执行命令:docker stop centos_young,命令执行成功后可以看到容器状态由Up变为Exit了。删除容器:docker rm centos_young执行命令成功后,使用docker ps -a查看容器,便没有这个容器了。

7. 删除镜像

在依赖该镜像创建的容器已经stop了便可以使用docker rmi 镜像名字,删除后,使用docker images查看镜像便没有该镜像存在了。

删除镜像.png

4. 常用命令 Dockerfile构建镜像

docker build: 命令根据 Dockerfile构建新的Docker镜像,例如这个命令docker build -t my-ubuntu-image ./会根据当前路径Dockerfile里面的内容进行构建镜像。Dockerfile的用法可以网上搜一下。 例如:Dockerfile文件的如下,构建一个centos进行。# 使用 CentOS 基础镜像

FROM centos:latest


# 更新系统并安装常用工具

RUN yum update -y &&

    yum install -y vim wget curl &&

    yum clean all


# 设置工作目录

WORKDIR /app


# 定义容器启动时执行的命令

CMD ["/bin/bash"]    

容器状态启动 :docker start 容器名字

停止:docker stop 容器名字

重启:docker restart 容器名字查看容器输出的日志:docker logs 容器名字数据卷管理命令列出数据卷:docker volume ls 命令用于列出 Docker 数据卷。

创建数据卷:docker volume create 命令用于创建新的 Docker 数据

删除数据卷:docker volume rm 命令用于删除指定的数据卷。拷贝数据docker cp  容器ID:容器内的路径  主机目录路径

docker cp  主机目录路径  容器ID:容器内的路径将镜像保存为tar文件docker save -o 文件名.tar 镜像名

从tar中加载镜像: docker save -o 文件名.tar 镜像名创建一个交互式容器可选参数【常用】例如创建一个交互式的 Ubuntu 容器:docker run -it -p 8080:80 -v /host/path:/container/path --name my_ubuntu ubuntu bash

常用选项:

-d:让容器在后台运行。

-p:进行端口映射,如-p 8080:80将主机的 8080 端口映射到容器的 80 端口。

-v:挂载数据卷,如-v /host/path:/container/path。

--name:为容器指定名称。网络相关命令查看网络:

显示 Docker 网络的相关信息: docker network ls

创建网络:docker network create 网络名

将容器接入指定的网络: docker network connect 网络名 容器名或容器ID

使容器脱离指定网络: docker network disconnect 网络名 容器名或容器ID5.应用场景 快速部署应用:通过 Docker 可以将应用及其依赖打包成镜像,快速部署到不同的环境中,大大缩短了应用的上线时间。微服务架构:在微服务架构中,每个微服务可以打包成一个独立的容器,通过容器编排工具(如 Kubernetes)进行管理,实现微服务的快速部署、扩展和容错。持续集成和持续部署(CI/CD):在 CI/CD 流程中,使用 Docker 可以方便地构建、测试和部署应用,确保代码的快速迭代和高质量交付。开发环境隔离:开发人员可以使用 Docker 创建与生产环境一致的开发环境,避免因环境差异导致的问题


选择订阅-通过 Docker 订阅在协作、安全性和支持之间找到完美的平衡!
在线客服
联系方式

热线电话

18221674630

上班时间

周一到周五

公司电话

18221674630

二维码
线
获取免费体验资格

提交后,我们将在3个小时内与您联系