1、Docker概述
1.1 Docker是什么
Docker是一个开源的容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
开发这可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任意的Linux机器上。
容器完全是沙盒机制,相互之间不会有任何的接口。
几乎没有性能开销,可以容易地在机器和数据中心运行。
不依赖与任何语言、框架或操作系统、
Docker从17.03版本之后分为CE(communityEditon 社区版)和EE(EnterpriseEditon企业版)
Docker的官网地址:https://www.docker.com/
文档地址:https://docs.docker.com/
仓库地址:https://hub.docker.com/
Docker核心技术
Namespace -- 实现Container的进程、网络、消息、文件系统和主机名的隔离。
Cgroup -- 实现对资源的配额和度量。
Cgroup可以指定实例使用的cpu个数,内存大小等。
1.2 Docker优缺点
优点
快
运行时的性能可以获取极大提升(经典的案例是提升97%)
管理操作(启动,停止,开始,重启等等) 都是以秒或毫秒为单位的。
敏捷
像虚拟机一样敏捷,而且会更便宜,在bare metal(裸机)上布署像点个按钮一样简单。
灵活
将应用和系统“容器化”,不添加额外的操作系统,
轻量
你会拥有足够的“操作系统”,仅需添加或减小镜像即可。在一台服务器上可以布署100~1000个Containers容器。
便宜
开源的,免费的,低成本的。由现代Linux内核支持并驱动。注* 轻量的Container必定可以在一个物理机上开启更多“容器”,注定比VMs要便宜。
生态系统
正在越来越受欢迎,只需要看一看Google的趋势就知道了, docker or LXC.
还有不计其数的社区和第三方应用。
云支持
不计其数的云服务提供创建和管理Linux容器框架。
缺点
能否彻底隔离
在超复杂的业务系统中,单OS到底能不能实现彻底隔离,一个程序的崩溃/内存溢出/高CPU占用到底会不会影响到其他容器或者整个系统?很多人对Docker能否在实际的多主机的生产环境中支持关键任务系统还有所怀疑。 注* 就像有人质疑Node.JS单线程快而不稳,无法在复杂场景中应用一样。
不过可喜的是,目前Linux内核已经针对Container做了很多改进,以支持更好的隔离。
GO语言还没有完全成熟
Docker由Go语言开发,但GO语言对大多数开发者来说比较陌生,而且还在不断改进,距离成熟还有一段时间。此半git、半包管理的方式让一些人产生不适。
被私有公司控制
Docker是一家叫Dotcloud的私有公司设计的,公司都是以营利为目的,比如你没有办法使用源代码编绎Docker项目,只能使用黑匣子编出的Docker二进制发行包,未来可能不是完全免费的。 目前Docker已经推出面向公司的企业级服务(咨询、支持和培训)。
2、Docker安装
2.1 Docker的基本组成
镜像(image)
Docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,通过镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。
容器(container)
Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的。
目前就可以把这个容器理解为就是一个简易的Linux系统
仓库(repository)
仓库就是存放镜像的地方!
仓库分为共有仓库和私有仓库!
2.2 安装环境
试验环境 Centos7
2.2.1 安装
# 1 卸载旧的版本
yum remove docker*
# 2 需要的安装包
yum install -y yum-utils
# 3、设置镜像的仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo # 默认是国外
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 推荐
yum-config-manager \
--add-repo \
https://mirrors.tuna.tsinghua.edu.cn/
# 更新yum软件包索引
yum makecache fast
# 4、安装docker相关引擎 docker-ce 社区版 docker-ee 企业版
yum install docker-ce docker-ce-cli containerd.io
# 5、启动docker
systemctl start docker
systemctl enable docker
# 6、使用docker version查看是否安装成功
docker version
2.2.2 卸载
# 1、卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
# 2、删除资源
rm -rf /var/lib/docker
# /var/lib/docker docker的默认工作路径!!!
2.2.3 加速
阿里云镜像加速器
#可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://qc6m14mr.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
2.3 常用命令
docker命令参数的帮助文档 –help
https://blog.weiyigeek.top/2019/5-6-461.html
#选项
Options:
--config=~/.$docker #客户端配置文件的位置
-D, --debug=false #启用Debug调试模式
-H, --host=[] #守护进程的套接字(Socket)连接
-h, --help=false #打印使用帮助
-l, --log-level=info #设置日志级别
--tls=false #
--tlscacert=~/.$docker/ca.pem #信任证书签名CA
--tlscert=~/.$docker/cert.pem #TLS证书文件路径
--tlskey=~/.$docker/key.pem #TLS密钥文件路径
--tlsverify=false #使用TLS验证远程
-v, --version=false #打印版本信息并退出
#命令
Commands:
attach #当前shell下attach连接指定运行镜像
build #通过$dockerfile定制镜像
commit #提交当前容器为新的镜像
cp #从容器中拷贝指定文件或者目录到宿主机中
create #创建一个新的容器,同run 但不启动容器
diff #查看$docker容器变化
events #从$docker服务获取容器实时事件
exec #在已存在的容器上运行命令
export #导出容器的内容流作为一个tar归档文件(对应import)
history #展示一个镜像形成历史
images #列出系统当前镜像
import #从tar包中的内容创建一个新的文件系统映像(对应export)
info #显示系统相关信息
inspect #提取出容器或者镜像最顶层的元数据
kill #kill指定$docker容器
load #从一个tar包中加载一个镜像(对应save)
login #注册或者登陆一个$docker源服务器
logout #从当前$docker registry退出
logs #输出当前容器日志信息
pause #暂停容器
port #查看映射端口对应的容器内部源端口
ps #列出容器列表
pull #从docker镜像源服务器拉取指定镜像或者库镜像
push #推送指定镜像或者库镜像至$docker源服务器
rename # rename 重命名一个容器
restart #重启运行的容器
rm #移除一个或者多个容器
rmi #移除一个或多个镜像(无容器使用该镜像才可以删除,否则使用-f强制删除)
run #创建一个新的容器并运行一个命令
save #保存一个镜像为一个tar包(对应load)
search #在$docker hub中搜索镜像
start #启动容器
stats #统计容器使用资源
stop #停止容器
tag #给源中镜像打标签
top #查看容器中运行的进程信息
unpause #取消暂停容器
version #查看容器版本号
wait #截取容器停止时的退出状态值
Run '$docker COMMAND --help' for more information on a command.
#后台运行
ctrl + p + ctrl + q
标签:容器,--,基础,yum,镜像,Docker,docker
From: https://www.cnblogs.com/min-together/p/16595360.html