【docker】

下载脚本

yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine docker-ce
yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's#download.docker.com#mirrors.aliyun.com/docker-ce#g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
yum install -y docker-ce

配置国内镜像

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://n0dwemtq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

什么是Docker

快速交付应用、运行应用

Docker是一个开源的应用容器引擎,完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。

vs 虚拟机

  1. docker是一个系统进程;虚拟机是在操作系统中的操作系统.
  2. docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般

特点

隔离性:每个用户实例之间相互隔离,互不影响。

可配额/可度量:每个用户实例可以按需提供其计算资源,所使用的资源可以被计量。

移动性:用户的实例可以很方便地复制、移动和重建。

安全性:这个话题比较大,这里强调是host主机的角度尽量保护container。

解决问题

依赖关系复杂,容易出现兼容性问题

开发、测试、生产环境有差异

如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?

Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像

Docker应用运行在容器中,使用沙箱机制,相互隔离

Docker如何解决开发、测试、生产环境有差异的问题?

Docker镜像中包含完整运行环境,包括系统函数库,仅依赖系统的Linux内核,因此可以在任意Linux操作系统上运行

相关概念

镜像(Image)

Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。

文件的层次结构,以及包含如何运行容器的元数据,Dockerfile中的每条命令都会在文件系统中创建一个新的层次结构,镜像就构建于这些联合的文件系统之上。

容器(Container)

镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。

容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

仓库

仓库是集中存放镜像文件的场所,仓库注册服务器(Registry)上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。

DockerHub

DockerHub是一个Docker镜像的托管平台。这样的平台称为Docker Registry。

架构

C/S架构

服务端(server): Docker守护进程,负责处理Docker指令,管理镜像、容器等

客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令。

技术的局限

1.网络限制:容器网络(Docker Network).让你可以方便地在同一主机下对容器进行网络连接,你就可以跨主机使用叠加网络功能。必须给网络定义增加预分配实例,每次提供容器时还需要额外步骤,这容易引起错误。

2.库控制受限:公共库在不知道谁以及如何创建镜像的情况下,可能会存在任意数量的有意或无意的稳定性和安全性风险。对于企业来说,有必要建立和维护一个私有库,这个库的建立挑战不大,但管理是个问题。

3.没有清晰的审计跟踪:提供容器是很简单的,但知道提供容器的时间、原因、方式以及提供方却不容易。因此,在提供之后,你并不掌握多少出于审计目的的历史。

4.运行实例的低可见性:如果没有经过深思熟虑的行动,实例提供后很难接触到运行容器的对象,也很难知道哪些应该出现在那里,哪些不应该出现在那里。

命令

139350ffa7474d989f59861215245c11.jpg

镜像名称一般分两部分组成:[repository]:[tag]

在没有指定tag时,默认是latest,代表最新版本的镜像

例如:

docker pull nginx

利用docker save将nginx镜像导出磁盘,然后再通过load加载回来
 

docker save -o nginx.tar nginx:latest
docker load -i nginx.tar

删除镜像

docker rmi nginx:latest

开始容器

docker run

运行转暂停

docker pause

暂停转运行

docker unpause

停止容器

docker stop

停止转运行

docker start

进入容器执行命令

docker exec

查看容器运行日志

docker logs

查看所有运行的容器及状态

docker ps

删除指定容器

docker rm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岩塘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值