🚀 Docker 从这里开始¶
约 1948 个字 29 行代码 1 张图片 预计阅读时间 10 分钟
Hello World¶
让我们从一个最简单的例子开始。尝试执行下面的命令:
这个命令的执行过程:
- 检查本地镜像:输出结果的第一行告诉我们 本地没有Debian镜像
- 自动下载镜像:Docker会在Docker Hub进行 在线搜索 并下载Debian最新版本的镜像
- 创建并运行容器:镜像下载后Docker将它 转成容器并运行
- 执行命令:然后在容器中执行我们指定的命令——
echo "Hello World"。命令的结果则显示在输出内容的 最后一行
预期输出:
Unable to find image 'debian:latest' locally
latest: Pulling from library/debian
...
Status: Downloaded newer image for debian:latest
Hello World
如果再次执行同一命令,那就无需再下载镜像了,容器会立即启动。而整个命令的运行时间大概只需一秒,要是想象一下它背后所做的一切事情,就会觉得这个速度十分惊人:Docker部署并启动了我们的容器,执行我们指定的echo命令,最后把容器关掉。类似的工作如果用传统的虚拟机执行,所需时间将会是好几秒,甚至是好几分钟。
进入容器的命令行¶
我们可以用以下命令,请求Docker提供一个容器中的shell:
$ docker run -i -t debian /bin/bash
root@622ac5689680:/# echo "Hello from Container-land!"
Hello from Container-land!
root@622ac5689680:/# exit
exit
这样你就可以进入容器中的命令行了,和使用ssh进入远程机器很相似。当中的-i和-t参数表示我们想要一个附有tty的交互会话(interactive session),/bin/bash参数表示你想获得一个bash shell。当你退出shell时,容器就会停止——主进程运行多久,容器就运行多久。
参数说明
-i, --interactive:保持stdin打开(即使没有连接)-t, --tty:分配一个伪终端(pseudo-TTY)- 通常这两个参数一起使用(
-it)来启动交互式容器
Docker 的基本命令¶
1. Docker 运行¶
要在Docker中 运行容器,可以使用以下命令:
docker run:运行容器的命令[OPTIONS]:可选参数,用于配置容器的各种选项,如端口映射、容器名称等IMAGE:要运行的镜像名称或ID[COMMAND] [ARG...]:可选的命令和参数,用于在容器内执行特定的命令
常用选项:
-d, --detach:使容器在"分离"模式下运行(后台运行)-i, --interactive:保持stdin打开-t, --tty:分配一个伪终端-p, --publish:发布容器的端口到主机--name:为容器指定一个名称-v, --volume:挂载数据卷--rm:容器退出时自动删除
2. Docker 构建¶
要 构建自己的Docker镜像,可以使用以下命令:
docker build:构建镜像的命令[OPTIONS]:可选参数,用于配置构建过程,如镜像标签、构建上下文路径等PATH | URL | -:Dockerfile所在的路径、URL或者使用标准输入作为Dockerfile
3. Docker pull¶
要从Docker仓库中 拉取现有的镜像,可以使用以下命令:
4. Docker push¶
要将本地的镜像 推送到Docker仓库,可以使用以下命令:
5. Docker images¶
要 列出本地所有的镜像,可以使用以下命令:
6. Docker ps¶
要 列出正在运行的容器,可以使用以下命令:
docker ps:列出正在运行的容器docker ps -a:列出所有容器(包括已停止的)
7. Docker stop¶
要 停止正在运行的容器,可以使用以下命令:
8. Docker start¶
要 启动已停止的容器,可以使用以下命令:
9. Docker restart¶
要 重启正在运行的容器,可以使用以下命令:
10. Docker kill¶
要 强制终止 正在运行的容器,可以使用以下命令:
11. Docker rm/docker rmi¶
要 删除已停止的容器或镜像,可以使用以下命令:
12. Docker exec¶
要在运行中的 容器内执行命令,可以使用以下命令:
例如,进入容器的交互式shell:
13. Docker logs¶
要 查看容器的日志 输出,可以使用以下命令:
常用选项:
--follow, -f:实时跟踪容器的日志输出--tail:只显示最后几行的日志--since:只显示特定时间之后的日志
14. Docker inspect¶
要获取容器或镜像的 详细信息,可以使用以下命令:
15. Docker cp¶
要在容器和主机之间 复制文件或目录,可以使用以下命令:
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
16. Docker system prune¶
要 清理 不再使用的镜像、容器和其他资源,可以使用以下命令:
17. Docker network¶
Docker网络 允许容器之间进行通信和连接到外部网络。以下是一些与Docker网络相关的常用命令:
docker network ls:列出所有的Docker网络docker network create:创建一个新的Docker网络docker network connect:将容器连接到指定的Docker网络docker network disconnect:将容器从指定的Docker网络断开连接
18. Docker volume¶
Docker卷 用于在容器和主机之间持久化存储数据。以下是一些与Docker卷相关的常用命令:
docker volume ls:列出所有的Docker卷docker volume create:创建一个新的Docker卷docker volume inspect:获取Docker卷的详细信息docker volume rm:删除指定的Docker卷
19. Docker-compose¶
Docker-compose是一个用于定义和运行多个容器应用程序的工具。它使用YAML文件来配置应用程序的服务、网络和卷等。以下是一些与Docker-compose相关的常用命令:
docker-compose up:构建并启动Docker-compose定义的所有服务docker-compose down:停止并删除Docker-compose定义的所有服务docker-compose build:构建Docker-compose定义的所有服务的镜像docker-compose logs:查看Docker-compose定义的所有服务的日志
20. Docker swarm¶
Docker swarm是Docker的原生集群管理和编排工具。用于在多个Docker主机上运行和管理应用程序。以下是一些与Docker swarm相关的常用命令:
docker swarm init:初始化一个新的Docker swarm集群docker swarm join:将节点加入到Docker swarm集群docker node ls:列出Docker swarm集群中的所有节点docker service:管理在Docker swarm集群中运行的服务
21. Dockerfile¶
Dockerfile是用于定义Docker镜像构建过程的文本文件。它包含一系列的指令和配置,用于指导Docker引擎在构建过程中执行特定的操作。以下是一些与Dockerfile相关的常用指令:
FROM:指定基础镜像RUN:在容器内执行命令COPY:将文件或目录从主机复制到容器内ADD:将文件或目录从主机复制到容器内,并支持URL和解压缩操作WORKDIR:设置工作目录EXPOSE:声明容器运行时监听的端口CMD:指定容器启动时要执行的命令ENTRYPOINT:设置容器启动时运行的可执行文件
这些指令可以在Dockerfile中按照特定的顺序组合使用,以定义和构建自定义的Docker镜像。
22. Docker 登录和认证¶
要 登录到Docker仓库或私有镜像仓库,可以使用以下命令:
登录后,您可以使用docker pull和docker push命令来拉取和推送镜像。
23. Docker 容器日志管理¶
除了使用docker logs命令查看容器日志外,还可以使用以下命令 对容器日志进行管理:
docker logs --tail:只显示最后几行的日志docker logs --follow:实时跟踪容器的日志输出docker logs --since:只显示特定时间之后的日志docker logs --until:只显示特定时间之前的日志