Docker常用命令

一、帮助启动类命令:

启动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命令后的镜像


.....持续更新中,学到多少,更新多少。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值