Docker的使用

1. 什么是Docker?

Docker是一种开源的容器技术,它允许将应用程序和其依赖项打包在一个容器中,并在任何环境中快速部署和运行。容器是一种轻量级的虚拟化技术,与虚拟机相比,它更加高效和快速。

2. Docker基本概念

  • 镜像(Image):容器的基础,类似于模板,包含了运行应用所需的所有内容。
  • 容器(Container):由镜像创建的运行实例,是一个独立的、隔离的运行环境。
  • 仓库(Repository):用于存储和分享镜像的地方,可以公开或私有。
  • Dockerfile:用于定义镜像内容的文本文件,可以通过其构建定制镜像。

3. Docker安装与配置

  • 安装Docker:根据不同Linux发行版选择合适的安装方式,如apt、yum或官方脚本。
  • 配置镜像加速器:使用国内镜像加速器,加快镜像下载速度。
  • 用户权限设置:将用户添加到docker用户组,避免使用sudo运行Docker命令。

4. Docker基本命令

Docker的基本命令非常简单,让我们快速了解并掌握它们。

  • docker run:运行一个容器。例如,在后台运行一个Nginx容器,并将主机的80端口映射到容器的80端口。

    1
    docker run -d -p 80:80 --name my-nginx nginx
  • docker ps:这将列出所有正在运行的容器及其相关信息,如容器ID、名称、状态等。

    1
    docker ps
  • docker images:查看本地镜像。例如,列出所有本地镜像及其相关信息,如镜像ID、标签、大小等。

    1
    docker images
  • docker build:通过Dockerfile构建镜像。例如,通过Dockerfile在当前目录下构建一个名为my-custom-image的镜像。

    1
    docker build -t my-custom-image
  • docker pull:从仓库拉取镜像。例如,拉取一个Ubuntu镜像:

    1
    docker pull ubuntu
  • docker push:将镜像推送到仓库。例如,先给镜像打上标签,然后将镜像推送到Docker Hub的仓库中。

    1
    2
    docker tag my-custom-image username/my-custom-image
    docker push username/my-custom-image
  • docker exec:在容器内执行命令。例如,进入容器的bash终端,允许您在容器内执行命令。

    1
    docker exec -it container_id bash
  • docker stop/start:停止/启动容器。例如,停止指定ID的容器。

    1
    docker stop container_id
  • docker rm/rmi:删除容器/镜像。例如,删除一个指定ID已经停止的容器:

    1
    docker rm container_id

5. 容器网络

  • 默认网络:容器之间可以直接通信,不需要任何额外配置。
  • 桥接网络:容器和主机在同一网段,可通过主机端口访问容器。
  • 容器互联:将多个容器连接在同一网络中,实现服务间通信。

6. 数据管理

  • 数据卷:将主机目录或文件挂载到容器中,实现数据持久化。
  • 数据卷容器:创建专门用于管理数据卷的容器。
  • 数据卷备份与恢复:使用docker cp命令备份和恢复数据卷。

7. Docker Compose

  • 编写docker-compose.yml文件:定义多容器应用的配置。
  • 使用docker-compose命令:一键启动整个应用。

8. Docker Swarm

  • 创建Swarm:将多个Docker主机加入Swarm,形成集群。
  • 服务部署:使用docker service命令在Swarm集群中部署应用服务。

9. Docker安全

  • 容器隔离:使用Linux的命名空间和控制组实现容器隔离。
  • 安全加固:设置容器用户和资源限制,避免潜在安全风险。
  • 镜像签名:对镜像进行签名验证,确保镜像来源可信。

10. Docker在CI/CD中的应用

  • 使用Docker构建CI/CD环境:将构建、测试和部署过程封装成Docker镜像。
  • Docker Compose实现多容器应用自动化部署。