前言:
Docker 是一个开源的平台即服务(PaaS)工具,用于容器化应用程序的开发、部署和管理。它利用操作系统级别的虚拟化技术(容器化)来提供轻量级、可移植的环境,使开发者能够将应用程序与其依赖的运行时环境打包成一个容器。
主要特点和优势:
- 轻量性和高效性:Docker 容器与宿主机共享操作系统内核,因此比传统虚拟机更加轻量,启动更快,并且占用的资源更少。
- 跨平台性:Docker 容器可以在开发、测试和生产环境中无缝移植,确保应用程序在不同环境下的一致性。
- 标准化:Docker 容器提供了标准的格式(Docker 镜像)和工具,使得应用程序的交付和部署更加可靠和可重复。
- 隔离性和安全性:Docker 使用了多层的安全措施,确保容器之间的隔离,防止恶意代码的扩散,同时提供了权限管理和加密等安全功能。
- 易用性:通过 Docker 的命令行接口(CLI)或者图形化界面,开发者可以方便地构建、启动、停止和管理容器,简化了开发和运维工作。
核心概念:
- 镜像(Image):Docker 镜像是一个只读模板,包含了运行容器所需的文件系统内容和配置信息。
- 容器(Container):Docker 容器是镜像的一个运行实例,可以被启动、停止、删除,并且可以与宿主机和其他容器进行通信。
- 仓库(Repository):Docker 仓库是用来集中存放镜像的地方,可以是公开的或者私有的,其中 Docker Hub 是最常用的公共仓库。
应用场景:
- 开发流程优化:开发人员可以在本地使用 Docker 镜像进行开发,确保与生产环境的一致性。
- 持续集成和持续部署(CI/CD):通过 Docker 可以快速部署和更新应用程序,提高交付效率。
- 微服务架构:Docker 的轻量级和易部署特性使其成为构建和管理微服务架构的理想选择。
docker 安装
由于目前 docker hub 在国内被墙,我们可以使用清华源镜像安装 docker,原文地址https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/
移除旧版本 Docker:
1 | for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done |
安装必要的依赖:
1 | sudo apt-get update |
信任 Docker 的 GPG 公钥并添加仓库:
1 | sudo install -m 0755 -d /etc/apt/keyrings |
注意:如果是 ubuntu 系统的话,要把代码中的debian
改为ubuntu
,以下同
从清华源下载镜像:
1 | echo \ |
更新源并安装 docker
1 | sudo apt-get update |
配置国内镜像源
创建 docker 镜像配置文件夹
1 | sudo mkdir -p /etc/docker |
写入镜像配置:
1 | sudo tee /etc/docker/daemon.json <<-'EOF' |
输入 EOF 结束
重启 docker 服务:
1 | sudo systemctl daemon-reload |
测试是否安装成功(显示 “Hello from Docker!” 即为成功安装):
1 | docker run hello-world |
注意:直接运行 docker 可能会显示错误,原因是 Docker 无管理员权限运行会失败!可以在代码前加sudo
或添加用户到 docker 组:
1 | sudo gpasswd -a $USER docker |
docker 的使用
- 下载 docker 镜像:
docker pull
- 启动 docker 容器:
docker run
- 停止 docker 容器:
docker stop
- 查看正在进行的容器:
docker ps
- 查看所有容器:
docker ps -a
- 进入容器:
docker exec -it container_name /bin/bash
- 删除容器:
docker rm -f
- 删除镜像:
docker rmi
docker 的卸载
如果不想用 docker 了,那么我们就按以下步骤对 docker 进行完全卸载:
停止和删除所有容器
1 | sudo docker stop $(docker ps -aq) |
删除所有镜像
1 | sudo docker rmi $(docker images -q) |
卸载 docker 引擎
1 | sudo apt-get remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin |
删除 docker 的数据目录
1 | sudo rm -rf /var/lib/docker |
这样,你就完全删除 docker 了。