从零开始学Docker(一)

从零开始学Docker(一)

docker 容器

docker的基本概念

什么是docker?

image-20230701173228618

docker vs VM

DockerVMware
虚拟化轻量级虚拟化(只虚拟出来容器所需要的资源,软件层面)完全虚拟化(虚拟化硬件)
启动速度秒级分钟级
运行性能**接近原生5%左右损失
磁盘占用MBGB
数量成百上千一般几十台
隔离性进程级别系统级(更彻底)
操作系统主要支持Linux几乎所有
封装程度只打包项目代码和依赖关系,共享宿主机内核完整的操作系统

docker架构

docker使用客户端-服务器架构。 Docker客户端(client) 与 守护进程(Docker daemon)进行对话,该守护进程 完成了构建、运行和分发 Docker 容器的繁重工作。


安装docker及配置

安装docker

检查卸载之前docker

检查之前是否安装过docker,如果有使用: yum remove docker 卸载。

yum remove docker \
   docker-client \
   docker-client-latest \
   docker-common \
   docker-latest \
   docker-latest-logrotate \
   docker-logrotate \
   docker-engine
安装yum-utils

Yellow dog Updater, Modified(Yum),是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。

yum-utils是yum的工具包集合,由不同的作者开发,使yum使用起来更加方便和强大

yum install -y yum-utils

Tips: yum install -y 命令 ,使用此命令安装其它工具。

[root@localhost ~]# yum install -y yum-utils
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.nju.edu.cn
 * extras: mirrors.nju.edu.cn
 * updates: mirrors.aliyun.com
base                             | 3.6 kB  00:00:00     
extras                           | 2.9 kB  00:00:00     
updates                          | 2.9 kB  00:00:00     
软件包 yum-utils-1.1.31-54.el7_8.noarch 已安装并且是最新版本
无须任何处理
配置阿里云镜像

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加载插件:fastestmirror, langpacks
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
更新CentOS

yum update

image-20230702083523840

列出docker源(可选)

yum list docker-ce --showduplicates | sort -r

image-20230702083832770
安装最新docker

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

image-20230702084511376

检查docker 版本号
[root@localhost ~]# docker -v
Docker version 24.0.2, build cb74dfc
启动docker

运行docker,在系统启动时运行。

[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

Doker本地镜像库配置

配置本地镜像库

从网络获取docker镜像太慢,设置阿里云的镜像库。

修改:/etc/docker/daemon.json文件

vim /etc/docker/daemon.json

{
  "registry-mirrors":["https://ung2thfc.mirror.aliyuncs.com"]
}
image-20231218202329032

配置完成后重启docker

[root@localhost ~]# systemctl restart docker

docker网络

docker容器的ip地址在每次启动后启动顺序设置ip地址,为解决ip地址变动的问题,我们有必要设置docker内部ip地址固定。

查看docker 网络

命令: docker network ls

[root@localhost ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
d178b0b3e0d3   bridge    bridge    local
bdf466052f2f   host      host      local
b8ca990b8753   none      null      local

常见网络模式

网络模式简介指定方式
bridge默认为该模式。为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥。使用–network bridge指定,默认使用docker0
host容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。使用–network host指定
none容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair和网桥连接,IP等。使用–network none指定
container新创建的容器不会创建自己的网卡和配置自己的IP,而是和一个指定的容器共享IP、端口范围等。使用–network container:NAME或者容器ID指定
创建自定义网络(network)

docker network create --driver bridge --subnet=自定义网络ip/16 --gateway=网关值 自定义网络名称

docker network create --driver bridge --subnet=172.18.12.0/16 --gateway=172.18.1.1 wn_docker_net
image-20231218203439108
查看所有docker虚拟网络
[root@localhost conf]# docker network ls
NETWORK ID     NAME            DRIVER    SCOPE
d178b0b3e0d3   bridge          bridge    local
bdf466052f2f   host            host      local
b8ca990b8753   none            null      local
51503b70deb9   wn_docker_net   bridge    local

docker常见问题及解决方案

问题:IPv4 forwarding disabled

问题描述

IPv4 forwarding is disabled。网络不能联通。

解决方案

设置:net.ipv4.ip_forward = 1

vim /etc/sysctl.conf
net.ipv4.ip_forward=1

保存&退出(:wq)

重启网络
 systemctl restart network

查看ipv4重定向值

[root@localhost ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

问题: 容器中没有linux命令

当使用linux命令时,显示“command not found"。

问题描述

image-20230414194113652

解决方案
  1. 更新容器中linux

apt-get update

root@1aba593b6c47:/etc/mysql# apt-get update
  1. 安装程序

apt-get install 命令

root@130dddbf14ee:/# apt-get install vim

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值