docker容器原理及简单且详细的使用

docker原理简单介绍

docker是一种虚拟化容器技术。
虚拟化:早期为了节约成本和学习只有在宿主机中基于 kvm(基于内核的虚拟机)等技术虚拟出来完整的操作系统,而这个完整的操作系统会大量的占用宿主机的硬件资源,当创建的虚拟机太多时就会造成宿主机与虚拟机的性能大幅下降。这时候容器技术就出现了。

容器:容器一般创建在虚拟机中,可以创建很多的容器,服务等程序运行在其中,互不影响,宿主机也是直接提供自己的内核硬件资源给其使用,合理使用了宿主机的资源,可以运行很多应用服务

docker容器中可以运行多个不同的服务程序等,方便管理,互不影响,合理地对宿主机的资源。事先下载某个镜像然后再在容器里面运行该镜像对应的服务,可以是多个服务;容器仓库有很多镜像,主要是网络与本地进行操作,可以根据自己pull或者push仓库;客户端可以对该容器、镜像等进行管理。

如下是图示:
在这里插入图片描述

以上原理描述根据自己学习后的理解来讲的

docker容器的安装及使用

学习期间先将防火墙和seLinux关闭

[root@localhost yum.repos.d]# systemctl stop firewalld
[root@localhost yum.repos.d]# setenforce 0

安装步骤

1,安装docker源,也可以自己指定源

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

这时可以看到 /etc/yum.repos.d/ 目录下多了 个docker-ce.repo 的repo仓库,该仓库可以自动下载我们所需要的docker

源安装好了后执行如下命令

yum clean all      清除以前的yum缓存
yum makecache   重新加载

输入命令 yum list docker-ce 查看是否有docker ce 版本了

2,安装docker

dnf install docker-ce --nobest --allowerasing -y

稍等一会,安装好了后就查看是否安装好了

[root@localhost yum.repos.d]# docker version
Client: Docker Engine - Community
 Version:           23.0.5
 API version:       1.42
.....

这样就安装完成了

3,配置内核参数
如果外界想要访问到docker容器,docker容器就需要网络流量,网络方式与宿主机桥接方式相连
写入以下:

[root@localhost yum.repos.d]# cat <<EOF > /etc/sysctl.d/docker.conf 
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.ip_forward=1
EOF

然后运行下面参数

modprobe br_netfilter     自动启动一些内核模块
sysctl -p /etc/sysctl.d/docker.conf   加载参数

4,配置docker加速器

先创建一个文件:touch /etc/docker/daemon.json,写入以下参数

{
	"registry-mirrors" : [
		"https://8xpk5wnt.mirror.aliyuncs.com"
	]
}	

然后命令:systemctl daemon-reload

5,运行docker

systemctl start docker

这时候docker就启动了,接下来简单使用以下docker

docker的完整简单的使用

一些docker 命令:

 docker pull 镜像    拉取某个镜像,用于后面创建该镜像的容器
 docker image ls    查看本地有的镜像
 docker rmi 镜像id     删除某个镜像
 docker ps            查看运行起的容器
 docker search 。。。   搜索有没有某个镜像
 docker run 参数 镜像的名字/id                运行某个镜像
 如 docker run -d -p 80:80 nginx    解释: -d 是后台运行容器的意思,-p是端口映射,将宿主机的80端口映射为容器80端口,当访问宿主机80端
 口时就会访问到容器的80端口	 
 docker stop 容器id        停止某个容器

要在容器中运行某个服务,就先要获取该服务的镜像
1,获取某个镜像(以httpd 服务为例)
获取httpd 镜像,先查看有没有httpd 镜像

[root@localhost yum.repos.d]# docker search httpd
NAME                                 DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
httpd                                The Apache HTTP Server Project                  4409      [OK]       
clearlinux/httpd                     httpd HyperText Transfer Protocol (HTTP) ser…   2                    
paketobuildpacks/httpd                                                               0 
......

运行以上代码发现有叫httpd的镜像,就是第一个,而且是官方的。

获取该镜像:

[root@localhost yum.repos.d]# docker pull httpd

查看已经获取到的镜像,发现有httpd

[root@localhost yum.repos.d]# docker image ls
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
httpd         latest    dabbfbe0c57b   16 months ago   144MB
hello-world   latest    feb5d9fea6a5   19 months ago   13.3kB

2,运行该镜像,该镜像会在容器中运行

[root@localhost yum.repos.d]# docker run -d -p 80:80 httpd
d7bac3e1e750c3d8858368a80497aeb4592534ad37a3f24ede106f48055eb3d0

命令解释: -d 是后台运行容器的意思,-p是端口映射,将宿主机的80端口映射为容器80端口,当访问宿主机80端
口时就会访问到容器的80端口

查看运行的80端口:

[root@localhost yum.repos.d]# netstat -lntup 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1085/cupsd          
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      43008/docker-proxy  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1089/sshd: /usr/sbi 
tcp6       0      0 ::1:631                 :::*                    LISTEN      1085/cupsd          
tcp6       0      0 :::80                   :::*                    LISTEN      43014/docker-proxy  

可以发现80端口是docker代理的

3,宿主机访问该容器里面的内容

该虚拟机ip为192.168.190.129 具体根据自己虚拟机ip来看
访问的结果如下图:

在这里插入图片描述
到此完整的一个docker简单使用就完成了

思考:不用docker部署httpd服务怎么实现?

参考以前写的文章,http服务器搭建及案例。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Docker是一个开源的容器化平台,它可以帮助开发者将应用程序及其所有依赖项打包到一个独立的、可移植的容器中。Docker的工作原理可以简单概括为以下几个步骤: 1. 创建镜像:使用Dockerfile定义一个应用程序的环境配置和依赖项,然后使用Docker命令构建镜像。镜像是一个只读的模板,包含了运行应用程序所需的一切。 2. 运行容器使用Docker命令基于镜像创建一个容器实例。容器是镜像的运行时实例,它包含了应用程序及其依赖项,并在隔离的环境中运行。 3. 文件系统隔离:每个容器都有自己的文件系统,它与宿主机的文件系统隔离开来。容器中的文件系统基于镜像,可以读写,但对于容器外部来说是只读的。 4. 资源隔离:Docker使用Linux内核的特性,如命名空间和控制组(cgroup),实现对容器中进程的资源隔离。这样每个容器都拥有自己独立的CPU、内存等资源。 5. 网络隔离:每个容器都有自己独立的网络命名空间,可以拥有自己的IP地址和端口。Docker提供网络驱动程序,使容器可以与其他容器或宿主机进行通信。 6. 生命周期管理:Docker提供了一系列命令和API,用于管理容器的生命周期,如启动、停止、重启、删除等操作。这样可以方便地管理和维护容器。 总之,Docker利用容器化技术实现了应用程序的隔离和环境一致性,提供了更高效、可移植和可扩展的应用部署方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员Fy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值