Docker

Docker
1.Docker 是⼀个开源的应⽤容器引擎,可以实现虚拟化,完全采⽤“沙盒”机制,容器之间不会存在任何接⼝。
2.Docker 和虚拟机的区别
启动速度:Docker 启动速度⾮常快,属于秒级别,⽽虚拟机通常需要⼏分钟去启动。
资源消耗:Docker 需要的资源更少,它直接运⾏在宿主机的内核上,以⼀系列进程的结合形式存在。⽽虚拟机则需要消耗更多的资源,因为它在操作系统级别进⾏虚拟化
轻量级:Docker 更轻量,它的架构可以共⽤⼀个内核与共享应⽤程序库,所占内存极⼩。⽽虚拟机则相对较重,需要消耗更多的内存。
隔离性:虚拟机可以实现系统级别的隔离,⽽ Docker 则属于进程之间的隔离,隔离性相对较弱。
安全性:Docker 的安全性也更弱。
可管理性:Docker 的集中化管理⼯具还不算成熟。
兼容性:开发⼈员不需要关系具体是哪个 Linux 操作系统,基本市⾯上主流系统都可使⽤ Docker。
数据持久性:Docker ⽆法存储数据,当容器重启后,数据会消失;⽽虚拟机可以存储各种数据,包括⽇志、数据库等。
3.Docker 的优缺点
(1)优点
体积⼩:减⼩系统的开销值,⼀台主机可以运⾏上千个容器。
启动迅捷:更快速的交付和部署,docker容器 ,⽐传统虚拟机要快很多,docker核⼼解决的问题就是利⽤容器实现VM类似的功能。
操作⽅便:通过配置 dockerfile 便⽀持灵活的⾃动化创建和部署。
更轻松的扩展:可以实现更简单的、更可靠的迁移,避免了兼容性等问题。
更强的可扩展性和可移植性。
(2)缺点
安全问题:如果没有正确配置,⼀个容器中的恶意代码可能会影响到主机上的其他容器以及主机本身的安全。
存储问题:当使⽤⼤量容器时,存储和管理容器映像可以变得⾮常困难。这可能需要使⽤分布式存储或其他解决⽅案来管理⼤量容器的存储。
性能问题:在某些情况下,容器和虚拟机相⽐会导致性能损失。这些性能问题越来越少,但是仍然需要考虑。
⽹络问题:Docker 可能会在⽹络配置上存在⼀些问题,这可能需要更多的时间来诊断和解决。
复杂性:Docker 是⼀个⾮常灵活的系统,但这同时也让它更加复杂。⻓时间使⽤ Docker 会产⽣⼤量的脚本和配置⽂件,这些可能变得难以维护。
资源消耗:使⽤ Docker 必须占⽤⼀些资源,包括 CPU、内存、磁盘等等。如果运⾏容器的主机资源不⾜,可能会导致性能问题。
学习曲线:Docker 是⼀个相对新的技术,相⽐传统环境需要⼀定的学习曲线。需要了解Docker 基本概念、命令和配置⽂件等。
需要花费时间配置和管理:使⽤ Docker 需要花时间配置和管理容器集群和应⽤程序。需要配置每个容器,管理 Jenkins、Kubernetes 等运⾏ Docker 容器的⼯具。
映像构建复杂:构建Docker映像需要按照特定格式编写Dockerfile 脚本,需要遵循⼀定的规范和流程,这可能需要更多的时间和精⼒。
4.Docker 核⼼概念
镜像(images):⼀个⾯向 docker 容器引擎的只读模板,也是容器的基础,类似于 iso 镜像⽂件。
容器(container):基于镜像所创建的虚拟实例,相当于⼀个简易的 Linux 环境,可启停,且多个容器之间互相隔离。
仓库(Repository):集中存放 docker 镜像的位置,可使⽤docker pull 或 push 命令下载或上传到私有或公有仓库。
仓库注册服务器(registry):存放仓库的地⽅,如果没有私有仓库,则使⽤公共仓库 docker hub。
5.Docker 特性
⽂件系统隔离:每个进程容器运⾏在⼀个完全独⽴的根⽂件系统⾥
资源隔离:实现不同的容器的资源配额和调度,cgroup。
⽹络隔离:每个进程容器运⾏在⾃⼰的⽹络空间,拥有虚拟接⼝和 IP 地址。
⽇志记录:Docker将收集到和记录的每个进程容器的标准流(stdout/stderr/stdin),⽤于实时检索或者批量检索。
变更管理:容器⽂件系统的变更可以提交到新的镜像中,并可重复使⽤以创建更多的容器。
交互式shell:Docker可以分配⼀个虚拟终端并且关联到任何容器的标准输出上,例如运⾏⼀个⼀次性交互shell。
[root@localhost ~]# vim cat << EOF | tee /etc/modules-load.d/k8s.conf
> overlay
> br_netfilter
> EOF
[root@localhost ~]# modprobe overlay
[root@localhost ~]# modprobe br_netfilter
[root@localhost ~]# cat /etc/modules-load.d/k8s.conf 
overlay
br_netfilter
[root@localhost ~]# vim /etc/sysctl.d/k8s.conf
et.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
[root@localhost ~]# sysctl --system
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
[root@localhost ~]# systemctl start docker.service
[root@localhost ~]# docker images //查看镜像
[root@localhost ~]# docker search mysql //搜索
[root@localhost ~]# docker pull centos //下载镜像
[root@localhost ~]# vim /etc/docker/daemon.json
{
    "registry-mirrors": [
        "https://do.nark.eu.org",
        "https://dc.j8.work",
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
    ]
}
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# docker pull centos
[root@localhost ~]# docker run -i -t --name=c0 centos:latest /bin/bash
[root@7c22efc8ed93 ~]# rm -rf /etc/yum.repos.d/*
[root@7c22efc8ed93 ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@7c22efc8ed93 ~]# yum clean all && yum makecache //配置阿里云的yum仓库
[root@7c22efc8ed93 ~]# yum -y install httpd
[root@7c22efc8ed93 ~]# httpd -k start
[root@7c22efc8ed93 ~]# curl localhost
[root@localhost ~]# docker start c0
c0
[root@localhost ~]# docker attach c0 //将c0挂载到当前界面
快捷键:ctrl+p+q(退出服务继续运行)
[root@localhost ~]# ls -lh /var/run/
[root@localhost ~]# vim /etc/docker/daemon.json 

 ,(与之前所写加逗号)
    "hosts": [
        "tcp://0.0.0.0:2375",
        "unix:///var/run/docker.sock"
        ]
}
[root@localhost ~]# systemctl start docker
[root@localhost ~]# vim /usr/lib/systemd/system/docker.service
13 ExecStart=/usr/bin/dockerd //其余删除
[root@localhost ~]# systemctl stop docker
Warning: docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Warning: Stopping docker.service, but it can still be activated by:
  docker.socket
[root@localhost ~]# systemctl start docker
Warning: docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start docker
[root@localhost ~]# netstat -lnput | grep 2375
tcp6       0      0 :::2375                 :::*                    LISTEN      3915/dockerd        
[root@localhost ~]# ls -lh /var/run/
[root@localhost ~]# docker -H 192.168.1.40 images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       latest    5d0da3dc9764   2 years ago   231MB
[root@localhost ~]# docker ps -all
CONTAINER ID   IMAGE           COMMAND       CREATED       STATUS                         PORTS     NAMES
7c22efc8ed93   centos:latest   "/bin/bash"   2 hours ago   Exited (0) About an hour ago             c0
[root@localhost ~]# docker start c0
c0
[root@localhost ~]# docker attach c0
[root@7c22efc8ed93 /]# httpd -k start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[root@7c22efc8ed93 /]# curl localhost

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值