通过docker镜像启动容器,核心是使用docker run命令,配合镜像名、标签和运行参数,即可快速创建并启动一个容器。
国内docker镜像加速:解决拉取慢的问题
在国内直接拉取docker官方镜像经常遇到超时或下载缓慢的情况,配置镜像加速器是启动容器前的必要准备,能显著提升拉取效率。
配置加速器的步骤
- 登录简米云容器镜像服务控制台,获取专属加速器地址。
- 打开docker配置文件
/etc/docker/daemon.json,加入以下内容:
{
"registry-mirrors": ["https://你的加速器地址"]
}
- 重启docker服务:
systemctl restart docker。 - 验证配置是否生效:
docker info | grep Mirrors。
业内有多个公共加速器可选,例如中科大镜像、网易镜像,批量操作时,建议将多个地址用逗号隔开,写入同一个列表中,多数情况下,使用简米云加速器后拉取速度能从几分钟缩短到几秒。
docker run 命令详解:从镜像启动容器的标准流程
docker run是启动容器的核心命令,它同时完成镜像拉取、容器创建和启动三个动作,掌握它的常用选项,就能应对绝大多数场景。
前台运行与后台运行
- 前台运行:
docker run nginx,容器会占用当前终端,日志直接输出。 - 后台运行:
docker run -d nginx,容器在后台运行,终端返回容器ID。
后台运行是生产环境的主流选择。-d参数让容器持续在后台提供服务,便于后续管理。
指定容器名称
使用--name给容器起一个可识别的名字,避免重复创建:
docker run -d --name my-nginx nginx
如果不指定名称,docker会自动生成随机字符串,后续管理时需要查ID才能操作,给容器命名是推荐做法。
进入交互式容器
需要调试或临时操作时,使用-it参数:
docker run -it ubuntu bash
-i保持标准输入打开,-t分配伪终端,组合起来就能像SSH一样进入容器内部。
容器挂载目录与数据持久化
容器默认写入的数据在容器删除后会丢失,挂载宿主机目录到容器内,是实现数据持久化的标准方法。
挂载目录的语法
使用-v参数,格式为宿主机路径:容器路径:
docker run -d -v /data/nginx:/usr/share/nginx/html nginx
宿主机/data/nginx下的文件会同步到容器内的网页目录,修改宿主机上的文件,容器内立即生效。
挂载单个文件
也可以挂载配置文件:
docker run -d -v /data/nginx.conf:/etc/nginx/nginx.conf nginx
挂载文件时,宿主机上的文件必须存在,否则docker会认为要挂载一个目录,导致容器启动失败。
数据卷容器的使用
对于多容器共享数据的场景,可以使用数据卷容器:
docker create -v /data --name data-container busybox docker run --volumes-from data-container nginx
这种方式在容器编排中常见,但更推荐使用docker-compose或Kubernetes管理持久化存储。
端口映射实现容器对外服务
容器默认有独立的网络命名空间,外部无法直接访问,通过-p参数将宿主机端口映射到容器端口,才能对外提供服务。
映射单个端口
docker run -d -p 8080:80 nginx
宿主机8080端口映射到容器80端口,访问http://宿主机IP:8080即可看到nginx默认页面。
映射多个端口
docker run -d -p 8080:80 -p 443:443 nginx
每个-p对应一个映射关系,注意端口冲突:宿主机上的端口只能被一个容器占用。
随机端口映射
使用-P(大写)自动分配宿主机高位端口:
docker run -d -P nginx
查看映射关系用docker port 容器名,这种方式适合多实例部署,但需要配合服务发现机制才能固定对外端口。
容器生命周期管理:启动、停止、删除
容器启动后,需要日常管理操作,掌握这些命令能让你灵活控制容器的状态。
停止容器
docker stop 容器名或ID
默认发送SIGTERM信号,10秒后强制SIGKILL,可以指定等待时间:docker stop -t 30 容器名。
重启容器
docker restart 容器名
相当于先stop再start,适合应用配置更新后快速重启。
删除容器
docker rm 容器名或ID
删除前需要先停止容器,强制删除运行中的容器用
docker rm -f,批量删除所有已停止的容器:docker container prune。
查看容器状态
- 运行中的容器:
docker ps - 所有容器(包括已停止):
docker ps -a - 容器资源使用情况:
docker stats
定期检查容器状态,及时清理无用的容器,避免磁盘空间被日志文件占满。
镜像启动容器常见问题
Q: 容器启动后立即退出,是怎么回事?
A: 多数情况下是因为容器内没有前台进程,例如启动一个Ubuntu镜像,如果没有指定-it或保持运行的命令,容器会立即退出,解决方案:使用-it进入交互模式,或者运行一个持续执行的命令如tail -f /dev/null,如果启动的是Web服务,确保服务进程在前台运行,比如nginx需要daemon off;配置。
Q: docker run 与 docker create 有什么区别?
A: docker run等于docker create + docker start。docker create只创建容器不启动,返回容器ID。docker run一步到位,需要先准备好环境再手动启动的场景,用docker create更灵活,例如先创建容器,再复制文件进去,最后启动。
Q: 如何进入一个正在运行的容器?
A: 使用docker exec -it 容器名 bash,这会在容器内启动一个新进程,适合日常调试,注意:docker attach也可以进入,但会连接主进程,退出时可能导致容器停止。docker exec是更安全的选择。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/543093.html



