Appearance
Hello World
安装好 Docker 后,运行第一个容器是最好的验证方式。本节通过几个简单的示例,带你快速上手 Docker 基本操作。
运行 Hello World
bash
docker run hello-world输出:
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
...这条命令背后发生了什么:
- Docker 客户端向 Docker 守护进程发送请求
- 守护进程检查本地是否有
hello-world镜像,没有则从 Docker Hub 拉取 - 基于镜像创建容器并运行
- 容器打印输出后退出
运行交互式容器
bash
# 以交互模式运行 Ubuntu 容器
docker run -it ubuntu bash参数说明:
-i:保持标准输入打开(交互模式)-t:分配一个伪终端(TTY)ubuntu:使用 ubuntu 镜像bash:在容器中执行的命令
进入容器后,你会看到命令提示符变成类似 root@abc123:/# ,这表示你已在容器内部。
bash
# 在容器内执行命令
root@abc123:/# cat /etc/os-release
root@abc123:/# ls /
root@abc123:/# echo "Hello from inside container!"
# 退出容器(容器会停止)
root@abc123:/# exit运行 Nginx Web 服务器
bash
# 后台运行 Nginx 容器,映射 8080 端口
docker run -d -p 8080:80 --name my-nginx nginx参数说明:
-d:后台运行(detached mode)-p 8080:80:将宿主机 8080 端口映射到容器 80 端口--name my-nginx:为容器指定名称
访问 http://localhost:8080 即可看到 Nginx 欢迎页面。
bash
# 查看运行中的容器
docker ps
# 查看容器日志
docker logs my-nginx
# 停止容器
docker stop my-nginx
# 删除容器
docker rm my-nginx
# 停止并删除(一步完成)
docker rm -f my-nginx运行 MySQL 数据库
bash
docker run -d \
--name my-mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=testdb \
-p 3306:3306 \
mysql:8.0参数说明:
-e:设置环境变量MYSQL_ROOT_PASSWORD:root 用户密码(必须设置)MYSQL_DATABASE:自动创建的数据库名-p 3306:3306:映射 MySQL 端口
连接数据库:
bash
# 进入容器内连接 MySQL
docker exec -it my-mysql mysql -uroot -p123456
# 或者使用本机 MySQL 客户端连接
mysql -h 127.0.0.1 -P 3306 -uroot -p123456常用命令速览
bash
# ===== 镜像操作 =====
docker pull nginx # 拉取镜像
docker images # 列出本地镜像
docker rmi nginx # 删除镜像
# ===== 容器操作 =====
docker run -d nginx # 后台运行容器
docker run -it ubuntu bash # 交互式运行容器
docker ps # 列出运行中的容器
docker ps -a # 列出所有容器
docker stop <ID或名称> # 停止容器
docker start <ID或名称> # 启动已停止的容器
docker rm <ID或名称> # 删除容器
docker logs <ID或名称> # 查看容器日志
docker exec -it <ID> bash # 进入运行中的容器
# ===== 系统管理 =====
docker info # Docker 系统信息
docker version # 版本信息
docker system df # 磁盘占用
docker system prune # 清理未使用的资源理解 docker run 命令
docker run 是最常用的命令,完整格式:
bash
docker run [选项] 镜像名[:标签] [命令] [参数]常用选项:
| 选项 | 说明 |
|---|---|
-d | 后台运行 |
-it | 交互式运行,分配终端 |
-p 宿主机端口:容器端口 | 端口映射 |
-v 宿主机路径:容器路径 | 挂载数据卷 |
-e KEY=VALUE | 设置环境变量 |
--name 名称 | 指定容器名称 |
--rm | 容器退出后自动删除 |
--restart always | 容器异常退出后自动重启 |
--network 网络名 | 指定网络 |
--memory 512m | 限制内存使用 |
--cpus 1.5 | 限制 CPU 使用 |
小练习
尝试完成以下练习:
拉取
alpine镜像并在容器内打印 "Hello Docker":bashdocker run alpine echo "Hello Docker"运行一个 Redis 容器:
bashdocker run -d --name my-redis -p 6379:6379 redis:alpine查看容器日志,然后进入容器执行
redis-cli ping:bashdocker logs my-redis docker exec -it my-redis redis-cli ping清理所有练习容器:
bashdocker rm -f my-nginx my-mysql my-redis
总结
通过本节练习,你已经掌握了 Docker 最基本的操作:
docker run创建并运行容器docker ps查看运行中的容器docker logs查看容器日志docker exec进入运行中的容器docker stop/rm停止和删除容器
下一节将系统介绍镜像管理的各种操作。