Docker基础(二):常用命令


如题,本文将总结常用的Docker基础命令,包括但不限于:帮助启动类命名镜像命令容器命令


帮助启动类命令

启动docker:systemctl start docker

停止docker:systemctl stop docker

重启docker:systemctl restart docker

查看docker状态:systemctl enable docker

开即自启:systemctl enable docker

查看docker概要信息:docker info

docker帮助文档:docker --help

docker某一命令帮助文档:docker 命令 --help


镜像命令

列出本地主机上的镜像:

docker images

​ -a:列出本地全部的镜像(all)

​ -q:只显示镜像ID (quiet,静默模式)

​ 返回结果中,REPOSITORY代表仓库名,即镜像名,TAG指镜像的版本号。

去docker仓库中搜索镜像:

docker search 镜像名

返回结果有5个参数,分别指:

参数说明
NAME镜像名称
DESCRIPTION镜像说明
STARS点赞数量
OFFICIAL是否官方
AUTOMATED是否为自动构建的

拉取镜像:docker pull 镜像名,完整形式为:

docker pull [OPTIONS] 镜像名:TAG

如果只写了镜像名,则默认TAG为latest,即最新发布版。

删除指定本地镜像:

docker rmi [OPTIONS] 镜像名[:TAG]/ID

如果只写了镜像名,则默认TAG为latest,但如果你的本地没有该镜像的latest版本,就会删除失败。

删除单个:docker rmi 镜像名[:TAG]/ID

删除多个:docker rmi 镜像名1:TAG/ID 镜像名2:TAG/ID

强制删除:-f ,会直接删除镜像的所有容器

删除全部:docker rmi -f $(docker images -qa) ==> 小心坐牢


容器命令

新建+启动容器:

docker run [OPTIONS] 镜像 [COMMAND] [ARG]

其中,OPTIONS非常重要,几个最常用的有:

–name=“容器名字”: 为容器起名,不起的化随机

-i:以交互模式运行容器,通过与-t同时使用

-t:为容器重新分配一个伪输入终端,通过与-i同时使用

-it 也即交互式容器(前台有伪终端,等待交互)

-d:后台运行容器并返回容器ID,也即启动守护式容器(后台运行)

-p:指定端口映射,小写p,如-p 3306:3306指将主机的3306端口映射到该容器内的3306端口

-P:随机端口映射,大写P

-e:创建环境变量

注意,并不是所有的镜像都能够以-d来后台运行,比如ubuntu、centos这些交互式镜像,就需要有一个前台来交互,所以对他们而已,使用-d并不能使其持久化。但是,那些服务类的镜像,比如tomcat、mysql、redis等等,虽然镜像是构建在Linux文件系统上的,但是他们可以通过-d来后台运行。

另外,有镜像才能创建容器,当运行run时,会首先在本地寻找是否有该镜像,如果没有,就去docker仓库中将该镜像拉取到本地,然后在创建容器。

可以通过-e来在改容器中创建一个指定值的环境变量,之后每次进入该容器都可以直接使用,如:

docker run -d --name=r2 -e A=123 redis:6.0.8

列出当前所有在运行中的容器:

docker ps [OPTIONS]

-a:列出当前所有正在运行的容器+历史上运行过的容器(如果容器没被删除)

-l:显示最近创建的容器

-n:显示最近n个创建的容器

-q:只显示容器编号

停止容器:

docker stop 容器名/ID

启动停止的容器:

docker start 容器名/ID

重启容器:

docker restart 容器名/ID

从容器中退出:

1. exit:退出容器并使容器停止
2. ctrl+p+1:退出容器但容器不会停止

删除容器:

docker rm [OPTIONS] 容器名/ID

强制删除:-f,如果不加的化,只能删除停止的容器

删除全部容器:docker rm -f $(docker ps -a -q) ==> 小心坐牢

查看容器日志:

docker logs 容器名/ID

查看容器内的进程信息:

docker top 容器名/ID

查看容器内部细节:

docker inspect 容器名/ID

在容器内部运行指令

docker exec [OPTIONS] 容器名/ID COMMAND [ARG...]

docker exec 会在容器内部运行COMMAND指令。实际上,容器就是个极小的Linux环境,它包含最必须的文件系统,因此实则时该Linux环境在执行这条命令。每个容器都会有一个默认的工作目录,该目录会在镜像的Dockerfile中指定,如果不另外指定的化,容器将在该目录下执行指令。

COMMAND should be an executable, a chained or a quoted command will not work. Example: docker exec -ti my_container "echo a && echo b" will not work, but docker exec -ti my_container sh -c "echo a && echo b" will.

比如,在mysql镜像构建的容器中使用命令date:

最关键的,之前有提到退出容器,那么退出容器后怎么再次进入呢?答案就是exec。进入容器,实际上就是使用容器的终端,因此首先要让容器打开一个终端,故将COMMAND设为/bin/bash或简写为bash。但是此时我们并不能进入这个终端,因为容器并不是交互时运行的,因此还需要使用OPTIONS-it来指定其为交互式运行,才能进入这个容器内的终端。故命令为:

# docker exec -it 容器名/ID /bin/bash
docker exec -it 容器名/ID bash

当然,类似于runexec也可以通过-e来在容器中创建一个环境变量。但是不同于前者,exec创建的环境变量只能在本次执行过程中使用,一旦退出容器,下次再进入就没有该变量了。

另一个非常重要的特性是,使用exec -it .. bash进入的容器,在exit退出之后,不会停止!与其相对应的,是attach命令,该命令也可也进入容器,但是用exit退出之后会导致容器的停止。

从容器内拷贝文件到主机上:

docker cp 容器名/ID:容器内路径 目的主机路径

该命令会将指令的容器内路径中的所有文件,全部拷贝到目的主机,是简单的备份方式。

导入和导出容器

export可以导出容器的内容留作一个tar归档文件。import可以从tar包中的内容创建一个新的文件系统再导入为镜像,注意,是生成镜像,而不是创建容器。

docker export 容器名/ID > 文件名.tar
cat 文件名.tar | docker import - [镜像用户/]镜像名[:TAG]


总结

这里继续借用尚硅谷阳哥画的一张图来总结

参考

[1] 尚硅谷
[2] docker官网

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值