Docker常用命令

安装

CentOS

  • 卸载旧版docker

    1
    2
    3
    4
    5
    6
    7
    8
    sudo yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine
  • 添加仓库、源

    1
    2
    3
    4
    5
    6
    7
    8
    # 先安装yum-utils工具
    sudo yum install yum-utils -y

    # 添加阿里云源
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    # 官方源
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 下载安装

1
sudo yum install docker-ce docker-ce-cli containerd.io -y
  • 启动docker服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 启动
sudo systemctl start docker

# 停止
sudo systemctl stop docker

# 重启
sudo systemctl restart docker

# 开机自启
sudo systemctl enable docker

# 取消开机自启
sudo systemctl disable docker

常用命令

配置项

  • 修改源

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 配置文件: /etc/docker/daemon.json 
    {
    "registry-mirrors": ["https://z34u8nau.mirror.aliyuncs.com"]
    }

    # 重载配置文件
    systemctl daemon-reload

    # 重启服务
    systemctl restart docker

    # 可能会需要登录操作
    sudo docker login --username=用户名 registry.cn-hangzhou.aliyuncs.com

镜像操作

  • docker images

    • 查看当前已下载的镜像: docker images

    • 查看当前没有tag的镜像: docker images -f “dangling=true”

  • docker search

    • 查找镜像: docker search xxxxx
  • docker pull

    • 拉取镜像: docker pull xxxxx
  • docker save

    • 导出镜像: docker save 镜像tag -o xxx.tar
  • docker rmi

    • 删除镜像: docker rmi 镜像名称

    • 删除没有tag的镜像: docker rmi $(docker images -f “dangling=true” -q) -f

  • docker imspect

    • 查看镜像的信息: docker inspect 进行名称

容器操作

  • docker run

    • 启动容器: docker run xxxx

    • 交互式启动容器: docker run -it xxxx /bin/bash

    • 后台启动容器: docker run -d xxxx 启动命令

  • docker exec

    • 在指定容器中执行程序: docker exec -it 容器ID CMD
    • 例如: docker exec -it aa7c1b0a86ca /bin/bash
  • docker ps

    • 查看当前运行的容器: docker ps
  • docker logs

    • 查看容器的输出信息: docker logs 容器ID
  • docker stop

    • 停止容器: docker stop 容器ID
  • docker attach

    • 重新获取容器的终端: docker attach 容器ID
  • docker export

    • 导出容器:docker export 容器ID > xxxxx.img
  • docker import

    • 导入容器: cat xxxx.img | docker import - test/ubuntu:v1
  • docker rm

    • 删除容器: docker rm -f 容器ID

推送镜像

  • 修改配置:

    1
    2
    3
    4
    5
    6
    7
    #配置文件 /etc/docker/daemon.json 
    {
    "registry-mirrors": ["https://z34u8nau.mirror.aliyuncs.com"],
    "insecure-registries":["192.168.1.220:51005"]
    }

    #添加 insecure-registries 配置(本地的服务器地址和端口)
  • 推送镜像到本地仓库

    • 将镜像tag重命名: docker tag registry:2.7.1 192.168.1.220:51005/offline/registry:2.7.1
    • 推送镜像: docker push 192.168.1.220:51005/offline/registry:2.7.1

dockerfile

命令 说明
FROM 指定使用的基础镜像,基于哪个镜像来指针当前的镜像
RUN 在构建容器时,在容器内执行指定的Shell命令(docker build 时执行)
COPY 拷贝文件到容器中的指定目录
CMD 启动容器时,执行指定的命令(docker run 时执行,该命令与容器共存亡),该命令结束,则容器运行结束。可被docker run命令行中指定的参数所覆盖。如果一个Dockerfile中存在多个CMD命令,则只有最后一条生效。
USER 指定镜像运行时,默认的用户身份
EXPOSE 声明容器的暴露端口
  • dockerfile文件示例
1
2
3
4
5
6
###################################################
FROM centos:centos7.9.2009
RUN yum install epel-release -y
RUN yum install git cppcheck gcc gcc-c++ make cmake3 -y && ln -sv cmake3 /usr/bin/cmake
COPY a.txt /root/a.txt
USER root
  • 构建镜像
1
2
3
docker build -t nginx:v3 .

# docker build -t 标签名称 Dockerfile所在的目录