当前位置:   article > 正文

docker常用命令大全

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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/295033?site
推荐阅读
相关标签
  

闽ICP备14008679号