• docker常用命令大全


    服务相关命令

    启动 docker 服务

    systemctl start docker

    停止 docker 服务

    systemctl stop docker

    重启 docker 服务

    systemctl restart docker

    查看 docker 服务状态

    systemctl status docker

    设置开机启动 docker 服务

    systemctl enable docker

    镜像相关命令

    搜索镜像

    docker search tomcat

    搜索结果如下:

    docker-search-result

    拉取镜像

    docker pull tomcat

    我已经拉取过 tomcat,所以这里用拉取 mysql 来截个图, 不加 tag 的情况下, 默认拉取的就是 latest(最新版本) 拉取过程是有进度条

    docker-pull-1

    拉取完成就是下面这样

    docker-pull-2

    TIP

    指定版本号, 格式如下:

    docker pull 镜像名:版本号

    如果不知道 tag 有哪些, 可以去 Dockerhub 查看

    打开网站直接搜索目标镜像, 比如 tomcat 就会搜到如下结果:

    dockerhub-search-tomcat

    点击结果进入详情页就可以查看到 tag 相关信息:

    tomcat-supported-tag

    使用Dockerfile构建镜像

    1. # docker build -t 镜像名:版本号 . 注意最后边的点 `.` 表示当前目录, 别丢了.
    2. docker build -t my_image:1.0 .

    Docker build 命令可以使用 Dockerfile 来构建镜像。默认情况下,Dockerfile 文件位于构建上下文的根目录下,因此 docker build 命令会自动读取上下文根路径下名为 Dockerfile 的文件。如果 Dockerfile 文件不在根目录下,可以使用 -f 选项来指定 Dockerfile 文件的路径。例如,以下命令将使用 /path/to/Dockerfile 文件构建镜像:

    docker build -f /path/to/Dockerfile -t image_name:tag .

    其中,

    • . 表示当前目录.
    • -f , --file Name of the Dockerfile (Default is PATH/Dockerfile)
    • -t , --tag Name and optionally a tag in the name:tag format

    Dockerfile 简单列举几个指令:

    • FROM : 指定基础镜像
    • WORKDIR : 指定工作目录
    • COPY : 将文件或者目录从构建上下文复制到容器中(推荐)
    • ADD : 将文件或者目录从构建上下文复制到容器中,并且会将压缩文件解压缩,支持 URL
    • RUN : 在容器中执行命令
    • CMD : 容器启动时执行的命令
    • EXPOSE : 指定要监听的端口以实现与外部通信

    举个例子:

    Dockerfile

    1. # nodejs server Dockerfile
    2. # FROM node
    3. # or
    4. FROM node:16
    5. WORKDIR /nodeApp
    6. # COPY <宿主机目录或文件路径> <容器内目录或文件路径>
    7. COPY ./package.json .
    8. # ADD <宿主机目录或文件路径> <容器内目录或文件路径>
    9. # ADD ./package.json .
    10. # shell格式:就像在命令行中输入的Shell脚本命令一样。
    11. RUN npm install
    12. COPY ./src ./server
    13. EXPOSE 8000
    14. CMD ["node", "./server/index.js"]

    查看本地镜像

    docker images

    该命令将会列出从Dockerhub拉取的镜像和你自己使用 docker build 构建的镜像列表

    docker-images

    查看本地镜像 ID

    docker images -q

    删除本地镜像

    1. docker rmi mysql:5.7
    2. # or
    3. docker rmi 2be84dd575ee

    为了准确删除你的目标镜像, 建议删除有多个版本存在的镜像时, 使用镜像名:版本号, 如果二者镜像 ID 不同也可以使用镜像 ID 进行删除, 防止误删

    删除tagnone的镜像

    docker rmi `docker images -f "dangling=true" -q`

    全部删除本地镜像

    docker rmi `docker images -q`

    解释一下, docker images -q 这个命令可以列出全部本地镜像的 ID, 相当于把全部镜像 ID 传给了docker rmi 就实现全部删除效果了.

    docker-images-q

    docker-rmi-result

    container-id

    TIP

    如上图所示: Error response from daemon: conflict: unable to delete eb4a57159180 (cannot be forced) - image is being used by running container 8e27f3c57145

    报了个错: 不能删除IDeb4a57159180的镜像(是nginx镜像), 这个镜像被一个ID8e27f3c57145正在运行的容器使用着.

    我使用nginx镜像启动了一个容器, 此时nginx镜像是不可以被删除的, 如果确实想要删除nginx, 需要先停止所有使用这个镜像的容器, 并且将这些容器删除, 才可以删除nginx镜像

    导出镜像

    1. # docker save -o 给导出的镜像压缩包起个文件名 要导出的镜像名:版本号(推荐) 或者 镜像ID也可以
    2. docker save -o image.tar target_image:tag

    导入镜像

    1. # docker load -i 指定要导入的镜像压缩包文件名
    2. docker load -i image.tar

    导入成功后就可以使用

    docker images

    查看一下啦

    TIP

    如果用镜像 ID 导出的镜像在导入之后是没有名字和tag的, 这种情况我们可以使用 docker tag 给镜像改名字

    docker tag 镜像ID new_image_name:tag

    容器相关命令

    创建容器

    docker run -d --name=my_container -p 8080:8080 tomcat:latest

    Docker 创建容器的命令是 docker run。以下是一些常用的参数:

    • -d: 后台运行容器,并返回容器ID
    • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口;
    • -i: 以交互模式运行容器,通常与 -t 同时使用;
    • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    • --name=my_container: 为容器指定一个名称;
    • --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
    • --rm: 退出容器后会自动删除该容器;

    你可以根据你的需求来选择相应的参数。最后是使用的镜像名和版本号

    TIP

    使用交互模式运行容器时, 会直接进入容器内部, 退出交互模式后, 该容器自动停止运行

    查看容器列表

    1. # 查看正在运行的容器列表
    2. docker ps
    3. # 查看最近一次创建的容器
    4. docker ps -l
    5. # 查看正在运行的容器ID列表
    6. docker ps -q
    7. # 查看全部容器(包括已经停止的容器)
    8. docker ps -a
    9. # 查看全部容器ID列表
    10. docker ps -aq

    查看正在运行的容器列表

    docker-ps

    查看正在运行的容器 ID 列表

    docker-ps-q

    停止运行的容器

    1. # 使用容器名停止
    2. docker stop my_container
    3. # or
    4. # 使用容器ID停止
    5. docker stop container_id
    6. # 使用容器ID停止多个正在运行的容器
    7. docker stop `docker ps -q`

    使用容器 ID 停止多个正在运行的容器

    docker-stop-q

    启动已停止的容器

    1. # 容器名
    2. docker start my_container
    3. # or
    4. # 容器ID
    5. docker start container_id
    6. # 使用容器ID启动多个已停止的容器
    7. docker start `docker ps -aq`

    使用容器名启动

    docker-start

    使用多个容器 ID 启动

    docker-start-aq

    删除容器

    1. # 用容器名删除
    2. docker rm my_container
    3. # or
    4. # 用容器ID删除
    5. docker rm container_id
    6. # 删除多个未运行的容器, 运行中的无法删除
    7. docker rm `docker ps -aq`

    docker-rm-aq

    进入容器(正在运行的容器才可以进入)

    1. # 使用容器名
    2. docker exec -it my_container /bin/bash
    3. # or
    4. # 使用容器ID
    5. docker exec -it container_id /bin/bash

    进入容器后

    docker-exec-it

    查看容器信息

    1. # 容器名
    2. docker inspect my_container
    3. # or
    4. # 容器ID
    5. docker inspect container_id

    内容很多一张截图放不下, 自己查查看吧

    docker-inspect

    容器与宿主机之间的数据拷贝

    • 将容器中目录或文件拷贝到宿主机
    1. # 将容器中 /app/html 目录拷贝到宿主机 /mnt/ 目录中
    2. docker cp container_id:/app/html /mnt/
    3. # 将容器中 /app/html/index.html 文件拷贝到宿主机 /mnt/dist/ 目录中
    4. docker cp container_id:/app/html/index.html /mnt/dist/
    • 将宿主机目录或文件拷贝到容器中
    1. # 将宿主机 /mnt/dist 目录拷贝到容器的 /app 目录中
    2. docker cp /mnt/dist container_id:/app/
    3. # 将宿主机 /mnt/dist/index.html 文件拷贝到容器的 /app/html 目录中
    4. docker cp /mnt/dist/index.html container_id:/app/html/
    • 将宿主机/mnt/dist目录拷贝到容器中, 并重命名为html
    1. # 将宿主机 /mnt/dist 目录拷贝到容器的 /app/ 中重命名为 html
    2. docker cp /mnt/dist container_id:/app/html
    3. # 将宿主机 /mnt/dist/index1.html 文件拷贝到容器的 /app/html/ 中重命名为 index.html
    4. docker cp /mnt/dist/index1.html container_id:/app/html/index.html
  • 相关阅读:
    Splunk HEC token 白名单设置-indexes
    word文档莫名其妙的丢失了怎么办?7个方案恢复
    玩转MongoDB—搭建MongoDB集群
    求二进制中1的个数的三种方法
    浅谈推荐系统之内容推荐
    区块链会议投稿资讯CCF A--ICSE 2025 截止8.2 附录用率
    第三节:运算符【java】
    关于K8s中资源配置范围管理(LimitRange)的一些笔记
    柯桥会计培训|中级会计职称,考过中级,可以从事哪些工作?
    【Unity3D】UI Toolkit容器
  • 原文地址:https://blog.csdn.net/pbymw8iwm/article/details/136850769