在CentOS系统中,Docker已成为应用部署和管理的核心工具,它通过容器化技术,实现了应用程序的快速打包、分发和运行,极大地提升了开发与运维效率,本文将系统性地介绍在CentOS环境下如何使用Docker的常用命令以及管理相关文件,帮助您快速上手并熟练掌握这一强大工具。
Docker的安装与启动
在CentOS上使用Docker之前,首先需要确保其已正确安装,以CentOS 7/8为例,安装过程通常包括以下步骤:
安装必要的依赖包:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加Docker官方仓库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装Docker CE(社区版):
sudo yum install -y docker-ce docker-ce-cli containerd.io
启动并设置Docker开机自启:
sudo systemctl start docker sudo systemctl enable docker
安装完成后,可以通过运行
sudo docker run hello-world
命令来验证Docker是否安装成功,如果看到欢迎信息,则说明Docker引擎已正常运行。
核心命令:镜像与容器管理
Docker的操作核心围绕着镜像和容器两个概念,镜像是静态的模板,而容器是镜像的运行实例。
镜像管理
镜像是创建容器的基础,以下是几个最常用的镜像操作命令:
- 搜索镜像:
docker search [关键词]
,docker search centos
。 - 拉取镜像:
docker pull [镜像名]:[标签]
,docker pull centos:8
,若不指定标签,默认拉取latest
版本。 - 查看本地镜像:
docker images
或docker image ls
。 - 删除本地镜像:
docker rmi [镜像ID或镜像名]
,docker rmi centos:8
。
容器生命周期管理
容器是Docker的执行单元,掌握其生命周期管理命令至关重要。
运行容器:这是最核心的命令。
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用参数包括:
-d
:后台运行容器。-it
:以交互模式运行容器,通常与/bin/bash
等命令结合使用。--name
:为容器指定一个名称。-p [主机端口]:[容器端口]
:将主机端口映射到容器端口。-v [主机目录]:[容器目录]
:将主机目录挂载到容器内,实现数据持久化。
查看容器列表:
docker ps
:列出正在运行的容器。docker ps -a
:列出所有容器(包括已停止的)。
停止容器:
docker stop [容器ID或名称]
。启动已停止的容器:
docker start [容器ID或名称]
。重启容器:
docker restart [容器ID或名称]
。删除容器:
docker rm [容器ID或名称]
,对于正在运行的容器,需要添加-f
参数强制删除。
为了更清晰地展示常用容器命令,可以参考下表:
功能描述 | 命令示例 |
---|---|
以后台模式运行Nginx,并映射端口 | docker run -d -p 8080:80 --name my-nginx nginx |
进入CentOS容器的交互式Shell | docker run -it --name my-centos centos /bin/bash |
查看所有容器 | docker ps -a |
停止名为 my-nginx 的容器 | docker stop my-nginx |
删除名为 my-centos 的容器 | docker rm my-centos |
文件与数据管理
在Docker的使用中,数据持久化和文件交换是常见需求。
容器与主机间的文件拷贝
docker cp
命令可以方便地在容器和宿主机之间复制文件。
- 从主机复制到容器:
docker cp /path/on/host [容器ID或名称]:/path/in/container
- 从容器复制到主机:
docker cp [容器ID或名称]:/path/in/container /path/on/host
数据卷与数据持久化
直接在容器内创建的文件会随着容器的删除而消失,为了持久化数据,Docker提供了数据卷机制,通过在 docker run
命令中使用 -v
参数,可以将主机上的一个目录挂载到容器中。
运行一个数据库容器,并将数据存储在主机的 /my/data
目录:
docker run -d --name my-database -v /my/data:/var/lib/mysql mysql:5.7
这样,即使 my-database
容器被删除,所有数据库数据依然安全地保存在主机的 /my/data
目录中。
使用Dockerfile构建自定义镜像
除了使用官方或他人创建的镜像,我们还可以通过 Dockerfile
来构建符合自己需求的镜像。Dockerfile
是一个文本文件,包含了一系列指令,用于指导Docker如何构建镜像。
以下是一个简单的Dockerfile示例,它基于CentOS镜像,安装了Apache HTTP服务器,并暴露了80端口:
# 基于官方CentOS 8镜像 FROM centos:8 # 设置维护者信息 LABEL maintainer="your-email@example.com" # 安装httpd,并清理yum缓存 RUN yum install -y httpd && yum clean all # 暴露80端口 EXPOSE 80 # 启动httpd服务 CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"] ```保存为名为 `Dockerfile` 的文件后,可以在其所在目录使用以下命令来构建镜像: ```bash docker build -t my-custom-centos-apache .
构建完成后,就可以使用 docker run
命令来运行我们自己创建的镜像了。
相关问答 (FAQs)
Q1: 如何清理Docker系统中所有未使用的镜像、容器、网络和卷,以释放磁盘空间?
A1: Docker提供了一个非常方便的“一键清理”命令,要删除所有悬空的镜像(未被任何容器使用的镜像)、已停止的容器、未使用的网络和构建缓存,可以运行:docker system prune
如果希望删除所有未使用的镜像(不仅仅是悬空的镜像),可以添加 -a
或 --all
标志:docker system prune -a
注意:此操作不可逆,请谨慎使用,确保不会误删重要数据。
Q2: 如何进入一个正在运行的后台容器的内部执行命令或进行调试?
A2: 可以使用 docker exec
命令,该命令允许在正在运行的容器中启动新的进程,最常用的方式是启动一个交互式的Shell。
语法为:docker exec -it [容器ID或名称] [命令]
要进入一个名为 my-web-server
的容器内部,并启动一个bash shell,可以执行:docker exec -it my-web-server /bin/bash
执行后,你将看到容器的命令行提示符,就可以像在普通Linux系统中一样执行各种命令了,完成后,输入 exit
即可退出容器,但容器本身会继续在后台运行。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复