Docker 常用命令
docker pull docker.io/library/nginx:latest
一个 Docker 镜像下载地址包含 4 部分内容:
docker pull --platform=xxx nginx
默认情况下,docker 会选择当前宿主机 CPU 架构的镜像,大部分情况下我们不需要关注这个参数。
Mac 目前的 M 系列 CPU 都是 arm 架构的,但在运行 AMD64 架构的容器时,会自动调用 QEMU 来模拟 x86_64 指令集,从而实现兼容 AMD64 的镜像,不过可能会存在一些兼容性问题 以及额外的性能开销。
从镜像仓库拉取镜像到本地 docker pull nginx 不写默认是 latest docker pull nginx:latest docker pull nginx:1.22 docker pull nginx:1.22.0-alpine 一般不建议使用 latest,因为最新的镜像是滚动更新的,过一段时间,可能跟你本地的不是同一个。使用 docker images 命令查看本地镜像
docker search nginx
docker images
使用此命令可以查看所有 Pull 到本地的镜像。
docker rmi 镜像id/镜像名
使用此命令可以删除 pull 到本地的镜像,镜像标识可以选择 镜像的 ID(image id)或者镜像的名称(repository)
docker ps
ps 是 Process Status (进程状态) 的缩写,也是 Linux 上的一个经典命令,用于查看进程的状态信息。这一命令也被继承到 Docker 里面了
这些列含义如下:
CONTAINER ID:容器 ID,每个容器在创建时会生成一个唯一的 IDIMAGE:基于那个镜像创建出来的CREATED:镜像创建时间STATUS:镜像当前状态PORTS:镜像使用端口NAMES:容器的名字,如果创建容器时没有指定名字,系统就会随机分配一个。增加 -a 参数可以看到所有的容器,包括正在运行的和已经停止的。
docker run [镜像标识]
使用 run 命令 可以通过 镜像创建一个容器,并启动它。镜像标识可以是镜像 ID 或者镜像名称。
例如:docker run nginx 就是创建一个 Nginx 容器。
docker pull 命令可以省略,直接使用 docker run 运行,如果 docker 发现本地没有这个镜像则会自动拉取。
默认情况下 docker run 创建容器后会导致当前终端挂起,不能进行其他操作,可以增加 -d 参数 表示容器在后台运行,不阻塞当前窗口。
docker run -d nginx
docker run -d --name my_nginx nginx
容器的名称和 容器 ID 的效果是等价的,但是名字更方便记忆。
与端口映射类似的就是目录映射,将容器外和容器内的目录进行绑定,容器内对文件的修改会影响宿主机的文件夹,宿主机的修改也会影响容器内文件夹。这种目录也被称为挂载卷,他的最大作用是数据的持久化。 当容器删除时,容器内的所有数据都会被删除,但通过挂载卷映射到宿主机的文件夹将得以保留。
docker run -d -p 8080:80 -v ./:/usr/share/nginx/html nginx
使用绑定挂载的时候,宿主机的文件会暂时覆盖掉容器内的目录。除了这种用法还有一种叫 Docker 卷,可以在容器之间共享和重用。
可以在命令行通过 -e 参数传递环境变量到容器内部,例如创建一个数据库应用,需要在 创建容器时,就指定数据库的账户、密码等信息。
docker run -d -p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=tech \
-e MONGO_INITDB_ROOT_PASSWORD=dbkuaizi \
mongo
如果不知道容器的环境变量有哪些,可以在 Docker Hub 上搜索一下,或者去 Github 上看一下 readme 文档,都有详细的描述。
docker run -it alpine
通过 -it 参数可以在创建一共容器时,同时进入容器内部的终端。
docker create nginx
与 run 命令功能类似,区别在于只创建容器,不自动启动。
每次使用 docker run 运行都会创建一个新的容器,如果我们需要对同一个容器进行持续的操作,可以通过容器的启停命令来控制。
docker start [容器标识]
使用 start 启停容器的时候,不需要再传递创建容器时的端口映射、挂载卷、环境变量等参数都不需要重新写了,docker 已经自动保存了,重新启动可以按照原因运行。
docker stop [容器标识]
docker run -d --restart always nginx
--restart 参数用来表示 容器在停止时的重启策略,它有两个选项:
always 只要容器停止了,就会立即重启。包含容器因为内部错误崩溃,或者宿主机断电等场景unless-stopped ,与 always 类似,唯一区别是:手动停止的容器不会尝试重启了docker stats {容器标识}
docker logs {容器标识}
这个命令可以看容器的日志,加上 -f 命令,可以持续输出,滚动查看。
参见 docker run
docker rm 容器id
如果拟删除的容器正在运行,则需要先停止容器,再删除容器。
使用 rm 命令可以删除容器,如果要删除运行中的容器 需要加 -f 参数强制删除。
docker inspect {容器标识}
使用这个命令可以看到容器的所有信息,输出的是一个 JSON 格式。