Docker 常用命令

镜像 image

# 查看本机中所有的 docker 镜像
docker images

# 删除镜像
docker rmi 镜像id

# 删除所有的镜像
# 在 Windows 中,需在 Git Bash 或 Bash for Windows 中执行该 Linux 命令
docker rmi $(docker images -q) 

# 搜索镜像(默认从 Docker Hub 仓库)
docker search 镜像关键字

# 下载镜像(默认从 Docker Hub 仓库)
docker pull 镜像名:版本号

# 导出镜像
docker save -o 导出的镜像文件.tar 镜像名:版本号

# 导入镜像
docker load -i 镜像文件.tar

# 给镜像打标签
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

# 上传镜像
docker push [OPTIONS] NAME[:TAG]

# 查看镜像的详细信息
docker inspect [OPTIONS] NAME|ID

容器 container

# 查看正在运行的容器
docker ps

# 查看所有的容器(包括未运行的)
docker ps -a

# 停止、启动、重启某个容器,stop 会直接杀死对应的进程。
docker stop|start|restart 容器id|容器名

# 停止、启动、重启所有的容器
# 在 Windows 中,需在 Git Bash 或 Bash for Windows 中执行该 Linux 命令
docker stop|start|restart $(docker ps -a -q)

# 删除容器(需先停止容器,除非使用 -f 强制删除)
docker rm 容器id|容器名

# 删除所有的容器(先停止运行)
docker rm $(docker ps -a -q)

# 基于镜像构建容器并运行
docker run [OPTIONS] IMAGE

# 查看容器运行的日志。 -f 选项可持续追踪日志
docker logs 容器id|容器名

# 进入容器内部
docker exec -it 容器id|容器名 bash
docker exec -it 容器id|容器名 /bin/bash

docker run

示例一

以 nginx:1.23 镜像来创建并运行容器,容器被命名为 my-nginx

docker run --name my-nginx -d -p 8080:80 nginx:1.23
  • docker run 表示创建并运行容器。
  • –name 指定容器的名称。
  • -d 表示后台运行。
  • -p 8080:80 指定端口映射。8080 是宿主机的端口,80 是容器提供的服务的端口。端口映射是为了将容器的端口暴露出去,以便对外提供服务。
  • nginx:1.23 表示从哪个镜像创建容器。如果没有指定 tag(1.23),默认是 latest。

说明: 创建容器时,会先从本地查找是否有指定的镜像,如果没有,就自动从远程仓库下载。

示例二
docker run --name my-redis -d -p 6379:6379 -v /host/dir:/data redis redis-server --save 60 1 
  • docker run 表示创建并运行容器
  • –name my-redis 指定容器的名称。
  • -p 6379:6379 指定端口映射。将宿主机的端口和容器的端口进行映射。
  • -v /host/dir:/data 指定目录映射。将宿主机的 /host/dir 目录映射(挂载)到容器内部的 /data 目录。
  • redis 表示从 redis:latest 镜像创建容器实例。
  • redis-server --save 60 1 表示设置 redis-server 的持久化机制(RDB)。

docker exec

示例三

进入指定的容器内部,在交互式终端执行 bash 命令

docker exec -it my-nginx bash
  • docker exec 表示进入容器内部,执行一个命令。
  • -it 表示在容器内部创建一个标准输入输出的交互式终端,以便与容器持续交互。
  • my-nginx 要进入的容器的名称
  • bash 进入容器后执行的命令。bash 是 linux 的 shell 交互命令。

一般不推荐在容器内部直接修改文件,因为这些修改只是临时的,一旦容器重启,修改的内容就会丢失。除非做了映射。

数据卷 volume

数据卷可以解决以下问题:

  • 容器内的文件(数据或配置)不方便修改的问题。
  • 数据不可复用的问题。因为容器内的修改默认对外是不可见的,对新创建的容器不可复用,容器一旦重启,所有修改都会丢失。

前提是数据卷要与容器内的目录进行映射。

当然,除了数据卷的映射外,通过目录或文件的映射,也能解决上述问题。

数据卷 volume 是一个虚拟目录,指向宿主机的某个目录(挂载点)。

docker volume [command]

docker volume 是一个数据卷管理命令。它可以执行一系列数据卷相关的操作命令。

  • create 创建一个数据卷。会自动将数据卷挂载到宿主机的某个目录(可通过 inspect 命令查看)
  • inspect 查看数据卷的详细信息,可显示数据卷在宿主机的挂载点
  • ls 列出所有的数据卷
  • prune 删除所有未使用的数据卷
  • rm 删除一个或多个指定的数据卷
# 创建数据卷 html
docker volume create html

# 查看数据卷的详细信息
docker volume inspect html

# 列出所有的数据卷
docker volume ls

示例三

docker run --name my-nginx -d -p 8080:80 -v html:/usr/share/nginx/html nginx:1.23
  • -v html:/usr/share/nginx/html 表示将数据卷 html 与容器内部的 /usr/share/nginx/html 目录进行映射(挂载)。如果数据卷不存在,会自动创建。

-v 参数,除了可以实现数据卷与容器内部的目录映射。还可以实现目录与目录的映射,文件与文件的映射。

  • -v 宿主机目录:容器内目录
  • -v 宿主机文件:容器内文件

示例四

docker run --name mysql -p 3306:3306 \ 
-v /my/datadir:/var/lib/mysql \ 
-v /my/my.cnf:/etc/mysql/conf.d/my.cnf \ 
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0
  • -v /my/datadir:/var/lib/mysql 表示将宿主机的 /my/datadir 目录映射到容器内的 /var/lib/mysql 目录
  • -v /my/my.cnf:/etc/mysql/my.cnf 表示将宿主机的 /my/my.cnf 文件映射到容器内的 /etc/mysql/conf.d/my.cnf 文件
  • -e MYSQL_ROOT_PASSWORD=123456 表示设置环境变量 MYSQL_ROOT_PASSWORD 的值,也就是 root 用户的密码
  • -d 表示后台运行
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值