(一)docker 基础命令
启动docker
systemctl start docker
关闭docker
systemctl stop docker
重启docker
systemctl restart docker
docker设置随服务启动而自启动
systemctl enable docker
查看docker 运行状态
------如果是在运行中 输入命令后 会看到绿色的active
systemctl status docker
查看docker 版本号信息
docker version
docker info
docker 帮助命令
忘记了某些命令便可使用此进行查看与回顾
docker --help
比如 咱忘记了 拉取命令 不知道可以带哪些参数 咱可以这样使用
docker pull --help
(二)docker 镜像命令
查看自己服务器中docker 镜像列表
docker images
搜索镜像
docker search 镜像名
docker search --filter=STARS=9000 mysql 搜索 STARS >9000的 mysql 镜像
拉取镜像 不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本
docker pull 镜像名
docker pull 镜像名:tag
运行镜像
docker run 镜像名
docker run 镜像名:Tag
ex:
docker pull tomcat
docker run tomcat
删除镜像 ------当前镜像没有被任何容器使用才可以删除
#删除一个
docker rmi -f 镜像名/镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
强制删除镜像
docker image rm 镜像名称/镜像ID
镜像的基础命令就到这里 下方会使用更复杂的 docker run 命令 来根据镜像启动容器
保存镜像
将我们的镜像 保存为tar 压缩文件 这样方便镜像转移和保存 ,然后 可以在任何一台安装了docker的服务器上 加载这个镜像
命令:
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
exmaple:
docker save tomcat -o /myimg.tar
加载镜像
任何装 docker 的地方加载镜像保存文件,使其恢复为一个镜像
docker load -i 镜像保存文件位置
(三)docker 容器命令
前言已经说了 docker 容器 就好比 咱java中的new出来对象(docker run 镜像 产生一个该镜像具体容器实例),docker 容器的启动需要 镜像的支持
先放上 docker 容器查看命令
查看正在运行容器列表
docker ps
查看所有容器 -----包含正在运行 和已停止的
docker ps -a
容器怎么来呢 可以通过run 镜像 来构建 自己的容器实例
运行一个容器
# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行) --name 给要运行的容器 起的名字 /bin/bash 交互路径
docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash
例如我们要启动一个redis 把它的别名取为redis001 并交互式运行 需要的命令 —我这里指定版本号为5.0.5
#1. 拉取redis 镜像
docker pull redis:5.0.5
#2.命令启动
docker run -it -d --name redis001 redis:5.0.5 /bin/bash
#3.查看已运行容器
docker ps
停止容器
# 先停止咱之前运行的 redis 容器
docker stop 容器名/容器ID
删除容器
#删除一个容器
docker rm -f 容器名/容器ID
#删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
#删除全部容器
docker rm -f $(docker ps -aq)
有时候,我们需要进入容器内部,修改其配置文件,那么如何才能进入容器内呢?
进入容器方式一 这里咱就进入 前面的 redis001容器
docker exec -it 容器名/容器ID /bin/bash
#进入 前面的 redis001容器
docker exec -it redis001 /bin/bash
可以看到 我已经从主机alibyleilei 跳到了容器ID 对应下的 /data 已经是进入到容器内部了
进入容器方式二 —推荐使用 exec 方式
docker attach 容器名/容器ID
那怎么退出容器呢 ?
从容器内 退出到自己服务器中 需注意 两个退出命令的区别
#-----直接退出 未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭
exit
# 优雅退出 --- 无论是否添加-d 参数 执行此命令容器都不会被关闭
Ctrl + p + q
停止容器
docker stop 容器ID/容器名
重启容器
docker restart 容器ID/容器名
启动容器
docker start 容器ID/容器名
kill 容器
docker kill 容器ID/容器名
容器文件拷贝 —无论容器是否开启 都可以进行拷贝
#docker cp 容器ID/名称:文件路径 要拷贝到外部的路径 | 要拷贝到外部的路径 容器ID/名称:文件路径
#从容器内 拷出
docker cp 容器ID/名称: 容器内路径 容器外路径
#从外部 拷贝文件到容器内
docker cp 容器外路径 容器ID/名称: 容器内路径
查看容器日志
docker logs -f --tail=要查看末尾多少行 默认all 容器ID
镜像和容器常见命令:
镜像命令:
docker search 镜像名称 搜索镜像
docker pull 镜像名称 拉取镜像
docker images 查看本地所有镜像
docker rmi -f 镜像名称 删除镜像
容器命令:
docker run -i 镜像名称:标签 运行容器(默认是前台运行)
docker ps 查看运行的容器
docker ps -a 查询所有容器
docker exec -it 容器ID/容器名称 /bin/bash 进入容器内部
docker start/stop/restart 容器名称/ID 启动/停止/重启容器
docker rm -f 容器名称/ID 删除容器
docker中run和start的区别:
docker run 是镜像运行命令
docker start 是容器运行命令
run命令只在第一次运行镜像操作时使用,相当于执行了两步操作,将镜像放入容器中然后将容器启动;而start命令在重新启动已经存在的镜像时使用,使用该命令需要知道容器的id或者名字。
docker kill和docker stop的区别与联系
相同点:两者都是停掉容器,并把容器状态指定到stopped。
不同点:
被kill杀死容器,进入stopped状态被重新start后,会开启新的进程号;
被stop停掉的容器,再次被重新start后,进程号不变,还是原来的。
kill命令比较生猛,不管容器死活,直接给系统发送SIGKILL的系统信号强行kill掉进程,就是要用kill -9干掉容器;
stop比较温柔,先给容器发送一个TERM信号,给容器充足时间(默认10秒)保存数据,让容器自动安全停止运行,超时后再给系统发送SIGKILL的系统信号强行kill掉进程,最后转变为stop状态。
Docker中镜像,容器和仓库的关系
(1)Docker镜像(image)
镜像是创建Docker容器的基础,Docker镜像类似于虚拟机镜像,可以把Docker镜像理解成一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变(只读)。
(2)Docker容器(Container)
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。并且这些容器都是相互隔离、互不可见的。、
(3)Docker仓库(Repository)
Docker仓库(Repository)类似于代码仓库,是Docker集中存放镜像文件的场所。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。例如存放Ubuntu操作系统镜像的仓库,称为Ubuntu仓库,其中可能包括14.04,12.04等不同版本的镜像。但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。理解这个关系就是:一个Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。