-
2021-12-01 09:57:49
docker是什么?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。
Docker容器是一个完整的文件系统,这个文件系统中包含了你的软件运行所需要的全部环境,如:软件的源码、运行环境、所需的软件等。
Docker技术发展历程
2011年 — Warden:由CloudFoundry公司于2011年所建立,其利用LXC 作为初始阶段,随后又将其替换为自家实现方案。与LXC不同,Warden并不会与Linux紧密耦合。相反,其能够运行在任意能够提供多种隔离环境方式的操作系统之上
2013年 — LMCTFY:“Let Me Contain That For You(帮你实现容器化)”。它其实属于谷歌容器技术堆栈的开源版本,负责提供Linux应用程序容器,Kubernetes目前所使用的cAdvisor工具最初就来源于lmctfy项目
2013年 — Docker:起步阶段使用LXC,而后利用自己的libcontainer库将其替换下来。与其它容器平台不同,Docker引入了一整套与容器管理相关的生态系统。其中包括一套高效的分层式容器镜像模型、一套全局及本地容器注册表、一个精简化REST API以及一套命令行界面等等。在后期发展阶段,Docker公司还构建起一套名为Docker Swarm的容器集群管理解决方案
2014年 — Rocket:解决部分Docker当中存在的缺陷,开发目标是在安全性与生产要求满足能力上超越Docker,其基于App Container规范并使其成为一项更为开放的标准
2015年—Docker进行大家视线,开源社区得到前所未有的发展
2016年 — Windows容器发布,docker新技术架构升级
2017年—Docker:正式进行商业化运作,docker与moby分家
2018年-Docker在企业中快速落地容器与虚拟机的区别
容器为应用程序提供了隔离的运行空间:每个容器内都包含一个独享的完整用户环境空间,并且一个容器内的变动不会影响其他容器的运行环境。容器技术使用了namespaces来进行空间隔离,通过文件系统的挂载点来决定容器可以访问哪些文件,通过cgroups来确定每个容器可以利用多少资源。此外容器之间共享同一个系统内核,这样当同一个库被多个容器使用时,内存的使用效率会得到提升。
对于系统虚拟化技术来说,虚拟层为用户提供了一个完整的虚拟机:包括内核在内的一个完整的系统镜像。CPU虚拟化技术可以为每个用户提供一个独享且和其他用户隔离的系统环境,虚拟层可以为每个用户分配虚拟化后的CPU、内存和IO设备资源
基于docker容器虚拟化与传统虚拟化对比
Docker是开发人员和系统管理员使用容器开发、部署和运行应用程序的平台。使用Linux容器来部署应用程序称为集装箱化
集装箱化的优点
灵活:即使是复杂的应用程序也可封装。
轻量级:容器利用并共享主机内核。
便携式:您可以在本地构建,部署到云上并在任何地方运行。
可扩展性:您可以增加和自动分发容器副本。
可堆叠:您可以垂直堆叠服务并及时并及时堆叠服务。docker发布流程:
软件包->打包带上环境(镜像)->Docker仓库:商店->下载发布的镜像->直接运行可用
docker的机制很好的解决了这些问题
docker源于集装箱的思想,自带隔离机制,容器与容器之间互不干扰
一次构建,随处运行。docker可以将写好镜像文件进行打包到任何docker服务中去运行,这个源于docker的容器格式:Docker引擎将名称空间、控制组和联合文件系统打包到一起所使用的就是容器格式。默认的容器格式是Libcontaine
docker的控制组和联合文件系统,可以设置进程的cpu内存等使用限额,而联合文件系统可以建立联合挂载点,共享存储。简介
LXC(LinuX Containers)Linux容器,一种操作系统层虚拟化技术,为Linux内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器(Container),内含应用软件本身的代码,以及所需要的操作系统核心和库。透过统一的名字空间和共享API来分配不同软件容器的可用硬件资源,创造出应用程序的独立沙箱运行环境,使得Linux用户可以容易的创建和管理系统或应用容器。
在Linux内核中,提供了cgroups功能,来达成资源的隔离。它同时也提供了名称空间隔离的功能,使应用程序看到的操作系统环境被区隔成独立区间,包括进程树,网络,用户id,以及挂载的文件系统。但是cgroups并不一定需要启动任何虚拟机。
LXC利用cgroups与名称空间的功能,提供应用软件一个独立的操作系统环境。LXC不需要Hypervisor这个软件层,软件容器(Container)本身极为轻量化,提升了创建虚拟机的速度。而Docker本质来说不是容器,而是容器的管理工具,最初的Docker也是基于LXC实现的。
LXC关键技术点:
chroot,根切换,从容器内的角度来看,仿佛真的有自己的根树
namespaces:名称空间,负责将资源隔离,比如pid,网络,mnt,user,uts等
CGroups:控制组,负责控制资源的分配部署
环境说明:
系统版本 ip地址 centos7 192.168.71.136 //安装epel源 [root@localhost ~]# yum -y install epel-release 安装LXC以及其依赖包 [root@localhost ~]# yum -y install lxc lxc-templates bridge-utils lxc-libs libcgroup libvirt perl debootstrap lxc-templat //LXC的配置模板 bridge-utils //这个是网桥管理的工具包 lxc-libs //LXC所需要的库文件 libcgroup //cgroup是为linux内核提供任务聚集和划分的机制,通过一组参数集合将一些任务组织成一个或多个子系统。 libvirt //管理linux虚拟化功能所需要的服务器端的守护程序。需要针对特定驱动程序的管理程序。
开启服务
[root@localhost ~]# systemctl start lxc [root@localhost ~]# systemctl start libvirtd [root@localhost ~]# lxc-checkconfig //检查配置 Kernel configuration not found at /proc/config.gz; searching... Kernel configuration found at /boot/config-3.10.0-862.el7.x86_64 --- Namespaces --- Namespaces: enabled Utsname namespace: enabled Ipc namespace: enabled Pid namespace: enabled User namespace: enabled newuidmap is not installed newgidmap is not installed Network namespace: enabled Multiple /dev/pts instances: enabled --- Control groups --- Cgroup: enabled Cgroup clone_children flag: enabled Cgroup device: enabled Cgroup sched: enabled Cgroup cpu account: enabled Cgroup memory controller: enabled Cgroup cpuset: enabled --- Misc --- Veth pair device: enabled Macvlan: enabled Vlan: enabled Bridges: enabled Advanced netfilter: enabled CONFIG_NF_NAT_IPV4: enabled CONFIG_NF_NAT_IPV6: enabled CONFIG_IP_NF_TARGET_MASQUERADE: enabled CONFIG_IP6_NF_TARGET_MASQUERADE: enabled CONFIG_NETFILTER_XT_TARGET_CHECKSUM: enabled --- Checkpoint/Restore --- checkpoint restore: enabled CONFIG_FHANDLE: enabled CONFIG_EVENTFD: enabled CONFIG_EPOLL: enabled CONFIG_UNIX_DIAG: enabled CONFIG_INET_DIAG: enabled CONFIG_PACKET_DIAG: enabled CONFIG_NETLINK_DIAG: enabled File capabilities: enabled Note : Before booting a new kernel, you can check its configuration usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig
创建虚拟机
// 查看当前系统中可用的LXC模板容器 [root@localhost ~]# ls /usr/share/lxc/templates/ lxc-alpine lxc-archlinux lxc-centos lxc-debian lxc-fedora lxc-openmandriva lxc-oracle lxc-sshd lxc-ubuntu-cloud lxc-altlinux lxc-busybox lxc-cirros lxc-download lxc-gentoo lxc-opensuse lxc-plamo lxc-ubuntu
创建LXC主机
[root@localhost ~]# lxc-create -t centos -n myhost1 //创建LXC主机,-t 指定模板容器,-n 指定要创建的主机名 Copying rootfs to /var/lib/lxc/myhost1/rootfs ... #生成虚拟系统的根,文件默认路径在/var/lib/lxc/myhsot1下 /var/lib/lxc/myhost1/tmp_root_pass' #这个文件保存了主机的初始root密码 chroot /var/lib/lxc/myhost1/rootfs passwd #可以使用这个命令修改初始root密码 //lxc主机所生成的文件默认路径在/var/lib/lxc/主机名/目录下 [root@localhost myhost1]# pwd /var/lib/lxc/myhost1 [root@localhost myhost1]# ls config rootfs tmp_root_pass // config为配置文件 // rootfs为根目录 // tmp_root_pass root密码存放位置
启动主机
[root@localhost myhost1]# chroot /var/lib/lxc/myhost1/rootfs/ passwd //修改初始密码 更改用户 root 的密码 。 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 [root@localhost myhost1]# lxc-start -n myhost1 systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN) Detected virtualization lxc. Detected architecture x86-64. Welcome to CentOS Linux 7 (Core)! Running in a container, ignoring fstab device entry for /dev/root. Cannot add dependency job for unit display-manager.service, ignoring: Unit not found. [ OK ] Reached target Remote File Systems. 此处省略N行 myhost1 login: root #使用root用户登陆 Password: #输入设置的root密码
查看lxc主机的一些系统信息
[root@myhost1 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 50G 2.3G 48G 5% / devtmpfs 1.4G 0 1.4G 0% /dev tmpfs 1.4G 0 1.4G 0% /dev/shm tmpfs 1.4G 17M 1.4G 2% /run tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup tmpfs 280M 0 280M 0% /run/user/0 [root@myhost1 ~]# ip a //查看网卡的信息 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 5: eth0@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether fe:9f:2e:9a:ff:b5 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 192.168.122.118/24 brd 192.168.122.255 scope global dynamic eth0 valid_lft 3403sec preferred_lft 3403sec inet6 fe80::fc9f:2eff:fe9a:ffb5/64 scope link valid_lft forever preferred_lft forever lxc-start -n myhost1 -d #在启动时添加-d选项可以把主机防止后台有运行 lxc-console -n myhost1 #使用lxc-console 进行连接 71[root@localhost ~]# ssh root@192.168.122.118 root@192.168.122.118's password: //可以使用ssh进行连接
查看主机的运行状态
[root@localhost myhost1]# lxc-info -n myhost1 Name: myhost1 State: RUNNING PID: 1741 IP: 192.168.122.118 CPU use: 0.17 seconds BlkIO use: 15.54 MiB Memory use: 8.04 MiB KMem use: 0 bytes Link: veth55YWH2 TX bytes: 1.42 KiB RX bytes: 6.19 KiB Total bytes: 7.61 KiB
//停止lxc主机 [root@localhost myhost1]# lxc-stop -n myhost1 //克隆主机 [root@localhost myhost1]# lxc-clone -o myhost1 -n myhost2 //把myhost1克隆为名字为myhost2 Created container myhost2 as copy of myhost1 //删除主机 [root@localhost myhost1]# lxc-destroy -n myhost1 [root@localhost ~]# lxc-start -n myhost2 systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN) Detected virtualization lxc. Detected architecture x86-64. Welcome to CentOS Linux 7 (Core)! 此处省略N行 myhost2 login: root Password: //密码与myhost1相同
更多相关内容 -
Proxmox LXC 容器安装docker
2019-11-29 09:38:52Proxmox 的LXC容器安装docker的方法,限制条件,只能在unbuntu容器中安装,centos的容器测试不成功。 -
LXC与Docker介绍
2021-12-01 09:47:14文章目录LXCLUX是什么LXC常用命令LXC的使用Docker容器虚拟化和传统虚拟化的区别Linux NamespacesCGroupsdoeker基本概念docker容器编排 LXC LUX是什么 LXC(LinuX Containers)Linux容器,一种操作系统层虚拟化技术,...LXC
LUX是什么
LXC(LinuX Containers)Linux容器,一种操作系统层虚拟化技术,为Linux内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器(Container),内含应用软件本身的代码,以及所需要的操作系统核心和库。透过统一的名字空间和共享API来分配不同软件容器的可用硬件资源,创造出应用程序的独立沙箱运行环境,使得Linux用户可以容易的创建和管理系统或应用容器。
在Linux内核中,提供了cgroups功能,来达成资源的隔离。它同时也提供了名称空间隔离的功能,使应用程序看到的操作系统环境被区隔成独立区间,包括进程树,网络,用户id,以及挂载的文件系统。但是cgroups并不一定需要启动任何虚拟机。
LXC利用cgroups与名称空间的功能,提供应用软件一个独立的操作系统环境。LXC不需要Hypervisor这个软件层,软件容器(Container)本身极为轻量化,提升了创建虚拟机的速度。
LXC关键技术点:
- chroot,根切换,从容器内的角度来看,仿佛真的有自己的根树
- namespaces:名称空间,负责将资源隔离,比如pid,网络,mnt,user,uts等
- CGroups:控制组,负责控制资源的分配
LXC常用命令
- lxc-checkconfig:检查系统环境是否满足容器使用要求
- lxc-create:创建lxc容器(格式:lxc-create -n NAME -t TEMPLATE_NAME)
- lxc-destory:删除处于停机状态的容器
- lxc-start:启动容器(格式:lxc-start -n NAME -d)
- lxc-stop:停止容器
- lxc-info:查看容器相关的信息(格式:lxc-info -n NAME)
- lxc-console:附加至指定容器的控制台(格式:lxc-console -n NAME -t NUMBER)
- lxc-snapshot:创建和恢复快照
- 退出容器方式:<Ctrl+a q>
LXC的使用
- 安装部署LXC
//安装epel源 [root@192 ~]# yum -y install epel-release //安装依赖包 [root@192 ~]# yum -y install lxc lxc-templates bridge-utils lxc-libs libcgroup libvirt perl debootstrap //启动服务 [root@192 ~]# systemctl start lxc libvirtd [root@192 ~]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 0.0.0.0:111 0.0.0.0:* LISTEN 0 32 192.168.122.1:53 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 128 [::]:111 [::]:* LISTEN 0 128 [::]:22 [::]:* //检查系统是否满足容器使用要求 [root@192 ~]# lxc-checkconfig Kernel configuration not found at /proc/config.gz; searching... Kernel configuration found at /boot/config-3.10.0-862.el7.x86_64 --- Namespaces --- Namespaces: enabled Utsname namespace: enabled Ipc namespace: enabled Pid namespace: enabled User namespace: enabled newuidmap is not installed newgidmap is not installed Network namespace: enabled Multiple /dev/pts instances: enabled --- Control groups --- Cgroup: enabled Cgroup clone_children flag: enabled Cgroup device: enabled Cgroup sched: enabled Cgroup cpu account: enabled Cgroup memory controller: enabled Cgroup cpuset: enabled --- Misc --- Veth pair device: enabled Macvlan: enabled Vlan: enabled Bridges: enabled Advanced netfilter: enabled CONFIG_NF_NAT_IPV4: enabled CONFIG_NF_NAT_IPV6: enabled CONFIG_IP_NF_TARGET_MASQUERADE: enabled CONFIG_IP6_NF_TARGET_MASQUERADE: enabled CONFIG_NETFILTER_XT_TARGET_CHECKSUM: enabled --- Checkpoint/Restore --- checkpoint restore: enabled CONFIG_FHANDLE: enabled CONFIG_EVENTFD: enabled CONFIG_EPOLL: enabled CONFIG_UNIX_DIAG: enabled CONFIG_INET_DIAG: enabled CONFIG_PACKET_DIAG: enabled CONFIG_NETLINK_DIAG: enabled File capabilities: enabled Note : Before booting a new kernel, you can check its configuration usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig //查看模板 [root@192 ~]# ls /usr/share/lxc/templates/ lxc-alpine lxc-centos lxc-fedora lxc-oracle lxc-ubuntu-cloud lxc-altlinux lxc-cirros lxc-gentoo lxc-plamo lxc-archlinux lxc-debian lxc-openmandriva lxc-sshd lxc-busybox lxc-download lxc-opensuse lxc-ubuntu
- 创建容器
//创建容器lxc-create: 格式:lxc-create -n NAME -t TEMPLATE_NAME [root@192 ~]# lxc-create -t centos -n watest1 Copy /var/cache/lxc/centos/x86_64/7/rootfs to /var/lib/lxc/watest1/rootfs ... Copying rootfs to /var/lib/lxc/watest1/rootfs ... sed: can't read /var/lib/lxc/watest1/rootfs/etc/init/tty.conf: No such file or directory Storing root password in '/var/lib/lxc/watest1/tmp_root_pass' chpasswd: cannot open /etc/passwd Expiring password for user root. passwd: Libuser error at line: 425 - Error replacing `/etc/passwd': Permission denied. passwd: Error sed: can't read /var/lib/lxc/watest1/rootfs/etc/rc.sysinit: No such file or directory sed: can't read /var/lib/lxc/watest1/rootfs/etc/rc.d/rc.sysinit: No such file or directory Container rootfs and config have been created. Edit the config file to check/enable networking setup. The temporary root password is stored in: '/var/lib/lxc/watest1/tmp_root_pass' The root password is set up as expired and will require it to be changed at first login, which you should do as soon as possible. If you lose the root password or wish to change it without starting the container, you can change it from the host by running the following command (which will also reset the expired flag): chroot /var/lib/lxc/watest1/rootfs passwd //修改初始化密码 //新创建的容器密码比较复杂,可以根据自己的需求修改密码 //查看原始密码 [root@192 watest1]# pwd /var/lib/lxc/watest1 [root@192 watest1]# cat tmp_root_pass Root-watest1-fVSj3E //使用命令chroot /var/lib/lxc/watest1/rootfs passwd 更改用户 root 的密码 。 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新
- 启动容器
//启动容器lxc-start 格式:lxc-start -n NAME -d 在启动时添加-d选项可以把主机防止后台有运行 [root@localhost ~]# lxc-start -n watest1 -d systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN) Detected virtualization lxc. Detected architecture x86-64. Welcome to CentOS Linux 7 (Core)! Running in a container, ignoring fstab device entry for /dev/root. Cannot add dependency job for unit display-manager.service, ignoring: Unit not found. [ OK ] Started Dispatch Password Requests to Console Directory Watch. [ OK ] Reached target Local Encrypted Volumes. [ OK ] Reached target Swap. [ OK ] Created slice Root Slice. [ OK ] Created slice User and Session Slice. [ OK ] Listening on /dev/initctl Compatibility Named Pipe. [ OK ] Listening on Journal Socket. [ OK ] Started Forward Password Requests to Wall Directory Watch. [ OK ] Reached target Paths. [ OK ] Created slice System Slice. Mounting POSIX Message Queue File System... [ OK ] Created slice system-getty.slice. Mounting Huge Pages File System... Starting Journal Service... Starting Read and set NIS domainname from /etc/sysconfig/network... [ OK ] Reached target Slices. Starting Remount Root and Kernel File Systems... [ OK ] Reached target Remote File Systems. [ OK ] Listening on Delayed Shutdown Socket. [ OK ] Mounted POSIX Message Queue File System. [ OK ] Mounted Huge Pages File System. [ OK ] Started Journal Service. [ OK ] Started Read and set NIS domainname from /etc/sysconfig/network. [ OK ] Started Remount Root and Kernel File Systems. Starting Configure read-only root support... Starting Flush Journal to Persistent Storage... Starting Rebuild Hardware Database... [ OK ] Reached target Local File Systems (Pre). <46>systemd-journald[16]: Received request to flush runtime journal from PID 1 [ OK ] Started Flush Journal to Persistent Storage. [ OK ] Started Configure read-only root support. [ OK ] Reached target Local File Systems. Starting Rebuild Journal Catalog... Starting Mark the need to relabel after reboot... Starting Create Volatile Files and Directories... Starting Load/Save Random Seed... [ OK ] Started Mark the need to relabel after reboot. [ OK ] Started Load/Save Random Seed. [ OK ] Started Rebuild Journal Catalog. [ OK ] Started Create Volatile Files and Directories. Starting Update UTMP about System Boot/Shutdown... [ OK ] Started Update UTMP about System Boot/Shutdown. [ OK ] Started Rebuild Hardware Database. Starting Update is Completed... [ OK ] Started Update is Completed. [ OK ] Reached target System Initialization. [ OK ] Started Daily Cleanup of Temporary Directories. [ OK ] Reached target Timers. [ OK ] Listening on D-Bus System Message Bus Socket. [ OK ] Reached target Sockets. [ OK ] Reached target Basic System. [ OK ] Started D-Bus System Message Bus. Starting OpenSSH Server Key Generation... Starting Permit User Sessions... Starting LSB: Bring up/down networking... Starting Login Service... Starting Cleanup of Temporary Directories... [ OK ] Started Permit User Sessions. [ OK ] Started Console Getty. [ OK ] Reached target Login Prompts. [ OK ] Started Command Scheduler. [ OK ] Started Cleanup of Temporary Directories. [ OK ] Started Login Service. [ OK ] Started OpenSSH Server Key Generation. CentOS Linux 7 (Core) Kernel 3.10.0-862.el7.x86_64 on an x86_64 mytest1 login: root #使用root用户登陆 Password: #输入设置的root密码 <28>systemd-sysctl[296]: Failed to write '1' to '/proc/sys/fs/protected_symlinks': Read-only file system
- 查看容器运行状态
//查看运行状态语法: lxc-info 格式:lxc-info -n NAME [root@192 ~]# lxc-info -n watest1 Name: watest1 //主机名 State: RUNNING //当前状态,RUNNING表示启动,STOPPED表示关闭。 PID: 4257 //lxc主机当前在物理机上的进程号 IP: 192.168.218.145 //主机的IP地址 CPU use: 0.09 seconds //cpu占用时间 BlkIO use: 17.44 MiB //占用BLKIO资源的大小 Memory use: 9.14 MiB //占用物理内存大小 KMem use: 0 bytes //内核虚拟内存 Link: vethHPG9WI TX bytes: 1.23 KiB //流量相关的信息 RX bytes: 2.68 KiB Total bytes: 4.11 KiB
- 停止lxc容器
停止容器语法:lxc-stop [root@192~]# lxc-stop -n watest1
- 删除容器
//删除容器语法:lxc-destory [root@192 ~]# lxc-destroy -n watest1
Docker
容器虚拟化和传统虚拟化的区别
传统虚拟化:通过虚拟化技术模拟真实的硬件从而创建出来的一台拥有完整功能的逻辑计算机。
容器虚拟化:Docker容器也是一种虚拟化技术,和传统虚拟化不一样的是Docker只模拟一个程序最核心的运行环境,所以十分小巧,启动更快。
虚拟化分为以下两类:
- 主机级虚拟化
- 全虚拟化
- 半虚拟化
- 容器级虚拟化
容器分离开的资源:
- UTS(主机名与域名)
- Mount(文件系统挂载树)
- IPC
- PID进程树
- User
- Network(tcp/ip协议栈)
Linux Namespaces
命名空间(Namespaces)是Linux内核针对实现容器虚拟化而引入的一个强大特性。
每个容器都可以拥有自己独立的命名空间,运行其中的应用都像是在独立的操作系统中运行一样。命名空间保证了容器间彼此互不影响。
namespaces 系统调用参数 隔离内容 内核版本 UTS CLONE_NEWUTS 主机名和域名 2.6.19 IPC CLONE_NEWIPC 信号量、消息队列和共享内存 2.6.19 PID CLONE_NEWPID 进程编号 2.6.24 Network CLONE_NEWNET 网络设备、网络栈、端口等 2.6.29 Mount CLONE_NEWNS 挂载点(文件系统) 2.4.19 User CLONE_NEWUSER 用户和用户组 3.8 CGroups
控制组(CGroups)是Linux内核的一个特性,用来对共享资源进行隔离、限制、审计等。只有能控制分配到容器的资源,Docker才能避免多个容器同时运行时的系统资源竞争。
控制组可以提供对容器的内存、CPU、磁盘IO等资源进行限制。
CGroups能够限制的资源有:
- blkio:块设备IO
- cpu:CPU
- cpuacct:CPU资源使用报告
- cpuset:多处理器平台上的CPU集合
- devices:设备访问
- freezer:挂起或恢复任务
- memory:内存用量及报告
- perf_event:对cgroup中的任务进行统一性能测试
- net_cls:cgroup中的任务创建的数据报文的类别标识符
具体来看,控制组提供如下功能:
- 资源限制(Resource Limitting)组可以设置为不超过设定的内存限制。比如:内存子系统可以为进行组设定一个内存使用上限,一旦进程组使用的内存达到限额再申请内存,就会发出Out of Memory警告
- 优先级(Prioritization)通过优先级让一些组优先得到更多的CPU等资源
- 资源审计(Accounting)用来统计系统实际上把多少资源用到合适的目的上,可以使用cpuacct子系统记录某个进程组使用的CPU时间
- 隔离(Isolation)为组隔离命名空间,这样一个组不会看到另一个组的进程、网络连接和文件系统
- 控制(Control)挂起、恢复和重启等操作
安装Docker后,用户可以在/sys/fs/cgroup/memory/docker/目录下看到对Docker组应用的各种限制项,包括
[root@localhost ~]# cd /sys/fs/cgroup/memory/ [root@localhost memory]# ls cgroup.clone_children memory.kmem.slabinfo memory.memsw.limit_in_bytes memory.swappiness cgroup.event_control memory.kmem.tcp.failcnt memory.memsw.max_usage_in_bytes memory.usage_in_bytes cgroup.procs memory.kmem.tcp.limit_in_bytes memory.memsw.usage_in_bytes memory.use_hierarchy cgroup.sane_behavior memory.kmem.tcp.max_usage_in_bytes memory.move_charge_at_immigrate notify_on_release memory.failcnt memory.kmem.tcp.usage_in_bytes memory.numa_stat release_agent memory.force_empty memory.kmem.usage_in_bytes memory.oom_control system.slice memory.kmem.failcnt memory.limit_in_bytes memory.pressure_level tasks memory.kmem.limit_in_bytes memory.max_usage_in_bytes memory.soft_limit_in_bytes user.slice memory.kmem.max_usage_in_bytes memory.memsw.failcnt memory.stat
用户可以通过修改这些文件值来控制组限制Docker应用资源。
doeker基本概念
什么是docker:- docker是容器技术的一个前端工具,容器是内核的一项技术,docker只是把这一项技术的使用得以简化,使之普及而已
- docker早期的版本其核心就是一个LXC,docker对其进行了二次封装,功能的实现是通过LXC做容器管理引擎,但是在创建容器时,不再是像LXC一样用模板去现场安装,而是事先通过一种类似镜像技术,就像在KVM中一样,将一个操作系统打包成一个镜像,然后将这个镜像拷贝到目标主机上直接部署启动
- 尝试着把一个操作系统用户空间需要用到的所有组件,事先准备、编排好,编排好以后整体打包成一个文件,这个文件我们称其为镜像文件(image)
- docker底层依赖的核心技术主要包括Linux操作系统的命名空间、控制组、联合文件系统和Linux虚拟网络支持
- docker的镜像文件是放在一个集中统一的互联网仓库中的,把一些人们常用的镜像文件放在互联网仓库中,当人们想启动一个容器的时候,docker会到这个互联网仓库中去下载我们需要的镜像到本地,并基于镜像来启动容器。
- 自docker 0.9版本起,docker除了继续支持LXC外,还开始引入自家的libcontainer,试图打造更通用的底层容器虚拟化库。如今的docker基本上都已经是使用libcontainer而非LXC了。
docker工作方式:
为了使容器的使用更加易于管理,docker采取一个用户空间只跑一个业务进程的方式,在一个容器内只运行一个进程,比如我们要在一台主机上安装一个nginx和一个tomcat,那么nginx就运行在nginx的容器中,tomcat运行在tomcat的容器中,二者用容器间的通信逻辑来进行通信。使用docker的优劣:
- 删除一个容器不会影响其他容器
- 分发容易,真正意义上一次编写到处运行,比java的跨平台更彻底
- 部署容易,无论底层系统是什么,只要有docker,直接run就可以了
- 分层构建,联合挂载
- 调试不便,占空间(每个容器中都必须自带调试工具,比如ps命令)
在容器中有数据称作有状态,没有数据称作无状态。在容器的使用中,我们应以有状态为耻,以无状态为荣。数据不应该放在容器中,而应放置于外部存储中,通过挂载到容器中从而进行数据的存储。
docker容器编排
当我们要去构建一个lnmp架构的时候,它们之间会有依赖关系,哪个应用应该在什么时候启动,在谁之前或之后启动,这种依赖关系我们应该要事先定义好,最好是按照一定的次序实现,而docker自身没有这个功能,所以我们需要一个在docker的基础上,能够把这种应用程序之间的依赖关系、从属关系、隶属关系等等反映在启动、关闭时的次序和管理逻辑中,这种功能被称为容器编排。
有了docker以后,运维的发布工作必须通过编排工具来实现容器的编排,如果没有编排工具,运维人员想去管理容器其实比直接管理程序要更加麻烦,增加了运维环境管理的复杂度。
常见的容器编排工具:
- machine+swarm(把N个docker主机当一个主机来管理)+compose(单机编排)
- mesos(实现统一资源调度和分配)+marathon
- kubernetes --> k8s
-
pve中的lxc centos7安装docker
2021-02-15 00:23:10首先设置 1、取消勾选无特权的容器,签名选择-嵌套。...3、安装,然后启动就行了,如果有问题那只能输入这个 看日志: journalctl -xe | grep docker systemctl stutas docker systemctl restart首先设置
~~好像没啥用…装的上 用不了
~~
1、取消勾选无特权的容器,签名选择-嵌套。
2、为了让网络使用 需要设置宿主机
需要到宿主机的shell中输入echo 1 > /proc/sys/net/ipv4/ip_forward
参考:echo 1 > /proc/sys/net/ipv4/ip_forward
3、安装,然后启动就行了,如果有问题那只能输入这个
看日志:
journalctl -xe | grep docker systemctl stutas docker
将/etc/selinux下的config文件中的SELINUX属性改为disabled
systemctl restart docker
另外内网的话记得配置代理:
https://blog.csdn.net/lizhede/article/details/89056141
阿里云容器镜像服务
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
Docker CE 镜像源站-阿里云开发者社区
https://developer.aliyun.com/article/110806
国产的docker面板
docker run --restart always -p 8081:8081 -d -v /var/run/docker.sock:/var/run/docker.sock -v /etc/docker/:/etc/docker/ wangbinxingkong/fast:latest
官方地址:https://www.dockernb.com/
本地加速业务:docker学习笔记04:Centos7使用阿里云镜像加速_繁华陌路丶的博客-CSDN博客_docker阿里云镜像加速
https://blog.csdn.net/xlemonok/article/details/71403534 -
docker & LXC
2021-11-30 18:00:32目录一、LXC1、了解Docker的前生LXC2、LXC与docker的关系3、与传统虚拟化对比4、LXC部署4.1、安装LXC软件包和依赖包4.2、启动服务4.3、创建虚拟机5、LXC常用命令二、doker1、什么是docker2、docker的由来3、docker的...目录
一、LXC
1、了解Docker的前生LXC
LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。
与传统虚拟化技术相比,它的优势在于:
(1)与宿主机使用同一个内核,性能损耗小;
(2)不需要指令级模拟;
(3)不需要即时(Just-in-time)编译;
(4)容器可以在CPU核心的本地运行指令,不需要任何专门的解释机制;
(5)避免了准虚拟化和系统调用替换中的复杂性;
(6)轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享。
总结:Linux Container是一种轻量级的虚拟化的手段。
Linux Container提供了在单一可控主机节点上支持多个相互隔离的server container同时执行的机制。Linux Container有点像chroot,提供了一个拥有自己进程和网络空间的虚拟环境,但又有别于虚拟机,因为lxc是一种操作系统层次上的资源的虚拟化。
2、LXC与docker的关系
docker并不是LXC替代品,docker底层使用了LXC来实现,LXC将linux进程沙盒化,使得进程之间相互隔离,并且能够控制各进程的资源分配。
在LXC的基础之上,docker提供了一系列更强大的功能。
3、与传统虚拟化对比
不同于vmware,kvm等虚拟化技术,它是一种类似chroot的容器技术,非常的轻量级。
与传统的硬件虚拟化技术相比有以下优势:
a、更小的虚拟化开销。Linux内核本身是一个很好的硬件资源调度器,LXC的诸多特性基本由内核提供,而内核实现这些特性只有极少的花费,CPU,内存,硬盘都是直接使用。
b、更快的启动速度。lxc容器技术将操作系统抽象到了一个新的高度。直接从init启动,省去了硬件自检、grub引导、加载内核、加载驱动等传统启动项目,因此启动飞速。
c、更快速的部署。lxc与带cow特性的后端文件系统相结合,一旦建好了模板,利用快照功能,半秒钟即可实现克隆一台lxc虚拟机。LXC虚拟机本质上只是宿主机上的一个目录,这也为备份和迁移提供了极大便利。
d、更高内存使用效率。普通虚拟机一般会独占一段内存,即使闲置,其他虚拟机也无法使用,例如KVM。而容器可以只有一个内存上限,没有下限。如果它只使用1MB内存,那么它只占用宿主机1MB内存。宿主机可以将富余内存作为他用。
4、LXC部署
4.1、安装LXC软件包和依赖包
[root@localhost ~]# yum -y install epel-release [root@localhost ~]# yum -y install lxc lxc-templates bridge-utils lxc-libs libcgroup libvirt
包名 · lxc 主程序包 lxc-templates lxc的配置模板 bridge-utils 网桥管理工具 lxc-libs lxc所需的库文件 libcgroup cgroup是为Linux内核提供任务聚集和划分的机制,通过一组参数集合将一些任务组织成一个或多个子系统。 libvirt 管理Linux的虚拟化功能所需的服务器端守护程序。 需要针对特定驱动程序的管理程序。 注:如果要创建debian系列的主机需要再安装一个软件包:debootstrap
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-br0 [root@localhost network-scripts]# cat ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=3fcc157d-5ba6-4cec-8c10-b76cd96df174 DEVICE=ens33 ONBOOT=yes BRIDGE=br0 #连接桥设备 [root@localhost network-scripts]# cat ifcfg-br0 DEVICE=br0 TYPE=Bridge ONBOOT=yes DELAY=0 NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.235.160 NETMASK=255.255.255.0 GATEWAY=192.168.235.2
4.2、启动服务
[root@localhost ~]# systemctl start lxc [root@localhost ~]# systemctl status lxc ● lxc.service - LXC Container Initialization and Autoboot Code Loaded: loaded (/usr/lib/systemd/system/lxc.service; disabled; vendor preset: disabled) Active: active (exited) since Tue 2021-11-30 18:32:30 CST; 5s ago Docs: man:lxc-autostart man:lxc Process: 52455 ExecStart=/usr/libexec/lxc/lxc-containers start (code=exited, status=0/SUCCES> Process: 52453 ExecStartPre=/usr/libexec/lxc/lxc-apparmor-load (code=exited, status=0/SUCCES> Main PID: 52455 (code=exited, status=0/SUCCESS) 11月 30 18:32:30 localhost.localdomain systemd[1]: Starting LXC Container Initialization and A> 11月 30 18:32:30 localhost.localdomain systemd[1]: Started LXC Container Initialization and Au> lines 1-11/11 (END)
4.3、创建虚拟机
lxc为创建虚拟机提供了模板文件,它们位于/usr/share/lxc/templates目录中。其中的lxc-centos即为创建lxc centos系统的模板。
另外,lxc为虚拟机提供的默认配置文件为/etc/lxc/default.conf,其中使用的桥接接口名称为virbr0,此与前面的创建的接口名称不一致,因此需要作出修改。
当然,也可以将此文件复制之后进行修改,并以为作为接下来的要创建的centos虚拟机的专用配置文件。修改后的default.conf如下所示。[root@localhost ~]# ls /usr/share/lxc/templates/ lxc-busybox lxc-download lxc-local lxc-oci //检查lxc运行环境 [root@localhost ~]# lxc-checkconfig Kernel configuration not found at /proc/config.gz; searching... Kernel configuration found at /boot/config-4.18.0-257.el8.x86_64 --- Namespaces --- Namespaces: enabled Utsname namespace: enabled Ipc namespace: enabled Pid namespace: enabled User namespace: enabled Warning: newuidmap is not setuid-root Warning: newgidmap is not setuid-root Network namespace: enabled --- Control groups --- Cgroups: enabled Cgroup v1 mount points: /sys/fs/cgroup/systemd /sys/fs/cgroup/blkio /sys/fs/cgroup/net_cls,net_prio /sys/fs/cgroup/perf_event /sys/fs/cgroup/freezer /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/cpuset /sys/fs/cgroup/memory /sys/fs/cgroup/pids /sys/fs/cgroup/rdma /sys/fs/cgroup/hugetlb /sys/fs/cgroup/devices Cgroup v2 mount points: Cgroup v1 clone_children flag: enabled Cgroup device: enabled Cgroup sched: enabled Cgroup cpu account: enabled Cgroup memory controller: enabled Cgroup cpuset: enabled --- Misc --- Veth pair device: enabled, not loaded Macvlan: enabled, not loaded Vlan: enabled, not loaded Bridges: enabled, loaded Advanced netfilter: enabled, loaded CONFIG_NF_NAT_IPV4: missing CONFIG_NF_NAT_IPV6: missing CONFIG_IP_NF_TARGET_MASQUERADE: enabled, not loaded CONFIG_IP6_NF_TARGET_MASQUERADE: enabled, not loaded CONFIG_NETFILTER_XT_TARGET_CHECKSUM: enabled, loaded CONFIG_NETFILTER_XT_MATCH_COMMENT: enabled, not loaded FUSE (for use with lxcfs): enabled, loaded --- Checkpoint/Restore --- checkpoint restore: enabled CONFIG_FHANDLE: enabled CONFIG_EVENTFD: enabled CONFIG_EPOLL: enabled CONFIG_UNIX_DIAG: enabled CONFIG_INET_DIAG: enabled CONFIG_PACKET_DIAG: enabled CONFIG_NETLINK_DIAG: enabled File capabilities: Note : Before booting a new kernel, you can check its configuration usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig [root@localhost ~]# cp /etc/lxc/{default.conf,default.conf.bak} // 把lxc.network.link 改为前面配置的br0 [root@localhost ~]# vi /etc/lxc/default.conf [root@localhost ~]# cat /etc/lxc/default.conf lxc.net.0.type = veth lxc.net.0.link = br0 lxc.net.0.flags = up lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx
5、LXC常用命令
-
lxc-checkconfig
检查系统环境是否满足容器使用要求; -
lxc-create
创建lxc容器;
格式:lxc-create -n NAME -t TEMPLATE_NAME -
lxc-start
启动容器;
格式:lxc-start -n NAME -d -
lxc-info
查看容器相关的信息;
格式:lxc-info -n NAME -
lxc-console
附加至指定容器的控制台;
格式:lxc-console -n NAME -t NUMBER -
lxc-stop
停止容器; -
lxc-destory
删除处于停机状态的容器; -
lxc-snapshot
创建和恢复快照; -
退出容器方式:<Ctrl+a q>
二、doker
1、什么是docker
Docker是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 基于go语言开发并遵循了apache2.0协议开源。Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。
Docker容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。 容器更多的用于表示 软件的一个标准化单元。由于容器的标准化,因此它可以无视基础设施(Infrastructure)的差异,部署到任何一个地方。另外,Docker也为容器提供更强的业界的隔离兼容。
2、docker的由来
2010年dotCloud公司在旧金山成立,PAAS平台的服务供应商;2013年dotCloud更名为Docker股份有限公司(Docker,Inc)。Docker公司专注开源容器引擎的开发,他们的容器引擎产品就叫docker,基于go语言,并遵从Apache2.0协议。Docker是目前最火的LXC高级容器管理引擎。
3、docker的组成架构
Docker 客户端 - Client
Docker 服务器 - Docker daemon
Docker 镜像 - Image
Docker 仓库 - Registry
Docker 容器 - Container2、docker官方文档
-
-
Docker和LXC简介
2021-11-30 19:51:12一、Docker产生的背景 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司不得不面对的问题,特别是各种版本的迭代之后,不同版本... -
如何理解LXC与Docker之间的主要区别
2018-10-23 10:30:52如何理解LXC与Docker之间的主要区别 【编者的话】这篇翻译文章从两个部分来探讨LXC,LXC和Docker的容器托管,以及轻便的容器技术将取代虚拟技术的可能性。LXC有可能会改变我们如何运行和缩放应用程序。Dr.Rami ... -
lxc与docker的区别
2017-10-26 13:45:24而基于底层的内核特性的基础上,Docker在上层构建了一个更高层次的具备多个强大功能的工具集:可移植的跨机器部署。Docker定义了一个将应用打包的规范,而它的所有依赖都被封装到了一个简单对象里,它可 -
LXC与Docker之间的主要区别
2018-03-23 09:51:57编者的话:这篇翻译文章从两个部分来探讨LXC,LXC和Docker的容器托管,以及轻便的容器技术将取代虚拟技术的可能性。LXC有可能会改变我们如何运行和缩放应用程序。Dr.Rami Rosen 做过一个很棒的演示文稿,是关于LXC的... -
docker和LXC简介
2021-11-30 21:53:32文章目录1、什么是LXC2、什么是dockerdocker工作方式Docker产生的背景 1、什么是LXC LXC(LinuX Container)简称Linux的容器,是世界上第一个容器应用。它将容器技术做的更加易用了,把用到的容器功能做成一种工具,... -
acadock:LXC的Docker前端和监控工具
2021-06-10 13:05:16阿卡多克 简单 GUI 版本 1e^-3 -
linux离线安装docker依赖包
2019-10-22 09:04:30linux离线安装docker依赖包device-mapper-libs-1.02.117-12.el6.i686.rpm,device-mapper-libs-1.02.117-12.el6.x86_64.rpm,docker-io-1.7.1-2.el6.x86_64.rpm,epel-release-6-8.noarch.rpm,lua-alt-getopt-0.7.0-1.... -
CentOS6离线安装docker以及相关依赖包(不用升级内核)
2020-09-04 16:00:59CentOS6离线安装docker1.7,以及相关的依赖架包,包括docker-io-1.7.1-2.el6.x86_64.rpm、lxc-libs-1.0.11-1.el6.x86_64.rpm、lxc-1.0.11-1.el6.x86_64.rpm等以及device-mapper-1.02.117-12.el6_9.1.x86_64.rpm、... -
centos6离线安装docker相关依赖包 及 自动安装脚本
2018-06-09 00:08:24在centos6 x64位操作系统上安装。 离线安装docker 自动安装脚本 执行./install.sh rpm.list即可 -
linux上安装Docker(非常简单详细的安装)以及Docker的三要素和基本使用
2022-02-18 16:59:39一、Docker的概念 Docker是近年来新兴的虚拟化工具,它可以和虚拟机一样实现资源和系统环境的隔离。 -
Proxmox 的 LXC上跑 Docker
2020-05-13 15:06:24Proxmox VE 6.1 基于 LXC 容器环境运行 Docker,配置步骤: 1. LXC 容器不要开启特权模式,否则登陆可能会出现问题(测试时一直登陆失败);...保存配置后,重启 LXC 容器化虚拟机,就能在内部安装和使用 -
docker容器技术基础入门及LXC的配置
2021-12-01 10:36:57docker容器技术基础入门及LXC... 什么是LXC3.1 LXC的安装部署3.2 安装LXC以及其依赖包3.3开启服务3.4 创建虚拟机3.5 创建LXC主机3.6 启动主机3.7 查看lxc主机的一些系统信息3.8 查看主机的运行状态3.9 停止lxc主机3.10 -
如何转换docker image到lxc
2022-03-27 11:47:43lxc和docker都类似,但实际应用场合不一样 docker,更强调的是以应用为中心,打包的镜像也是应用程序运行环境,不一定非要整个操作系统,而且docker起来基本上...lxc镜像可以从零去制作,这个留待后面研究,LXC安装完. -
Ubunto安装docker的教程
2022-02-11 10:08:372.Ubuntu安装docker 至少是14.04LTS 2.安装的步骤 1.为了让Docker使用aufs存储,推荐安装linux-image-extra软件包。 $ sudo apt-get install -y linux-image-extra-$(uname -r) 2.添加镜像源 首先需要安装apt-... -
docker1.7.1及所需依赖包-适用于centos/Redhat6 离线安装docker
2018-09-03 17:08:28rpm -ivh lxc-libs-1.0.9-1.el6.x86_64.rpm rpm -ivh lua-alt-getopt-0.7.0-1.el6.noarch.rpm rpm -ivh lua-filesystem-1.4.2-1.el6.x86_64.rpm rpm -ivh lua-lxc-1.0.9-1.el6.x86_64.rpm ...----------安装成功 -
Linux下安装Docker
2021-01-07 20:11:021.CentOS Docker 安装 Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 2.前提条件 目前,CentOS 仅发行版本中的内核支持 Docker。 Docker 运行在 CentOS 7 上,要求系统为64位... -
在redhat6.5离线安装docker1.7所需要rpm包
2022-04-18 13:47:44在redhat6.5离线安装docker1.7所需要rpm包 -
虚拟机下CentOS7安装Docker
2020-03-22 16:01:47Docker docker是一个开源的应用容器引擎,开发者可以打包...VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓库,然后再安装应用; Container(Docker容器),在宿主机器... -
Moving from LXC to Docker for
2014-07-23 18:37:09Michael Neale是CloudBees的创始人之一,同时是云架构师。CloudBees提供了一个加快网络和移动应用开发、部署的交付平台,积极鼓励员工进行应用创新...Michael Neale不仅拥有云计算、JVM、Docker等技术,同时积极参与... -
容器技术对比(Docker/LXC/LXD/Multipass)
2021-11-22 22:40:21Docker、LXC、LXD、Multipass四项容器化技术对比 -
Linux虚拟化和容器:Virtualbox,KVM,Xen,LXC和Docker
2019-05-09 09:30:15https://www.davidokwii.com/linux-virtualization-and-containers-virtualbox-kvm-xen-lxc-and-docker/ 由于需要在不增加计算成本的情况下设置隔离的应用程序和服务器环境,虚拟化变得非常流行。 虚拟机和管理程序... -
docker离线安装rpm
2020-11-13 17:23:33lxc-libs-1.0.11-1.el6.x86_64.rpm lxc-1.0.11-1.el6.x86_64.rpm lua-lxc-1.0.11-1.el6.x86_64.rpm lua-filesystem-1.4.2-1.el6.x86_64.rpm lua-alt-getopt-0.7.0-1.el6.noarch.rpm libcgroup-0.40.rc1-26.el6.x86_... -
服务器安装docker-如何在Linux服务器上安装Docker
2021-08-10 03:23:28安装一个docker,然后自己用命令行启动另外一个docker下面是一个启动命令:nohupdockerdaemon--selinux-enabled=false--log-driver=journald--storage-driver=overlay\-Hunix:///var/run/docker-bootstrap.sock-p/... -
在redhat6.5上离线安装docker1.7
2022-04-18 16:05:24官方说明 提前条件: We currently only provide packages for RHEL on s390x (IBM Z). Other architectures are not yet supported... Refer to theInstall Docker Engine on CentOSpage for details. 操作系统要..