Docker 常用命令完整笔记
Docker 启动类命令
# 启动 Docker
systemctl start docker
# 停止 Docker
systemctl stop docker
# 重启 Docker
systemctl restart docker
# Docker 开机启动
systemctl enable docker
# Docker 各命令帮助文档,如 run 指令
docker run --help
docker 具体指令 --helpDocker 镜像命令
镜像列表 docker images
查看主机上的镜像列表可以使用 docker images 来列出:
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 9c7a54a9a43c 3 weeks ago 13.3kB各个选项说明:
- REPOSITORY:表示镜像的仓库源
- TAG:镜像的标签,版本号
- IMAGE ID:镜像 ID
- CREATED:镜像创建时间
- SIZE:镜像大小
常用命令参数组合:
-a:列出本地所有镜像-q:只显示镜像 ID
[root@localhost ~]# docker images -a -q
0ec8ab59a35f
9c7a54a9a43c镜像查找 docker search
使用 docker search [镜像名称] 命令来查找镜像,如 redis:
docker search redis各个选项说明:
- NAME:镜像名称
- DESCRIPTION:镜像描述
- OFFICIAL:是否 Docker 官方发布
- STARS:表示点赞、喜欢的数量
- AUTOMATED:是否自动构建的
如果只想罗列出指定数量镜像,可以添加参数 --limit,如:
docker search redis --limit 5拉取镜像 docker pull
使用 docker pull [镜像名称]:[TAG] 命令来拉取镜像,如果没有指定 TAG 版本默认 latest,如 redis:
# 拉取最新版 redis
docker pull redis
# 拉取指定版本 redis
docker pull redis:6.0.8删除镜像 docker rmi
删除镜像示例:
docker rmi hello-world可能会出现错误提示:
Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container 7edf17cbcfd2 is using its referenced image 9c7a54a9a43c发现报错时,主要看两点:要么就是 container 实例存在,要么存在镜像依赖:
# 查看容器实例
docker ps -a
# 再删除容器
docker rm 容器实例ID
# 再执行删除镜像命令
docker rmi hello-world引入参数 -f:
-f:强制删除即使容器在执行,如果不加如果已经运行了容器则不能删除
常用的删除命令如下:
# 强制删除
docker rmi -f hello-world
# 删除多个镜像
docker rmi -f xx镜像id xx镜像id
# 删除全部
docker rmi -f $(docker images -qa)查看占用信息 docker system df
[root@localhost ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 1 0 117.1MB 117.1MB (100%)
Containers 2 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B该命令列出了 Docker 使用磁盘的 4 种类型:
- Images:所有镜像占用的空间,包括拉取的镜像、本地构建的镜像
- Containers:运行中的容器所占用的空间(没运行就不占空间),其实就是每个容器读写层的空间
- Local Volumes:本地数据卷的空间
- Build Cache:镜像构建过程中,产生的缓存数据
容器创建新镜像 docker commit
很多时候我们对某一镜像进行了一些升级或改动,又希望可以复用,比如我在默认 ubuntu 镜像中安装并配置了 JDK、MySQL 等,我们可以提交该容器副本使之成为一个新的镜像。
语法:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]参数说明:
-a:提交的镜像作者-c:使用 Dockerfile 指令来创建镜像-m:提交时的说明文字-p:在 commit 时,将容器暂停
# docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
docker commit -a "micro" -m "增加jdk mysql" 原ubuntu容器ID newubuntu:u1
# 使用查看镜像命令
docker images newubuntu:u1
REPOSITORY TAG IMAGE ID CREATED SIZE
newubuntu u1 37af1236adef 15 seconds ago 329 MB容器命令
启动容器 docker run
docker run 命令用于从镜像中创建一个新容器,该命令参数较多,可以使用 docker run --help 查看详细参数解释。
语法:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]列举常用的几个参数进行说明:
-t:在新容器内指定一个伪终端或终端,一般与-i一起使用,即:-it-i:允许你对容器内的标准输入 (STDIN) 进行交互,一般与-t一起使用,即:-it--name:为容器指定一个名称-d:后台运行容器,并返回容器 ID-v:宿主机目录:容器中的目录:挂载目录,将容器中的目录映射到宿主机中-p:指定端口映射,格式为:主机(宿主)端口:容器端口
# 前台运行模式
docker run -it redis
# 后台运行模式
docker run -d redis查看容器 docker ps
语法:
docker ps [OPTIONS]参数说明:
-a:列出当前所有正在运行的容器+历史上运行过的-l:显示最近创建的容器-n:显示最近 n 个创建的容器-q:静默模式,只显示容器编号
已停止容器再启动 docker start
针对已经停止的容器实例,比如 STATUS 为 Exited 的容器:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9ac3579e18bb redis "docker-entrypoint.s…" About a minute ago Exited (0) 12 seconds ago goofy_almeida可以使用 docker start 容器ID 的命令重新启动:
docker start 9ac3579e18bb重启容器 docker restart
docker restart 容器ID或容器名称示例:
docker restart 9ac3579e18bb停止容器 docker stop
docker stop 容器ID或容器名称示例:
docker stop 9ac3579e18bb强制停止容器 docker kill
docker kill 容器ID或容器名称示例:
docker kill 9ac3579e18bb删除停止容器 docker rm
# 普通删除
docker rm 9ac3579e18bb
# 强制删除
docker rm -f 9ac3579e18bb
# 删除全部
docker rm -f $(docker ps -a -q)
# 删除所有已停止容器
docker container prune容器的进入 docker exec 和 docker attach
前台启动和后台启动的区别在于:前台启动只要 exit 退出指令容器也随之停止了;而后台启动使用 docker exec 进入终端 exit 是不会停止容器的。
第一种:docker attach 直接进入容器启动命令的终端,不会启动新的进程,只要 exit 退出指令容器也随之停止了。
docker attach 9ac3579e18bb第二种:(推荐)docker exec 是在容器中打开新的终端,并且可以启动新的进程,exit 退出指令不会导致容器停止。
docker exec -it 9ac3579e18bb /bin/bash容器导入导出 docker import 和 docker export
很多时候我们在生产环境下是无法连接外网的,所以有时候需要用到容器的导入和导出。
- 导出 docker export
将容器导出为 redis-bak.tar
docker export 9ac3579e18bb > redis-bak.tar- 导入 docker import
将容器导入生产镜像,镜像名称为 bak/redis 版本号为 v1.0.0
docker import redis-bak.tar bak/redis:v1.0.0
评论0
暂时没有评论