电子说
Docker 是一个开源软件,用于开发应用、交付应用、运行应用。 Docker允许用户将基础设施中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。
docker与vm比较
Docker基本组成主要包括以下三部分内容:
Docker image:镜像是只读的,镜像中包含有需要运行的文件。镜像用来创建container,一个镜像可以运行多个container;镜像可以通过commit命令、Dockerfile等方式创建,也可以从Docker hub/registry上下载。
Docker container:容器是可写的,也是Docker的运行组件,启动一个镜像就是一个容器,容器是一个隔离环境,多个容器之间不会相互影响,保证容器中的程序运行在一个相对安全的环境中。
Docker repository: 存储镜像的仓库,用户通过它来共享和管理Docker镜像,用户可以上传或者下载上面的镜像,官方地址为https://registry.hub.docker.com/,也可以搭建自己私有的Docker registry。
应用架构上 ,就比如那一个订购系统来举例子,本来是一个基本的静态网页用来电话订购,现在需要网络订购了,那么我们就需要引入DB,再然后为了提升性能,引入了类似Redis、Memcached、MQ缓存等中间件,到项目后期,发现单机不能满足性能要求了,然后引入了Nginx作为反向代理,总之,随着系统功能的日趋复杂,那么应用依赖就会逐渐复杂,不同组件的配置方法各不相同,运维人员进行应用配置可能会耗费大量时间。
应用部署上 ,Dockerfile的存在使得开发人员仅仅需要修改其配置文件就可以轻松构建具有不同依赖的镜像。同时保障了从开发、构建、测试、生成的一整套流程。
集群角度上 ,随着流量的逐渐增大,这个时候就要引入集群了,服务器由原来的一台变成两台,那么相同的配置在另一台主机进行相同的配置时间开销比较大,因此可以通过镜像来一键打包部署即可。
关于Docker优点,总结如下:
关于官方文档中解释:Docker Architecture
Docker引擎 (Docker Engine)是一个服务端-客户端结构的应用,主要有这些部分:Docker守护进程、Docker Engine API、Docker客户端。
dockerd
,是一个持久化的进程,用户管理容器。守护进程会监听Docker Engine API 的请求。wget
和 curl
等命令调用。docker
,是大部分用户与Docker交互的主要方式。用户通过客户端将命令发送给守护进程。命令会遵循Docker Engine APIDocker生态中还有一个非常重要的容器管理工具–Kubernetes,它是Google开源的用于在集群环境中管理、维护、自动扩展容器,通过Kubernetes可以很方便地在多个机器上管理和部署容器服务。现在已经得到IBM、Microsoft、RedHat等多个大公司的支持。
Docker现在出现了一个特殊的模式——swarm模式——可以用来管理容器集群。Docker Swarm允许使用Docker CLI运行swarm命令,因而很容易初始化一组容器,并向组中添加或删除容器。除了Docker Swarm,还有几个其他的容器协调管理器:
这里测试环境是 Centos Linux 8版本,安装使用 yum
命令安装。
yum -y install docker-ce docker-ce-cli #下载Docker
docker version #查看docker版本号
docker images #存在的镜像
image-20220614152303600
注册阿里云开发者账户,进入仓库镜像模块,获取仓库加速域名。
仓库(Repository)、注册服务器(Registry)、注册索引(Index)有何关系?
首先,仓库是存放一组关联镜像的集合,比如同一个应用的不同版本的镜像,注册服务器是存放实际的镜像的地方,注册索引则负责维护用户的账号,权限,搜索,标签等管理。注册服务器利用注册索引来实现认证等管理。
由于需要使用普通用户对Docker进行管理,因此需要给普通用户配置Docker权限,根据 官方文档来进行配置。具体命令行如下:
sudo groupadd docker #加入Docker用户组
sudo usermod -aG docker $USER #将用户添加到用户组
newgrp docker #刷新权限
id $USER #查看用户情况
docker run hello-world #运行hello world测试
image-20220615190215061
docker pull REPOSITORY:TAG
docker run IMAGE_ID
docker rmi IMAGE_ID
docker stop CONTAINER_ID
docker run -i 镜像ID #交互模式启动容器
## 常用参数
-i, --interactive Keep STDIN open even if not attached
--ip string IPv4 address (e.g., 172.30.100.104)
--ip6 string IPv6 address (e.g., 2001:db8::33)
--ipc string IPC mode to use
--isolation string Container isolation technology
--kernel-memory bytes Kernel memory limit
-p : 宿主机端口 :Docker运行端口
-P : 随机宿主机端口
-t : 命令终端
image-20220614154748840
Docker虚悬镜像:仓库名、标签都为的镜像。建议删除
docker run -d #守护式启动
docker run -i #前台式启动
#重新进入命令交互界面
docker exec -it 容器ID bashshell
docker attach 容器ID
区别:
exec
会导致终端停止全部0条评论
快来发表一下你的评论吧 !