Docker容器,是由Docker这个开源项目实现的一种轻量级的虚拟化技术。Docker的主要功能是将程序以及程序所有的依赖都打包到一个称为“容器”的单元中,因此,你的程序可以在任何环境都会有一致的表现。这种特性使得开发者可以以便捷的方式将应用打包到一个可移植的容器中,然后安装到任何运行Linux或Windows等系统的服务器上。
与传统的虚拟机相比,Docker容器提供了一种更加轻量化的虚拟化方式。因为容器只包含应用程序及其依赖,而不包含整个操作系统。这使得容器的启动速度更快,对系统资源的占用也更少。此外,Docker容器还支持应用程序之间的隔离和与底层系统的隔离,这为构建企业级应用和业务流程应用提供了便利。
docker容器和虚拟机有什么区别:
本文将介绍如何在Linux系统上安装和使用Docker。
安装Docker的前提条件 要安装Docker,首先需要确保你的Linux系统满足以下条件: - Linux内核版本至少为3.10,可以通过uname -r命令查看。 - 系统支持cgroups和namespaces,这是Linux内核提供的两种重要的隔离机制。 - 系统安装了curl或wget,用于下载Docker安装包。 - 系统安装了iptables,用于配置Docker的网络规则。
#配置yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all && yum makecache
#安装docker容器的依赖环境
yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc ntpdate openldap-devel
#开启linux内核的流量转发
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
# 加载修改内核的参数,配置文件
# 按照如下命令,执行顺序
[root@yc_docker01 ~]# modprobe br_netfilter
[root@yc_docker01 ~]#
[root@yc_docker01 ~]#
[root@yc_docker01 ~]# sysctl -p /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
# 提前配置好阿里云提供的docker专属repo仓库
curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all && yum makecache
yum install docker-ce -y
4、配置docker加速器
由于docker默认配置从国外仓库下载镜像,速度较慢,所以建议此处配置国内镜像仓库加速
mkdir -p /etc/docker
touch /etc/docker/daemon.json
vim /etc/docker/daemon.json
{
"registry-mirrors" : [
"https://docker.mirrors.ustc.edu.cn"
]
}
# 启动docker
systemctl daemon-reload
systemctl enable docker
systemctl restart docker
# 查看docker是否正确启动
[root@localhost ~]# docker version
Client: Docker Engine - Community
Version: 24.0.5
API version: 1.41 (downgraded from 1.43)
Go version: go1.20.6
Git commit: ced0996
Built: Fri Jul 21 20:39:02 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 20.10.6
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: 8728dd2
Built: Fri Apr 9 22:43:57 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.22
GitCommit: 8165feabfdfe38c65b599c4993d227328c231fca
runc:
Version: 1.1.8
GitCommit: v1.1.8-0-g82f18fe
docker-init:
Version: 0.19.0
GitCommit: de40ad0
[root@localhost ~]# docker run -d --name nginx -p 80:80 nginx
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.55 netmask 255.0.0.0 broadcast 10.255.255.255
查看最终效果,成功
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!
邀请人:江湖有缘
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。