Docker基础知识及命令的应用

详细笔记

什么是 Docker?

Docker 是一个开源的容器化平台,可以让开发者轻松地打包、部署和运行应用程序。

Docker 的主要优点包括:

  • 轻量级:与虚拟机相比,Docker 容器占用的资源更少。
  • 快速部署:Docker 可以快速地部署和运行应用程序。
  • 跨平台:Docker 可以在不同的操作系统和云平台上运行。

Docker 基本概念

在学习 Docker 之前,需要了解一些基本概念。

镜像(Image)

Docker 镜像是一个只读的模板,可以用来创建容器。镜像可以包含操作系统、应用程序和配置文件等。

容器(Container)

Docker 容器是 Docker 镜像的一个可运行实例。容器可以被创建、启动、停止、删除等。

仓库(Repository)

Docker 仓库是用来存储 Docker 镜像的地方。仓库可以分为公共仓库和私有仓库。Docker 官方提供了一个公共仓库 Docker Hub。

Docker 命令

Docker 命令使用格式为 docker [command] [options]

镜像命令

搜索镜像
docker search [image name]

搜索 Docker 镜像。例如,搜索 Ubuntu 镜像:

docker search ubuntu
拉取镜像
docker pull [image name]:[tag]

拉取 Docker 镜像。例如,拉取 Ubuntu 18.04 镜像:

docker pull ubuntu:18.04
列出本地镜像
docker images

列出本地已经拉取的 Docker 镜像。

删除本地镜像
docker rmi [image name]:[tag]

删除本地的 Docker 镜像。例如,删除 Ubuntu 18.04 镜像:

docker rmi ubuntu:18.04

容器命令

创建容器
docker create [options] [image name] [command]

创建 Docker 容器。例如,创建一个基于 Ubuntu 18.04 镜像的容器:

docker create --name mycontainer ubuntu:18.04
启动容器
docker start [container name or ID]

启动 Docker 容器。例如,启动名为 mycontainer 的容器:

docker start mycontainer
停止容器
docker stop [container name or ID]

停止 Docker 容器。例如,停止名为 mycontainer 的容器:

docker stop mycontainer
列出运行中的容器
docker ps

列出正在运行的 Docker 容器。

列出所有容器
docker ps -a

列出所有 Docker 容器,包括已经停止的容器

删除容器

docker rm [container name or ID]

删除 Docker 容器。例如,删除名为 mycontainer 的容器:

docker rm mycontainer
进入容器
docker exec [options] [container name or ID] [command]

在运行中的 Docker 容器中执行命令。例如,进入名为 mycontainer 的容器并运行 Bash 终端:

docker exec -it mycontainer bash

Docker Compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。

安装 Docker Compose

使用以下命令安装 Docker Compose:

sudo curl -L "https://github.com/docker/compose/releases/download/[version]/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
创建 Docker Compose 文件

Docker Compose 文件使用 YAML 格式定义 Docker 应用程序的多个服务。

例如,以下 Docker Compose 文件定义了一个基于 MySQL 数据库和 Node.js 的 Web 应用程序:

yamlversion: "3"

services:
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: myapp
    volumes:
      - db-data:/var/lib/mysql
  app:
    build: .
    depends_on:
      - db
    environment:
      DB_HOST: db
    ports:
      - "80:3000"

volumes:
  db-data:
运行 Docker Compose 文件

使用以下命令运行 Docker Compose 文件:

docker-compose up

Docker Swarm

Docker Swarm 是 Docker 官方提供的用于容器编排和集群管理的工具。

创建 Docker Swarm 集群

使用以下命令创建 Docker Swarm 集群:

docker swarm init
在 Docker Swarm 集群中部署应用程序

使用以下命令在 Docker Swarm 集群中部署应用程序:

docker stack deploy [options] [stack name] -c [compose file]

例如,使用以下 Docker Compose 文件在 Docker Swarm 集群中部署应用程序:

yamlversion: "3"

services:
  app:
    build: .
    environment:
      DB_HOST: db
    ports:
      - "80:3000"

使用以下命令在 Docker Swarm 集群中部署该应用程序:

docker stack deploy --compose-file docker-compose.yml myapp
查看 Docker Swarm 集群状态

使用以下命令查看 Docker Swarm 集群的状态:

docker node ls

Docker 参数详解

Docker 命令中有很多参数,下面列举一些常用的参数及其详细说明。

镜像参数

–pull

每次启动容器时,Docker 都会检查本地是否有最新的镜像,如果没有,则会自动从 Docker Hub 下载最新的镜像。

–no-cache

构建镜像时禁止使用缓存。使用该参数可以确保构建出的镜像与代码库的最新版本保持同步。

–build-arg

定义构建镜像时使用的构建参数。例如,使用以下命令定义名为 myarg 的构建参数:

docker build --build-arg myarg=value .

在 Dockerfile 中,可以使用以下方式引用该构建参数:

ARG myarg

容器参数

-it

启动交互式终端。该参数等价于 -i -t。

–name

为容器指定名称。例如,使用以下命令启动名为 mycontainer 的容器:

docker run --name mycontainer myimage
–env

设置环境变量。例如,使用以下命令设置名为 myvar 的环境变量:

docker run --env myvar=value myimage
–volume

创建容器卷。例如,使用以下命令创建名为 myvolume 的容器卷:

docker run --volume myvolume:/data myimage

Docker Compose 参数

–scale

指定服务的副本数量。例如,使用以下命令指定名为 app 的服务的副本数量为 3:

docker-compose up --scale app=3

Docker Swarm 参数

–replicas

指定服务的副本数量。例如,使用以下命令指定名为 app 的服务的副本数量为 3:

docker service create --replicas 3 myimage
–constraint

指定服务的约束条件。例如,使用以下命令指定名为 app 的服务只能运行在名为 node1 的节点上:

docker service create --constraint node.hostname==node1 myimage

结语

本文介绍了 Docker 的基本概念和用法,并详细讲解了 Docker 的常用命令及其参数。希望本文能对读者学习和使用 Docker 提供一些帮助。

Dockerfile 指令详解

Dockerfile 是构建 Docker 镜像的脚本,包含了一系列指令,用于指定基础镜像、安装软件、拷贝文件等操作。下面是常用 Dockerfile 指令的详细说明。

FROM

指定基础镜像。例如,使用以下指令指定基础镜像为 Ubuntu 18.04:

FROM ubuntu:18.04

RUN

在镜像中执行命令。例如,使用以下指令在镜像中安装 Apache 服务器:

RUN apt-get update && apt-get install -y apache2

COPY

将本地文件拷贝到镜像中。例如,使用以下指令将当前目录下的 index.html 文件拷贝到镜像的 /var/www/html 目录中:

COPY index.html /var/www/html/

ADD

将本地文件或远程文件拷贝到镜像中。与 COPY 指令不同的是,ADD 指令还支持自动解压缩文件和从 URL 下载文件。例如,使用以下指令将当前目录下的 myapp.tar.gz 文件解压缩并拷贝到镜像的 /opt/myapp 目录中:

ADD myapp.tar.gz /opt/

CMD

指定容器启动时执行的命令。每个 Dockerfile 只能有一个 CMD 指令,如果有多个,则只有最后一个生效。例如,使用以下指令在容器启动时执行命令 /usr/sbin/apache2ctl -D FOREGROUND:

CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

ENTRYPOINT

指定容器启动时执行的命令,与 CMD 指令类似。不同的是,使用 ENTRYPOINT 指令可以将容器作为可执行文件运行。例如,使用以下指令将容器作为可执行文件运行:

ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

EXPOSE

指定容器监听的端口号。该指令只是声明容器运行时需要监听哪些端口号,实际上并不会将端口暴露给宿主机或其他容器。例如,使用以下指令声明容器监听 80 和 443 端口:

EXPOSE 80 443

ENV

设置环境变量。例如,使用以下指令设置名为 MY_VAR 的环境变量:

ENV MY_VAR=value

WORKDIR

设置工作目录。例如,使用以下指令将工作目录设置为 /opt/myapp:

WORKDIR /opt/myapp

USER

指定容器运行时使用的用户。例如,使用以下指令指定容器运行时使用的用户为 nobody:

USER nobody

结语

本文介绍了 Docker 的基本概念和用法,并对 Dockerfile 的指令进行了详细的解释,包括 FROM、RUN、COPY、ADD、CMD、ENTRYPOINT、EXPOSE、ENV、WORKDIR 和 USER 等指令。这些指令可以帮助我们构建出定制化的 Docker 镜像,以满足不同的需求。

当然,这些指令只是 Dockerfile 中的一部分,Docker 还有很多其他的功能和特性,例如 Docker Compose、Docker Swarm、Docker Registry 等。如果您想深入了解 Docker,可以参考 Docker 的官方文档,这里提供了很多详细的教程和示例,可以帮助您更好地理解和使用 Docker。

总之,Docker 是一项非常有用的技术,可以帮助我们更方便地构建、打包、交付和运行应用程序。希望本文能够对您有所帮助,让您更好地掌握 Docker 的知识。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值