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查看镜像便没有该镜像存在了。
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 创建与生产环境一致的开发环境,避免因环境差异导致的问题
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。