Docker管理之碎片知识整理小结
概述
Docker 是一个开源的容器化平台,可以用于开发、部署和运行应用程序。
在使用 Docker 时,我们需要了解一些碎片化的知识点。本篇文章将整理这些知识点,并提供一些示例说明。
Docker 命令简介
常用命令说明
docker run
:启动一个容器docker ps
:查看正在运行的容器列表docker stop
:停止一个正在运行的容器docker rm
:删除一个已停止的容器docker images
:查看镜像列表docker pull
:拉取一个镜像到本地docker push
:将一个本地镜像推送到远程仓库
示例说明
启动一个容器
docker run -d -p 80:80 --name my-apache-app httpd:2.4
这条命令会从 Docker Hub 中拉取 httpd:2.4
镜像,启动一个名为 my-apache-app
的容器,并将容器的 80
端口映射到主机的 80
端口。
停止一个正在运行的容器
docker stop my-apache-app
这条命令会停止名为 my-apache-app
的容器。
Dockerfile
Dockerfile 是一个文本文件,用于定义 Docker 镜像的构建过程。可以使用 Dockerfile 定义自己的镜像,并推送到 Docker Hub 或私有仓库中。
# 指定基础镜像
FROM ubuntu:18.04
# 安装所需软件
RUN apt-get update && apt-get install -y \
apache2 \
php \
&& rm -r /var/lib/apt/lists/*
# 复制源代码到容器中
COPY ./src /var/www/html/
# 暴露 80 端口
EXPOSE 80
# 启动 Apache 服务器
CMD ["apache2ctl", "-D", "FOREGROUND"]
这个 Dockerfile 定义了一个基于 Ubuntu 18.04 的镜像,安装了 Apache2 和 PHP,并将源代码复制到容器中。最后,暴露容器的 80
端口,并启动 Apache 服务器。
可以使用以下命令构建镜像:
docker build -t my-php-app .
这条命令将当前目录的 Dockerfile 构建为镜像,并指定镜像名称为 my-php-app
。
容器互连
容器之间可以通过互连的方式进行通信。可以使用 --link
参数将一个容器与另一个容器互连起来。互连之后,容器可以通过另一个容器的别名进行通信。
# 启动一个 MySQL 容器,并设置别名为 mysql-db
docker run --name mysql-db -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
# 启动一个 PHP 容器,并将其与 mysql-db 容器互连
docker run --name my-php-app --link mysql-db:mysql -d my-php-app
在上述示例中,my-php-app
容器与 mysql-db
容器互连,启动后可以使用 mysql
这个别名来访问 mysql-db
容器。
Docker Compose
Docker Compose 是一个用于定义和运行多个 Docker 容器的工具。可以使用 Docker Compose 定义多个服务之间的依赖关系,以及容器的启动参数等信息。
# docker-compose.yml
version: '3'
services:
mysql:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: my-secret-pw
my-php-app:
build: .
ports:
- "80:80"
depends_on:
- mysql
environment:
MYSQL_HOST: mysql
MYSQL_ROOT_PASSWORD: my-secret-pw
这个 Docker Compose 文件定义了两个服务:mysql
和 my-php-app
。其中 my-php-app
的镜像由当前目录的 Dockerfile 构建。my-php-app
服务依赖于 mysql
服务,并在启动时将 MYSQL_HOST
和 MYSQL_ROOT_PASSWORD
两个环境变量传递给容器。
可以使用以下命令启动服务:
docker-compose up -d
这条命令会启动 mysql
和 my-php-app
两个服务,并在后台运行。
总结
本文介绍了 Docker 命令、Dockerfile、容器互连和 Docker Compose 等 Docker 相关的知识点,并提供了相应的示例说明。了解这些知识点,可以更好地使用 Docker 来开发、部署和运行应用程序。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker管理之碎片知识整理小结 - Python技术站