Docker
约 746 字大约 2 分钟
2025-07-08
1.概念
Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
Docker 的优势:
- 轻量级高效:比虚拟机占用更少资源,秒级启动时间
- 可移植性:在各种云平台间迁移
2.命令
2.1 镜像
- 拉取镜像语法
docker pull 镜像名:镜像版本
2.2 容器
2.2.1 查看容器
- 语法:
docker ps 参数
常见的参数:
-a, --all
: 显示所有容器,包括停止的容器。-q, --quiet
: 只显示容器 ID。-l, --latest
: 显示最近创建的一个容器,包括所有状态。
举例:
# 查看所有正在运行的容器
docker ps
# 查看所有的容器
docker ps -a
2.2.2 创建容器
- 语法:
docker run 参数
常见参数说明:
--name
: 给容器指定一个名称-p
: 端口映射,格式为host_port:container_port
--env
或-e
: 设置环境变量。-d
: 后台运行容器并返回容器 ID-v
: 挂载卷,格式为host_dir:container_dir
。
2.2.3 启动、停止、重启容器
- 语法:
docker start/stop/restart 容器名
- 删除容器:
# 删除单个容器
docker rm 容器名称(或容器id)
# 删除多个容器
docker rm 容器名称(或容器id) 容器名称(或容器id) 容器名称(或容器id)
# 删除所有的容器
docker rm $(docker ps -a -q)
2.3 日志
- 语法:
docker logs 参数 镜像名称
常见的参数:
--tail
: 仅显示日志的最后部分,例如--tail 10
显示最后 10 行-t, --timestamps
: 显示日志时间戳--details
: 显示提供给日志的额外详细信息。
例子:
# 显示容器日志
docker logs my_container
# 显示最后 10 行的日志
docker logs --tail 10 my_container
# 显示带有时间戳的日志
docker logs -t my_container
3.Linux安装docker
官方帮助文档:https://docs.docker.com/engine/install/centos/
3.1 安装命令
卸载之前的docker
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
需要的安装包
yum install -y yum-utils
设置镜像的仓库
# 国外的,不推荐,linux命令直接报错:连接docker官网超时 yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # 国内阿里云 yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件包索引
yum makecache
安装docker相关的 docker-ce 社区版 而ee是企业版
yum install docker-ce docker-ce-cli containerd.io
启动docker
service docker start
查看docker状态
service docker status
使用docker version查看是否安装成功
docker version
设置docker开机自启动
systemctl enable docker.service
查看docker是否开机自启动成功
systemctl is-enabled docker
3.2 配置阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://svctvo40.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker