在Centos Stream 9上Docker的实操教程 - Docker的常用命令
- Docker启动类命令
- Docker镜像命令
- 镜像列表 docker images
- 镜像查找 docker search
- 拉取镜像 docker pull
- 删除镜像 docker rmi
- 查看占用信息 docker system df
- 容器创建新镜像 docker commit
- 容器命令
- 启动容器 docker run
- 查看容器 docker ps
- 已停止容器再启动 docker start
- 重启容器 docker restart
- 停止容器 docker stop
- 强制停止容器 docker kill
- 删除停止容器 docker rm
- 容器的进入 docker exec 和 docker attach
- 容器导入导出 docker import 和 docker export
- 结语
Docker启动类命令
#启动docker
systemctl start docker
#停止docker
systemctl stop docker
#重启docker
systemctl restart docker
#docker开机启动
systemctl enable docker
#docker各命令帮助文档 如 run指令 docker run --help
docker 具体指令 --help
Docker镜像命令
镜像列表 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 XX某个镜像名称 命令来查找镜像,如redis
docker search redis
各个选项说明:
- NAME: 镜像名称
- DESCRIPTION: 镜像描述
- OFFICIAL: 是否 docker 官方发布
- STARS: 表示点赞、喜欢的数量
- AUTOMATED: 是否自动构建的
如果你只想只想罗列出指定数量镜像,可以添加参数 --limit, 如:
docker search redis --limit 5
拉取镜像 docker pull
使用 docker pull XX某个镜像名称:TGA 命令来查找镜像,如果没有指定TGA版本默认latest,如redis
#拉取最新版redis
docker pull redis
#拉取指定版本redis
docker pull redis:6.0.8
#
删除镜像 docker rmi
我们上一章节run了hello-world镜像,我们来删除试试;
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]]
参数说明:
OPTIONS说明:
- -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 容器ID
#普通删除
docker rm 9ac3579e18bb
#强制删除
docker rm -f 9ac3579e18bb
#删除全部
docker rm -f $(docker ps -a -q)
#删除所有已停止容器
docker container prune
容器的进入 docker exec 和 docker attach
前面我们在介绍docker run 之命令的时候,分别介绍了前台启动 和后台启动,两者的区别就在于前台启动,只要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
结语
本章主要介绍了Docker 启动类命令,Docker 镜像、容器常见命令,如果你觉得本文对你有帮助,可以点赞收藏,感谢!
下一章:在Centos Stream 9上Docker的实操教程 - Docker容器数据卷