1.docker比vm快的原因:
docker有着比虚拟机更少的抽象层,不需要实现硬件资源的虚拟化运行,运行在docker上的程序使用的都是物理机的资源.
dicker利用的是宿主机的内核,不需要加载操作系统的os内核.
2.docker帮助文档docker help
具体到某一个命令是使用 docker run –help即可
3.docker images的表头说明
repository :表示镜像的源仓库
tag: 表示镜像的标签版本号(同一个仓库源可以有多个tag,不说明是默认版本,也可以指定版本)
image id 镜像id
created 创建时间
size 镜像大小
4.docker search –limit 5 redis 搜索前5条redis
5.doker pull 镜像名字[:TAG] eg:docker pull hello-world docker pull redis:6.0.8
6.docker system df 列出当前docker上装载的实例
7.docker rmi -f 镜像ID 删除单个镜像,
docker rmi -f$(docker images -qa)删除全部镜像, 其中docker images -qa是查询全部id的命令
8.虚悬镜像: 仓库名 和 标签都是none 的镜像
9.要有镜像才能创建容器,也就是说要在docker上创建一个ubuntu或者centos才行
10.docker中使用run来按照对象生成一个个的实例.
docker run [options(有些是一个-,有些是两个–)] image [command][arg…]
options说明:
–name =”容器名字” 为容器指定名字
-d: (详情见15点)后台运行容器并返回容器id,即启动守护式容器
-i: 交互模式启动容器,
-t: 为容器重新分配一个伪输入终端,通常与-i一起使用(docker run -it hello-world)
如果启动ubuntu系统,需要bash, docker run -it ubuntu /bin/bash
退出终端: exit
-p :指定端口,
-P:随机端口
11.docker ps 列出所有正在运行的容器实例
-a: 当前以及历史上运行过的实例
-l: 最近创建过的容器
-n:最近创建的n个容器
-q: 只罗列容器id
12.退出容器:
exit run进去容器,exit停止,容器停止
ctrl+p+q: run进去容器,ctrl+p+q 退出,容器不停止
13.启动已经停止的容器:
docker start 容器id
14.删除已经停止的容器
docker rm 容器id 强制删除: docker rm – f 容器id名字
删除镜像使用 docker rmi 镜像名字
15.docker如果使用docker run -d ubuntu启动实例,会返回一串id,但是 在使用docer ps -a 查看,会发现,并没有刚才已经启动的实例,这是因为docker容器后台运行,就必须有一个前台进程,容器运行的命令如果不是那些一直挂起的命令,比如top.tail,他是会自动退出的.常见的解决方式是以-it 的形式前台运行,这样不会自动退出 .
redis举例:
前台启动redis : docker run -it redis 出现了熟悉的redis的图标
后台守护启动redis: docker run -d redis 这种命令启动的redis是可以的,上文提到的ubuntu是不能以这种方式启动的.
监控: docker logs id
16.docker 的理解:
从面向对象的角度来看.docker利用容器独立运行的一个或者一组应用,容器是用镜像创建的运行实例,容器为镜像提供了一个标准的隔离的运行环境,每个容器都是相互隔离的,保证安全的平台.
从镜像容器角度:可以把容器看做是一个简易版本的linux环境(包括root用户权限,进程空间,用户空间等)以及运行在其中的应用程序.
17.进入正在运行的容器,并进行交互
1.docker exec 参数(-it) 容器id 命令 eg: docker exec -it a2dsaaf /bin/bash 无论是何种类型的容器这里都要是-it 容器id /bin/bash 这里这个bin/bash必须加,如果启动的时候,可以不加,这里不加会报错如下:
2.docker attach 容器id
二者区别:attatch会直接进入容器命令的终端,不会启动新的进程,用exit退出,会导致容器的停止
exec是在容器中打开新的终端,并且可以启动新的进程,也就是说在使用exec执行 后, 再用exit不会导致容器的终止,使用docker ps命令仍然可以查看到这个容器.
18:docker备份:
1.拷贝文件到主机:
docker cp 容器id:容器内的路径 目的主机路径
2.备份整个容器:
docker export 容器id > 想要导出成什么名字.tar
3.将tar导回到原容器:
cat 文件名.tar|docker import-镜像用户/镜像名:镜像版本号
然后docker run -it ycl/ubuntu /bin/bash, 此时得到的容器是之前导入的相同的容器
19.docker镜像的加载原理:
docker镜像实际是一种多层次的文件系统组成的,这种层级的文件系统叫UnionFS,对外暴露成一个系统,对内,则像花卷一样,是层层堆叠的.
bootfs主要包含bootloader和kernel,就像上文提到的一样,可以把容器看做是一个简易版本的linux环境,bootloader的主要作用就是引导加载kernel,linux刚启动的时候会加载bootfs文件系统,在docker镜像的最底层是引导文件系统bootfs,这一层与linux/Unix系统是一样的,包含boot加载器和内核,当boot加载完成后,整个内核就在内存中了,此时内存的使用权交给内核,并卸载bootfs.
rootfs,在bootfs之上,包含的是典型的linux系统中的/dev ,/proc, /bin等标准目录和文件,rootfs就是各种不同的操作系统的发行版本,比如ubuntu,centos
对于精简版本的os,只需要最基本的命令,工具就可以了 ,所以底层直接使用的是宿主机的kernel,自己只提供rootfs,因此对于不同的发行版本,bootfs基本是一致的,rootfs会有一定的差别.
20.容器启动时,一个新的可写层被加入到镜像的顶部,这一层通常被称作容器层,容器层之下的都叫镜像层.镜像层是可读的.容器层是可写的.
21.commit命令 上传镜像
以vim命令举例,在官网上docker pull ubuntu得到的ubuntu是没有vim命令的,需要我们自己安装,安装命令如下:
apt-get update
#先更行包管理工具
apt-get install vim
#然后安装我们需要的vim
操作结束后,使用commit命令
docker commit -m=”提交的描述信息” -a=”作者” 容器id 要创建的目标镜像名:[标签名]
eg: docker commit -m=”add vim” 41c4273eb615 ycl/ubuntu
使用 docker images可以得到如下的结果:
可以看出自行创建的镜像的大小明显要大于原始的镜像的大小.
22.将本地镜像推送到阿里云
首先找到本地要推送的版本,然后打开阿里云网站,如下图所示:
创建命名空间和镜像仓库(命名空间只能创建三个)
然后点击管理:
在弹出的界面选择想要进行的操作,直接复制命令即可
在上传时注意两次的版本号要一致.
23.常用软件的安装与映射
首先搜索 docker search tomcat
然后安装 docker pull tomcat:version
查看是否下载了该镜像: docker images
运行: docker run -it -p 8080:8080 tomcat(指定端口号映射)
24.向docker容器中拷贝文件
举例,向es中拷贝,注意es的路径.(源文件是放在home文件夹下的)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/88857.html