一、帮助启动类命令:
启动docker:systemctl start docker
停止docker:systemctl stop docker
重启docker:systemctl restart docker
查看docker状态:systemctl status docker
开机自启动:systemctl enable docker
查看docker概要信息:docker info
查看docker总体帮助文档:docker --help
查看docker具体帮助文档:docker 具体命令 --help
二、镜像命令:
下列我使用redis镜像作为参考。
列出本地主机所有镜像:docker images
列出本地主机所有镜像id:docker images -qa
查询镜像:docker search redis
查询前排名前5个的镜像:docker search --limit 5 redis
下载镜像:docker pull redis
下载指定版本的镜像:docker pull redis:6.0.8
查看镜像/容器/数据卷所占空间:docker system df
删除镜像:docker rmi redis/镜像id
强制删除镜像:docker rmi -f redis
删除多个镜像:docker rmi -f redis ubuntu ....
删除全部镜像:docker rmi -f $(docker images -qa)
面试题:谈谈docker虚悬镜像是什么?
答:仓库名跟版本号都是<none>的镜像,俗称虚悬镜像dangling image。没有什么用的一个镜像,遇到直接删掉即可。
三、容器命令:
--name="容器新名字":为容器指定一个名称;
-d:后台运行容器并返回容器ID,同时启动守护式容器(后台运行);
-P:随机端口映射
-p:指定端口映射(常用)
-i:以交互模式运行容器,通常与-t同时使用;
-t:为容器重新分配一个伪输入终端,通常与-i同时使用;
即启动交互式容器(伪终端)
例子:
docker run -it --name myu1 ubuntu /bin/bash
代码说明:
使用ubuntu:latest以交互模式启动一个名为myu1的ubantu容器,在ubantu容器内执行/bin/bash命令。
列出当前正在运行的容器:docker ps
列出当前正在运行的容器id:docker ps -q
显示最近创建的5个容器:docker ps -n 5
退出容器,容器停止:exit
退出容器,容器不停止:ctrl + p + q
启动已停止的容器:docker start 容器id/容器名
重启容器:docker restart 容器id/容器名
停止容器:docker stop 容器id
强制停止容器:docker kill 容器id
删除已停止的一个容器:docker rm 容器id
一次性删除多个容器:docker rm -f $(docker ps -qa)
大部分场景下,我们希望docker的服务是在后台运行的,例如redis,rabbitmq等,
我们可以通过 -d 指定容器的后台运行模式。
启动守护式容器 (后台服务器):docker run -d redis (推荐)
启动交互式容器 (前台服务器):docker run -it redis (容易造成误删窗口,导致容器停止)
查看容器日志:docker logs 容器id
查看容器内运行的进程:docker top 容器id
查看容器内部细节:docker inspect 容器id
进入redis服务:docker exec -it 容器id redis-cli
进入正在运行的容器并以命令行交互 方案1:docker exec -it 容器id /bin/bash (推荐)
进入正在运行的容器并以命令行交互 方案2:docker attach 容器id
(如 -d 守护式运行的后台ubantu容器,重新以 -it 交互式前台运行)
面试题:简述exec attach的区别。
答:
1、attach直接进入容器启动的终端,不会启动新的进程,用exit退出,会导致容器停止。
2、exec是在容器中打开新的终端,并可以启动新的进程,用exit退出,不会导致容器停止。
从容器内拷贝文件到主机上:docker cp 容器id:容器内路径 主机目标路径
例子 (从容器的/tmp路径拷贝a.txt,复制到主机/root下):docker cp 容器id:/tmp/a.txt /root
导入导出容器
导出容器:export导出容器的内容作为一个tar归档文件
用法:docker export 容器id > 文件名.tar
案例:docker export 容器id > abcd.tar (此容器为redis)
导入容器:import从tar包中的内容创建一个新的文件系统再导入为镜像文件
用法:car 文件名.tar | docker import -镜像用户名/镜像名:镜像版本号
案例:cat abcd.tar | docker import - lingon/redis:6.0.8
四、commit操作
简介:
docker pull 下来的镜像都是最基层最小的镜像,仅包含核心必要的部分。若自己想要再次镜像中添加额外的功能,就需要用到commit操作。提交容器副本,使之成为一个新的镜像。
例如:
docker pull ubuntu,ubuntu镜像只有72.8m,仅包含核心部分内容。该镜像中只有一些最基本的命令,vim 等高级/复杂一些的命令则是被剔除的。当我需要重新使用vim命令时,就需要通过commit操作来实现添加额外功能。
案例:
docker run -it ubuntu /bin/bash (启动进入ubuntu容器)
apt-get update (更新包管理工具)
apt-get -y install vim (安装所需的vim命令)
// 此时该容器可使用vim命令。回到主机命令行,使用commit使之成为新的镜像
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
docker commit -m="vim cmd add ok" -a="lingon" 23c27ec15dd8 lingon/myubuntu:1.3
docker images (查看镜像列表)// 此时就会发现有一个名为 "/lingon/myubuntu" 的镜像,这个就是加了vim命令后的镜像
.....持续更新中,学到多少,更新多少。