Hey, Nice to meet You. 

必有过人之节.人情有所不能忍者,匹夫见辱,拔剑而起,挺身而斗,此不足为勇也,天下有大勇者,猝然临之而不惊,无故加之而不怒.此其所挟持者甚大,而其志甚远也.          ☆☆☆所谓豪杰之士,

Docker中常用的命令

1、帮助命令

[1]、显示docker的版本信息

docker version

image

image

[2]、显示docker的系统信息

docker info

image

[3]、查看docker中命令的用法

docker --help

image

2、镜像相关命令

[1]、查看镜像

# 查看本地主机上的镜像
docker images [OPTIONS]

# 查看本地所有的镜像
docker images -a

OPTIONS说明:

  • -a:列出本地所有的镜像(含中间镜像层)
  • -q:只显示镜像ID
  • --digests:显示镜像的摘要信息
  • --no-trunc:显示完整的镜像信息

image

各个选项说明:

  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像ID
  • CREATED:镜像的最后时间
  • SIZE:镜像的大小

[2]、搜索镜像

# 从网络中查找需要的镜像,可以通过以下命令搜索
docker search [OPTIONS] 镜像名称

# 例如搜索mysql
docker search mysql

# 搜索镜像并且是官方的
docker search --filter "is-official=true" mysql

# 搜索镜像并starts大于多少的
docker search --filter stars=10 mysql

OPTIONS说明:

  • --filter=:过滤
  • --no-trunc:只显示完整的镜像描述
  • --automated:只列出automated build类型的镜像

image

各个选项说明:

  • NAME:仓库名称
  • DESCRIPTION:镜像的描述
  • STARS:类似Github里面的Star,表示点赞(热度),反应一个镜像的受欢迎程度
  • OFFICIAL:是否为官方发布的镜像
  • AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

[3]、从DockerHub上搜索

出了通过上面的docker search来搜索镜像之外,还可以去Docker Hub搜索,包括官方镜像和其它公开镜像。官方网址:https://hub.docker.com/search?type=image

image


[4]、拉取镜像

拉取镜像就是从远程Docker仓库下载镜像到本地。

# 特别注意:如果版本号不指定则默认最新的版本
docker pull 镜像名称
docker pull 镜像名称:版本号
# 例如下载mysql5.7镜像
docker pull mysql:5.7

下载一个 nginx 的镜像 , 需要注意:如果下载的时候,不指定版本,会下载最新的版本。

image


[5]、删除镜像

# 按照镜像id删除镜像
docker rmi 镜像ID
# 按照镜像id删除镜像,-f强制删除
docker rmi -f 镜像ID
#删除多个,按照镜像id
docker rmi -f 镜像ID 镜像ID 镜像ID
#删除多个,按照镜像名
docker rmi -f 镜像名1:TAG 镜像名2:TAG
#删除全部的镜像
docker rmi -f $(docker images -qa)

删除刚刚下载的 nginx 镜像。

image

3、容器相关命令

[1]、列出正在运行的容器

docker ps [OPTIONS]

OPTIONS说明:

  • -a:列出当前所有正在运行的容器+历史上运行过的
  • -l:显示最近创建的容器
  • -n:显示最近n个创建的容器
  • -q:静默模式,只显示容器编号
  • --no-trunc:不截断输出

[2]、创建与启动容器(重要)

① 、什么是宿主机?

说简单点就是主机,比如我们的虚拟机(Linux)是运行在Windows系统上的,那么相对于虚拟机而言,此时正在使用的计算机就是宿主机。那么我们安装的Docker容器的宿主机则是虚拟机,因为它运行在虚拟机上的。


②、创建容器命令:

#创建容器命令如下
docker run [OPTIONS] 镜像ID/镜像名称 [COMMAND]

#创建并启动容器的简单举例
docker run -it --name=mycentos centos:7 /bin/bash
# /bin/bash:放在镜像名后的是命令,表示容器创建之后执行,这里我们希望有个交互式Shell,因此用的是 /bin/bash

OPTIONS说明(注意:下面的每一个参数都非常重要):

  • -i:以交互模式运行容器,通常与-t同时使用
  • -t:为容器中心分配一个伪输入终端,通常与-i同时使用。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
  • -d:后台运行容器,并返回容器ID,也即启动守护式容器(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)
  • --name=容器新名字(=可以用空格代替):为创建的容器命名。
  • -p:表示端口映射,格式为:主机(宿主)端口:容器端口。前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
  • -h:设置容器主机名hostname。
  • -v 或者 --volume:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
  • -m :设置容器使用内存最大值;
  • -e username="ritchie": 设置环境变量,例如给MySQL设置用户名和密码等;
  • --net="bridge": 指定容器的网络连接类型,支持 bridge(会在主机上创建一个名为docker0的虚拟网桥);host(和宿主机共用);none(拥有自己的Network Namespace,需要自己配置);container(和已经存在的一个容器共享) 四种类型;
  • --restart=unless-stopped:随着docker的启动而启动。docker容器启动策略,有这些参数:no,默认策略,在容器退出时不重启容器;on-failure,只有在非0状态退出时才重新启动容器;no-failure:3,在容器非正常退出时重启容器,最多3次;always,无论退出状态如何都重启容器;unless-stopped,在容器退出时总是重启,但不包括Docker守护进程启动时就已经停止的容器(说简单就是不重启Docker容器中已经停止的容器);
  • --privileged=true:授权,防止容器创建失败

(1) 交互式方式创建容器

以交互式方式创建并启动容器,启动完成后,直接进入当前容器。使用exit命令退出容器。需要注意的是以此种方式启动容器,如果退出容器,则容器会进入停止状态。可以理解成交互式容器 是前台容器。

#简单举例
docker run -it --name=mycentos centos:7 /bin/bash
# -it:表示运行容器并进入它的命令行
# --name=mycentos:给当前的容器命名
# centos:7:使用该镜像创建容器
# /bin/bash:放在镜像名后的是命令,表示容器创建之后执行的命令,这里我们希望有个交互式Shell,因此用的是 /bin/bash

image

创建好容器,并且已经进入到容器内部了,可以直接观察前面中括号里面的内容发现,跟创建容器之前不一样了,并且 通过 ll 命令会发现,其实容器内部也是一个 centos , 我们可以把每个容器都看成一个小电脑或者服务器。

然后查看刚刚创建的容器是否已经有了,这里要使用docker ps -a才行,因为此时不是后台运行的容器。

image


(2) 守护式方式创建容器:

docker run -id --name=mycentos2 centos:7

查看 docker 容器是否已经运行:

image


[3]、进入正在运行的容器

上面创建的守护式容器可以通过这个命令进入:

docker exec -it 容器名称或者容器ID /bin/bash

image

[4]、启动容器、重启容器

#启动容器
docker start 容器ID或者容器名

#一次启动多个
docker start $(docker ps -a -q)

#重启容器
docker restart 容器ID或容器名

[5]、停止容器

最好先通过 docker ps 查看正在运行的容器

#停止容器
docker stop 容器ID或容器名

#强制停止容器
docker kill 容器ID或容器名

#一次停止多个
docker stop $(docker ps -a -q)

[6]、删除容器

#删除已停止的容器
docker rm 容器ID或容器名

#强制删除容器(包括运行中的)
docker rm -f 容器ID或容器名

#一次性删除多个容器
docker rm -f $(docker ps -a -q)

[7]、容器的其它命令

#查看容器日志
docker logs 容器ID或容器名

#查看容器详细信息
docker inspect 容器ID或容器名

#列出或指定容器端口映射
docker port 容器ID或容器名

#显示一个容器运行的进程
docker top 容器ID或容器名

[8]、文件拷贝

将linux宿主机中的文件拷贝到容器内可以使用命令:

docker cp 需要拷贝的文件或目录 容器ID或名称:容器内路径
#例如如下命令: 
docker cp a.txt mycentos2:/usr/local/

image

将容器中的文件拷贝到linux宿主机中使用如下命令:

docker cp 容器名称:容器目录 需要拷贝的文件或目录
#例如如下命令: 
docker cp mycentos2:/usr/local/a.txt ./

[9]、目录挂载(重要)

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器,这样我们就可以直接在宿主机上操作容器中的文件了,所以一般我们都会进行目录的挂载,对于mysql的存储文件路径,一般都会挂载到容器里,因为容器一旦删除了数据也就不再了,但是宿主机的数据不会被删除。操作:在创建容器时 添加-v参数;后边为 宿主机目录:容器目录,例如:

# 创建并启动容器mycentos3,并挂载linux中的/usr/local/mytest目录到容器的/usr/local/mytest;
# 也就是在linux中的/usr/local/mytest操作相当于对容器相应目录操作
docker run -di --name=容器的名字 -v 宿主机目录:容器目录 --name=容器名称 centos:7

#比如:
docker run -it --name=mycentos3 -v /usr/local/mytest:/usr/local/mytest  centos:7 /bin/bash
#这样无论我们在宿主机上还是在容器中,在这个目录下对文件做了增删改操作,那么两边都是同步的。

注意:挂载的目录不用提前创建好,会自动创建。

4、迁移与备份相关命令

image

迁移与备份涉及到的命令有:

  • docker commit 容器名 镜像名:将容器保存为镜像
  • docker save –o tar文件名 镜像名:将镜像备份为tar文件
  • docker load -i tar文件名:根据tar文件恢复为镜像

[1]、容器保存为镜像

我们可以通过以下命令将容器保存为镜像

# 容器为镜像的命令:docker commit 容器名 镜像名
# 保存nginx容器为镜像
docker commit mynginx mynginx_i

然后使用 docker images 查看生成的镜像。

[2]、镜像备份

我们可以通过以下命令将镜像保存为tar 文件

# 命令形式:docker save –o tar文件名 镜像名
# 保存镜像为文件 -o:表示output 输出的意思
docker  save -o mynginx.tar mynginx_i

通过 save 保存成文件之后,在通过 ls 命令进行查看当前目录是否有 tar文件

[3]、镜像恢复与迁移

首先我们先删除掉docker中的 mynginx_i 镜像,然后执行此命令进行恢复

# 命令形式:docker load -i tar文件名
#-i:表示input输入的文件
docker load -i mynginx.tar

执行后再次使用 docker images 查看镜像,可以看到镜像已经恢复。

posted @ 2022-06-15 15:47  唐浩荣  阅读(14)  评论(0编辑  收藏  举报