Docker(一)简介、环境搭建

这篇具有很好参考价值的文章主要介绍了Docker(一)简介、环境搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、docker简介

1.什么是docker

Docker是一个开源的应用容器引擎,是一个轻量级容器技术,是一个应用打包、分发、部署的工具,基于Google公司推出的Go 语言实现,遵从Apache 2.0 协议。

2.什么是容器

docker​​​​​​​支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;运行中的这个镜像称为容器。

容器是软件的可执行单元,它采用通用方式封装了应用程序代码及其库和依赖项,因此可以随时随地运行容器(无论是在桌面、传统 IT 还是云端)。

为此,容器利用操作系统 (OS) 虚拟化形式,这里会利用操作系统的功能(在 Linux 内核中,即名称空间和 cgroups 原语)来隔离进程,并控制这些进程有权访问的 CPU、内存和磁盘的数量。

3.传统的虚拟化技术和容器之间的差别

容器:

  • 容器之间共享同一个系统内核,这样当同一个库被多个容器使用时,内存的使用效率会得到提升。
  • 为应用程序提供了隔离的运行空间:每个容器内都包含一个独享的完整用户环境空间,并且一个容器内的变动不会影响其他容器的运行环境。
  • 容器技术使用了namespaces来进行空间隔离,通过文件系统的挂载点来决定容器可以访问哪些文件,通过cgroups来确定每个容器可以利用多少资源。

虚拟机:

  • 虚拟层为用户提供了一个完整的虚拟机:包括内核在内的一个完整的系统镜像。
  • CPU虚拟化技术可以为每个用户提供一个独享且和其他用户隔离的系统环境,虚拟层可以为每个用户分配虚拟化后的CPU、内存和IO设备资源

4.容器运行的过程【重要】

1.4.1 Docker Client
也称为Docker客户端。其实就是Docker提供命令行界面工具,是许多Docker用户与Docker进行交互的主要方式。客户端可以构建,运行和停止应用程序,还可以远程与Docker_Host进行交互。
1.4.2 Docker daemon
Docker daemon是服务器组建,以Linux后台服务的方式运行,是Docker最核心的后台进程,我们也把它称为守护进程。它负责响应来自Docker Client的请求,然后将这些请求翻译成系统调用完成容器管理操作。该进程会在后台启动一个API Server,负责接受由Docker Client发送的请求,接受到的请求通过Docker daemon内部的一个路由分发调用,由具体的函数来执行请求
1.4.3 Docker Image
Docker image可以看作一个特殊的文件系统,除了提供容器运行时所需要的程序、库、资源、配置等文件外,还包含了一些为运行时准备的参数(匿名卷,环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。我们可将Docker镜像看成只读模版,通过它可以创建Docker容器。我们可以将镜像的内容和创建步骤描述在一个文本文件中,这个文件被称作Dockerfile,通过执行docker build命令可以构建出Docker镜像
1.4.4 Docker Rigistry
Docker registry是存储docker image的仓库
1.4.5 Docker Container
Docker 容器就是Docker镜像的运行实例,是真正运行项目程序、消耗系统资源、提供服务的地方。Docker Container提供了系统硬件环境,我们可以使用Docker Images这些制作好的系统盘,再加上我们所编写好的项目代码,run一下就可以提供服务了。
docker环境,docker,docker,linux,运维
容器在docker中的创建过程:
docker run 执行一个命令,这个命令会被发给docker引擎来处理,docker引擎会检索本机上有没有所需要的镜像(因为容器是通过镜像来运行的),如果没有这个镜像,会自动从仓库Registry里拉取下来,根据设定的参数将拉取的镜像运行起来。

二、docker环境部署及测试

1.环境部署:

官方网址:https://docs.docker.com/(安装较慢,推荐以下安装)

进入阿里云或者清华下载站,找到docker-ce(社区版、ee企业版)资源,复制网址
docker环境,docker,docker,linux,运维docker环境,docker,docker,linux,运维docker环境,docker,docker,linux,运维docker环境,docker,docker,linux,运维docker环境,docker,docker,linux,运维docker环境,docker,docker,linux,运维
直接安装docker-ce会出现依赖性的错误,我们进入阿里云centos源里,将centos7的源添加在本地,若不添加,会出现如下报错
docker环境,docker,docker,linux,运维
docker环境,docker,docker,linux,运维

添加源(为了多测试并和上面阿里源截图对比,下面添加的源使用清华镜像站源)

[root@server1 ~]# cd /etc/yum.repos.d/
[root@server1 yum.repos.d]# vim docker.repo
[docker]
name=docker-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/x86_64/stable/
gpgcheck=0

[update]                                         ##centos7源,解决依赖性
name=centos
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/extras/x86_64/
gpgcheck=0

docker环境,docker,docker,linux,运维
列出安装源
[root@server1 ~]#yum repolist

安装docker-ce
[root@server1 yum.repos.d]# yum install -y docker-ce
启动服务
[root@server1 ~]# systemctl enable --now docker
[root@server1 ~]# docker info
使用docker info查看信息,看到有两个warning和我们的桥接有关:
docker环境,docker,docker,linux,运维
查看
[root@server1 ~]#sysctl -a| grep bridge-nf-call-iptables

激活内核选项即可
[root@server1 ~]# vim /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1 ##打开内核转发

[root@server1 ~]# sysctl --system
[root@server1 ~]# systemctl restart docker

此时再用docker info查看就正常了,现在我们就能正常访问docker了:
(注:此时我们找到的是docker官方仓库里的镜像)

2.通过镜像运行容器

[root@server1 ~]# docker run -d --name web1 -p 80:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
3f9582a2cbe7: Pull complete
9a8c6f286718: Pull complete
e81b85700bc2: Pull complete
73ae4d451120: Pull complete
6058e3569a68: Pull complete
3a1b8f201356: Pull complete
Digest: sha256:aa0afebbb3cfa473099a62c4b32e9b3fb73ed23f2a75a65ce1d4b4f55a5c2ef2
Status: Downloaded newer image for nginx:latest
0ab8d0e38142e97b8c611b156d723b2546fc1623909b65a0f5f016d8a2a1668d

显示激活的容器
[root@server1 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                               NAMES
0ab8d0e38142   nginx     "/docker-entrypoint.…"   8 seconds ago   Up 7 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   web1

截取因已是第二次开启nginx,所以显示信息较少
参数解释:
-d:打入后台
–name:给容器命名
-p:端口映射,server1的80端口映射到容器内的80端口(宿主机端口:容器内跑的服务的端口);容器运行在私有网段,不做端口映射,外部不能访问;
-v:映射文件
docker环境,docker,docker,linux,运维

测试:
访问网页:http://192.168.117.11/
nginx已正常启用
docker环境,docker,docker,linux,运维
删除容器
[root@server1 ~]# docker rm -f web1
docker环境,docker,docker,linux,运维

3.拉取镜像

docker环境,docker,docker,linux,运维

查询镜像
[root@server1 ~]# docker search yakexi007

拉取镜像到本地
[root@server1 ~]# docker pull yakexi007/game2048

启动容器
[root@server1 ~]# docker run -d --name web1 -p 80:80 yakexi007/game2048

docker环境,docker,docker,linux,运维
测试:
访问网页:http://192.168.117.11/
docker环境,docker,docker,linux,运维
删除容器
[root@server1 ~]# docker rm -f web1
docker环境,docker,docker,linux,运维文章来源地址https://www.toymoban.com/news/detail-721960.html


到了这里,关于Docker(一)简介、环境搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于 WSL2、 Docker Desktop搭建Windows和Linux系统 Docker 环境

    目录 介绍 环境 安装教程 开启 WSL2 服务 安装 CentOS 系统 安装 docker Desktop 其他  安装镜像 WSL 命令使用 Docker-Desktop 储存路径更改 WSL2 :可以理解为是 Windows 上的一个工具,通过 WSL2 可以在 Windows 上运行 Linux 子系统。  Docker Desktop :可以理解为是 Docker 的桌面版,或者是 W

    2024年01月20日
    浏览(52)
  • (一)丶RabbitMQ搭建及配置在Linux+Docker环境下

    RabbitMQ依赖的是Erlang语言,所以要先安装Erlang的环境。Erlang在1991年由爱立信公司向用户推出了第一个版本,经过不断的改进完善和发展,在1996年爱立信又为所有的Erlang用户提供了一个非常实用且稳定的OTP软件库并在1998年发布了第一个开源版本。Erlang同时支持的操作系统有l

    2024年04月09日
    浏览(42)
  • 2023保姆级:深度学习环境在Docker上搭建(基于Linux和WSL)

    在深度学习领域,配置环境的常见做法是使用conda来实现环境隔离。conda是一个广泛使用的工具,用于创建和管理特定的环境,通过在不同的环境中设置特定的Python环境变量路径,实现了环境的特异化。为了实现这一目的,需要将终端置于conda的管理之下。如果你已经安装了

    2024年02月06日
    浏览(44)
  • linux环境下docker中搭建 jenkins 及自定义访问路径,利用nginx反向代理

    前两天发布了完整的 linux服务器上Docker中安装jenkins 在实际的开发中,可能我们并不能直接开放8081或者8080端口给jenkins使用,常常是通过nginx方向代理来实现的,这里我们来配置一下。 如果你还没有安装 可以参考我这篇文章 linux服务器上Docker中安装jenkins 看到目录: 创建一个

    2024年02月16日
    浏览(56)
  • [运维|数据库] docker postgresql数据库环境变量配置

    要配置Docker中的PostgreSQL数据库的环境变量,可以使用以下方法: 使用Docker命令行: 将 用户名 , 密码 , 数据库名 替换为你想要设置的实际值。这将创建一个名为 mypostgres 的容器,并将 PostgreSQL 的用户名、密码和数据库名设置为指定的值。 -p 5432:5432 指定了容器内部和主机之间

    2024年02月09日
    浏览(60)
  • 【运维】手把手教你在windows使用Docker搭建Minio[详细教程]

    目录 1什么是Minio 2安装Docker 3Docker搭建Minio 4.创建Minio容器并运行 5.进行访问 6安装可能出现的问题         MinIO是一个基于开源的对象存储服务器,MinIO的设计目标是提供高性能、高可用性和高可靠性的对象存储服务。MinIO可以作为一个独立的对象存储服务,也可以在Kuber

    2024年02月06日
    浏览(56)
  • Docker[1] Docke环境是什么 安装部署 依赖兼容解决 简介 Centos安装Docker 配置镜像加速 启动Docker

    1.1.什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 ● 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。 ● 在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题 1.1.1.应用部署的环境问题

    2024年04月10日
    浏览(52)
  • 【Docker】Docker Swarm介绍与环境搭建

    多机器如何管理? 如何跨机器做scale横向扩展? 容器失败退出时如何新建容器确保服务正常运行? 如何确保零宕机时间? 如何管理密码,Key等敏感数据? Docker Swarm是Docker官方推出的容器集群管理工具,基于Go语言实现。使用它可以将多个Docker主机封装为单个大型的虚拟Doc

    2024年01月22日
    浏览(37)
  • Docker搭建Ubuntu环境及Docker常用命令

    演示一遍用docker搭建Ubuntu 20.04环境,请确保你的电脑已安装docker应用,可以从Docker官网下载。Windows可以打开powershell运行以下命令,mac和linux直接用terminal即可。 检查docker是否安装好: docker --version 出现 Docker version xx.xx.xx 即表示docker安装成功。 创建并运行Ubuntu 20.04容器: do

    2024年02月04日
    浏览(47)
  • 实战:大数据Spark简介与docker-compose搭建独立集群

    很多同学都使用过经典的大数据分布式计算框架hadoop,其分布式文件系统HDFS对数据管理很友好,但是计算能力较Spark还是不足。俗话说工欲善其事必先利其器,今天就介绍docker容器化部署Spark集群。 Spark简介 Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在

    2024年02月11日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包