重启Docker服务以应用新的配置:
sudo systemctl daemon-reload
sudo systemctl restart docker
验证Docker是否安装成功:
sudo docker run hello-world
假如能否成功拉取并运行hello-world镜像docker images 目录linux教程,则说明DockerEngine已成功安装并配置了镜像加速。
至此,你已然成功安装并配置好了Docker和DockerCompose。如今你可以开始使用它们来建立和管理你的容器化应用了。
基本使用方式
好的,在成功安装Docker和DockerCompose以后,接出来我们将介绍它们的基本使用技巧。
这篇手册将分为两部份:
Docker的基本使用:怎样管理单个容器,包括镜像、容器的生命周期管理。
DockerCompose的基本使用:怎样通过一个配置文件来定义和运行多个容器的应用。
Docker基本使用方式
Docker的核心是围绕镜像(Image)和容器(Container)展开的。
1.镜像管理(ImageManagement)
a.搜索镜像
从DockerHub(或则你配置的镜像加速器)上搜索须要的镜像。
docker search nginx
这会列举所有与”nginx”相关的公开镜像。
b.拉取镜像
将远程库房的镜像下载到本地。
# 拉取最新版的 Nginx 镜像
docker pull nginx

# 拉取特定版本的 Nginx 镜像
docker pull nginx:1.21.6
若果不指定标签(tag,如:1.21.6),默认会拉取latest标签的镜像。
c.查看本地镜像
列举所有早已下载到本地的镜像。
docker images
d.删掉本地镜像
当一个镜像不再须要时,可以删掉它以释放c盘空间。
docker rmi nginx:1.21.6
假如该镜像正被某个容器使用,你须要先删掉该容器能够删掉镜像。可以使用-f参数强制删掉。
2.容器生命周期管理(ContainerLifecycleManagement)
a.运行容器(创建并启动)
dockerrun是最核心的命令,它从一个镜像创建一个新的容器并启动它。
基本示例:运行一个NginxWeb服务器
docker run --name my-nginx -p 8080:80 -d nginx
参数解释:
b.查看正在运行的容器
Bash
docker ps
要查看所有容器(包括已停止的),请使用-a参数:
docker ps -a
c.停止容器
docker stop my-nginx
这儿的my-nginx是你在dockerrun时指定的容器名。你也可以使用容器ID。
d.启动已停止的容器
docker start my-nginx
e.重启容器
docker restart my-nginx
f.步入正在运行的容器(执行命令)
有时侯须要步入容器内部进行调试或查看文件。
docker exec -it my-nginx /bin/bash
参数解释:
g.查看容器日志
查看容器的标准输出日志,特别适宜拿来排错。
docker logs my-nginx
# 持续跟踪日志(类似 tail -f)
docker logs -f my-nginx
h.删掉容器
删掉一个或多个早已停止的容器。
# 首先确保容器已经停止
docker stop my-nginx
# 然后删除容器
docker rm my-nginx
假如要删掉一个正在运行的容器linux ftp,须要添加-f参数。
DockerCompose基本使用方式
当你的应用须要多个服务(比如一个Web应用+一个数据库)协同工作时,自动管理多个dockerrun命令会显得十分繁杂。DockerCompose容许你使用一个YAML文件来定义和管理一个多容器的Docker应用。
核心是docker-compose.yml文件。
1.编撰docker-compose.yml文件
假定我们要布署一个WordPress网站,它须要一个WordPress服务和一个MySQL数据库服务。
创建一个名为docker-compose.yml的文件,并写入以下内容:
version: '3.8' # 指定 compose 文件版本
services: # 定义一组服务
db: # 服务名称,这里是数据库服务
image: mysql:5.7 # 使用的镜像
container_name: wordpress_db
volumes: # 数据卷挂载,用于数据持久化
- db_data:/var/lib/mysql
restart: always # 容器退出时总是重启
environment: # 设置环境变量
MYSQL_ROOT_PASSWORD: your_strong_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: your_wordpress_password
wordpress: # 服务名称,这里是 WordPress 服务
image: wordpress:latest
container_name: wordpress_app
volumes:
- ./wp_content:/var/www/html/wp-content
ports: # 端口映射
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306 # 连接到 db 服务的 3306 端口
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: your_wordpress_password
WORDPRESS_DB_NAME: wordpress
depends_on: # 声明依赖关系,wordpress 会在 db 启动之后再启动
- db
volumes: # 定义数据卷
db_data:
wp_content:
关键点:
2.管理应用
在docker-compose.yml文件所在的目录中,执行以下命令。请注意docker images 目录,新版命令是dockercompose(无连字符)。
a.启动应用(创建并启动所有服务)
docker compose up -d
-d参数表示在后台运行。首次运行时,它会手动拉取所需的镜像。
b.查看服务状态
docker compose ps
c.查看服务日志
# 查看所有服务的日志
docker compose logs
# 查看特定服务的日志并持续跟踪
docker compose logs -f wordpress
d.停止并移除容器
docker compose down
这个命令会停止并删掉由docker-compose.yml定义的容器和网路。假如须要同时删掉volumes,可以加上--volumes参数。
e.暂停和恢复服务
# 暂停服务中的容器
docker compose pause
# 恢复服务中的容器
docker compose unpause
f.重启服务
docker compose restart
总结
从简单的dockerrun开始练习,熟悉容器的生命周期。当你须要布署更复杂的应用时,再转向使用DockerCompose,这将大大简化你的布署和管理工作。