Docker 常用命令汇总

容器管理

  • docker build 构建镜像
  • docker pull 拉取镜像
  • docker push 推送镜像
  • docker run 运行容器
    • 示例:docker run --name nginx1 -p 80:80 -d nginx
    • 参数说明:--name 容器名称,-p 端口映射,-d 后台运行
    • Redis 持久化示例:docker run --name some-redis -p 6379:6379 -d redis redis-server --appendonly yes

容器生命周期控制

  • docker pause/unpause 暂停/恢复容器
  • docker stop/start/restart 停止/启动/重启容器
  • docker ps 查看容器状态
  • docker logs 查看日志
  • docker exec -it 进入容器(交互模式)
  • docker rm 删除容器

镜像管理

  • docker images 查看本地镜像
  • docker rmi 删除镜像
  • docker save 保存镜像为文件
    • 示例:docker save -o nginx.tar nginx:latest
  • docker load 从文件加载镜像
    • 示例:docker load -i nginx.tar

CentOS 7 安装 Docker

环境要求

  • CentOS 7 内核版本 ≥ 3.10

安装步骤

  1. 卸载旧版本:
    yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
    
  2. 安装依赖并配置仓库:
    yum install -y yum-utils
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  3. 安装 Docker CE(社区版):
    yum install -y docker-ce
    

防火墙配置

  • 关闭防火墙:
    systemctl stop firewalld
    systemctl disable firewalld
    
  • 查看状态:
    systemctl status firewalld
    

Docker 服务管理

  • 启动/停止/重启 Docker:
    systemctl start/stop/restart docker
    
  • 配置镜像加速(阿里云示例):
    修改 /etc/docker/daemon.json
    {
      "registry-mirrors": ["https://<your-aliyun-mirror>.mirror.aliyuncs.com"]
    }
    
    重载配置:
    systemctl daemon-reload
    systemctl restart docker
    

数据卷(Volume)操作

常用命令

  • 创建数据卷:docker volume create html
  • 查看详情:docker volume inspect html
  • 删除未使用数据卷:docker volume prune
  • 删除指定数据卷:docker volume rm html

挂载示例

  • 挂载目录到容器:
    docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx
    
  • 挂载宿主机文件:
    docker run -v /host/path/file.conf:/container/path/file.conf -d image_name
    

自定义镜像(Dockerfile)

基础指令

  • FROM 指定基础镜像(如 FROM ubuntu:16.04
  • ENV 设置环境变量(如 ENV JAVA_DIR=/usr/local
  • COPY 复制文件(如 COPY ./jdk8.tar.gz $JAVA_DIR/
  • RUN 执行命令(如 RUN yum install -y gcc
  • EXPOSE 声明端口(如 EXPOSE 8090
  • ENTRYPOINT 启动命令(如 ENTRYPOINT java -jar /app.jar

示例:Java 应用镜像

FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
EXPOSE 8090
ENTRYPOINT ["java", "-jar", "/tmp/app.jar"]

构建命令:

docker build -t javaapp:1.0 .

Docker Compose 部署

示例文件

version: "3.8"
services:
  mysql:
    image: mysql:5.7.25
    environment:
      MYSQL_ROOT_PASSWORD: 123
    volumes:
      - /tmp/mysql/data:/var/lib/mysql
  web:
    build: .
    ports:
      - "8090:8090"

常用命令

  • 启动服务:docker-compose up -d
  • 查看日志:docker-compose logs
  • 重启服务:docker-compose restart service_name

私有镜像仓库

无 UI 版本

docker run -d --restart=always --name registry -p 5000:5000 -v registry-data:/var/lib/registry registry

带 UI 版本(Docker Compose)

version: '3.0'
services:
  registry:
    image: registry
    volumes:
      - ./registry-data:/var/lib/registry
  ui:
    image: joxit/docker-registry-ui:static
    ports:
      - "8080:80"
    environment:
      REGISTRY_TITLE: "私有仓库"
      REGISTRY_URL: http://registry:5000

配置 Docker 信任仓库
修改 /etc/docker/daemon.json

{
  "insecure-registries": ["http://<your-ip>:5000"]
}

重载配置:

systemctl daemon-reload
systemctl restart docker
```@[TOC](这里写自定义目录标题)


更多推荐