docker 基本命令和操作
- 学习视频
- 一、docker 常用命令
- 1、帮助启动类命令
- 2、镜像命令
- 2.1、docker images
- 2.2、docker search 某个 xxx 镜像的名字
- 2.3、docker pull 某个 xxx 镜像的名字
- 2.4、docker system df
- 2.5、docker rmi 某个 xxx 镜像的名字 ID
- 2.6、面试题:谈谈 docker 虚悬镜像是什么?
- 3、容器命令
- 3.1、新建 + 启动容器
- ==启动交互式容器==
- 3.2、列出当前所有**正在运行**的容器
- 3.3、退出容器
- 3.4、启动已停止运行的容器
- 3.5、重启容器
- 3.6、停止容器
- ==3.7、重要==
- 3.7.1 启动守护式容器(后台服务器)
- 3.7.2 查看容器日志
- 3.7.3 查看容器内运行的进程
- 3.7.4 查看容器内部细节
- 3.7.5 ==进入正在运行的容器并以命令行交互==
- 3.7.6 从容器内拷贝文件到主机上
- 3.7.7 导入和导出容器
- 4、小总结
- 二、Docker 镜像分层的概念
- 三、commit 命令
- 1、从 Hub 上下载 ubuntu 镜像到本地并成功运行
- 2、原始的默认ubuntu镜像是不带 vim 命令的
- 3、外网连通的情况下,安装 vim
- 4、安装完成后,commit 我们自己的新镜像
- 5、启动我们的新镜像并和原来的对比
- 总结
- 四、本地镜像发布到阿里云
- 1、阿里云开发者平台 -> 控制台 -> 镜像容器服务
- 2、选择个人实例
- 3、将本地镜像推送到阿里云(使用上图的脚本命令)
- 3.1.、登录阿里云Docker Registry
- 3.2、 将镜像推送到Registry
- 4、将阿里云上的镜像下载到本地使用
- 4.1.、登录阿里云Docker Registry
- 4.2、 从Registry中拉取镜像
学习视频
尚硅谷Docker实战教程(docker教程天花板)
一、docker 常用命令
1、帮助启动类命令
启动 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
2、镜像命令
2.1、docker images
作用:列出本地主机上的镜像
2.2、docker search 某个 xxx 镜像的名字
作用:在远程仓库中查找 镜像
2.3、docker pull 某个 xxx 镜像的名字
作用:下载镜像
2.4、docker system df
作用: 查看镜像 / 容器 / 数据卷所占的空间
2.5、docker rmi 某个 xxx 镜像的名字 ID
作用:删除镜像 ,i 为 image 及镜像
参数:
-f 强制删除
2.6、面试题:谈谈 docker 虚悬镜像是什么?
建议删除
3、容器命令
docker 必须运行在 Linux 内核上,所以我们先安装 VMware 虚拟机,在里面安装 docker
接下来的操作都在 docker 中运行,但有镜像才能创建容器,所以得在 docker 中安装镜像 ubuntu
3.1、新建 + 启动容器
命令:docker run [options] IMAGE [COMMAND] [ARG…]
启动交互式容器
例如 docker 中要用 ubuntu ,但是 ubuntu 是交互式的,要输入命令什么的(终端)
i :interactive (交互) t:tty (终端)
Ubuntu 还要用 shell 命令交互,所以加 /bin/ba
此时相当于用 docker 去操作另外一套 Linux 系统
要退出终端,直接用命令:exit
3.2、列出当前所有正在运行的容器
命令:docker ps [OPTIONS]
不设置名称就系统随机生成
3.3、退出容器
ctrl +p +q 是指键盘操作
3.4、启动已停止运行的容器
命令:docker start 容器 ID 或者容器名
3.5、重启容器
命令:docker restart 容器 ID 或者容器名
3.6、停止容器
命令:docker stop 容器 ID 或者容器名
强制停止:docker skill 容器 ID 或者容器名
删除已经停止的容器:docker rm 容器 ID
3.7、重要
3.7.1 启动守护式容器(后台服务器)
有一些镜像不能后台运行,它觉得自己没事可做就会自杀(如run -d Ubuntu 它交互不了,没有人能输入命令,它就自杀了)
redis 前台交互式启动
命令:docker run -it redis:6.0.8
此时,若关闭窗口。redis 就结束了 (如按了ctrl + c,redis 就没了)
redis 后台交互式启动
命令:docker run -d redis:6.0.8
3.7.2 查看容器日志
命令:docker logs 容器 ID
3.7.3 查看容器内运行的进程
命令:docker top 容器ID
3.7.4 查看容器内部细节
命令:docker inspect 容器ID
3.7.5 进入正在运行的容器并以命令行交互
命令1:docker exec -it 容器ID bashShell
命令2:docker attach 容器ID
推荐用 exec
3.7.6 从容器内拷贝文件到主机上
命令: docker cp 容器ID:容器内路径 目的主机路径
作用:1、容器内容备份,容器可能会被删除
3.7.7 导入和导出容器
直接备份容器
回复容器
4、小总结
二、Docker 镜像分层的概念
镜像是分层的
联合文件系统
Docker 镜像加载原理
重点理解
Docker 镜像层是只读的,容器是可写的
当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”
为什么 docker 镜像要采用这种分层结构呢?
(层层的来,一方便组合,减少不必要的资源浪费。二、精准快速)
三、commit 命令
docker commit 提交容器副本使之成为一个新的镜像
docker commit -m =“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
举例
此容器实例不支持 vim 命令,该怎么添加呢?
1、从 Hub 上下载 ubuntu 镜像到本地并成功运行
docker run -it ubuntu /bin/bash
2、原始的默认ubuntu镜像是不带 vim 命令的
3、外网连通的情况下,安装 vim
先更新:apt-get update
再安装yum:apt-get -y install vim
4、安装完成后,commit 我们自己的新镜像
安装完 vim 后用 ctrl p + q 退出
然后 commit
docker commit -m=“add vim cmd” -a=“wy” e2e62d29fd15 wy/myubuntu:1.1
注意:这个root@e2e6… 是容器id 不是镜像id。要查看的话用 docker ps 命令
再用 docker images 查看容器
相比 原来ubuntu 镜像多了 100m 也就是多了个vim 命令。给千层饼多加了一层,想积木一样可以任意组合
5、启动我们的新镜像并和原来的对比
先把容器停掉
查看原镜像 ubuntu,发现 vim 命令没有。
为什么?因为前面 run 镜像ubuntu 生成的 容器a,后面操作的是这个容器a,容器a确实有了vim命令
后面又run 镜像ubuntu 生成了容器b,容器b 怎么会有vim 命令呢?
直接 run 镜像 myubt 呢?
发现是有 vim 命令的
总结
四、本地镜像发布到阿里云
步骤:
1、阿里云开发者平台 -> 控制台 -> 镜像容器服务
容器镜像服务 (aliyun.com)
2、选择个人实例
没有就创建
创建命名空间
创建镜像仓库 (最后选择本地仓库0
进入管理界面获得脚本
3、将本地镜像推送到阿里云(使用上图的脚本命令)
容器镜像服务 (aliyun.com)
3.1.、登录阿里云Docker Registry
3.2、 将镜像推送到Registry
4、将阿里云上的镜像下载到本地使用
4.1.、登录阿里云Docker Registry
4.2、 从Registry中拉取镜像
先删除本地镜像
拉取镜像
运行试试
运行成功且有 vim 命令