目录

一、什么是docker

容器化技术的主要优势是什么_docker容器化技术_容器化技术有哪些

Docker是一个开源的容器化平台,可以让开发人员和系统管理员通过容器的方法来建立、打包、分发和运行应用程序。

Docker最初由公司称作dotCloud(如今已改名为Docker)的一群工程师于2013年创建。她们致力解决传统虚拟化技术的一些痛点,如资源占用、启动时间长等问题。她们基于Linux内核的cgroups和命名空间技术开发出了Docker。

Docker的设计理念是使用容器来封装应用程序及其依赖项,使其才能在任何环境中都能一致地运行。通过容器化,开发人员可以将应用程序及其依赖项打包到一个独立的、可移植的容器中,包括操作系统、库、软件工具等。这样,就才能确保应用程序在不同环境中具有相同的行为。

Docker的出现解决了开发、测试和布署过程中的许多问题docker容器化技术,降低了环境配置的复杂性、提高了应用的可移植性和可扩充性。它极大地简化了应用程序的打包和分发过程,并通过容器的方法实现了更高效的资源借助。

随着时间的推移,Docker显得越来越流行,成为了容器化技术的标准和行业领导者。它对于微服务构架、持续集成和布署等现代应用开发和交付模式具有重要的意义。

二、docker的缺陷

虽然Docker在容器化领域取得了巨大的成功和普及,但它也有一些缺点和限制:

性能耗损:与直接在主机上运行应用程序相比,Docker容器中的应用程序可能会有一些性能耗损。这是由于容器化引入了额外的隔离和资源管理层。

安全性风险:假如容器配置不当或容器内部存在漏洞,容器化环境可能会面临一些安全风险。功击者可能会借助容器逃逸、容器间通讯等漏洞进行功击。

复杂性和学习曲线:使用Docker涉及到一些新的概念和工具,对于初学者来说可能须要一定的学习曲线。据悉,复杂的容器集群和编排工具(如Kubernetes)的使用也须要一定的技术把握。

资源消耗:每位容器都须要一定的资源(如显存、磁盘空间),在大规模布署或资源有限的环境中,这可能会造成资源紧张。

持久化储存:Docker容器默认情况下是设计为无状态的,容器停止后数据将会遗失。为了实现持久化储存,须要额外的配置和管理。

虽然存在这种缺点,Docker依然是十分强悍和受欢迎的容器化平台,可以在许多不同的应用场景中提供便利和效益。对于大多数用户来说,Docker的益处常常超过了其缺点。

三、简单的操作一、首先配置一台虚拟机

容器化技术的主要优势是什么_容器化技术有哪些_docker容器化技术

二、安装Docker-CE一、安装utils

yum install yum-utils -y

二、将Docker的软件源添加到CentOS的yum库房中。这样可以通过yum命令来安装、更新和管理Docker相关的软件包。

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

三、将替换为/docker-ce。这个命令的目的是将Docker软件源的地址替换为阿里云镜像站点,以提升下载速率和稳定性。

sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

四、安装docker-ce

yum install docker-ce -y

docker容器化技术_容器化技术的主要优势是什么_容器化技术有哪些

五、启用并立刻启动Docker服务。这个命令会将Docker服务添加到系统启动项,并立刻启动Docker服务,便于可以立刻开始使用Docker。

systemctl enable --now docker

六、显示当前安装的Docker版本信息,包括Docker顾客端和服务端的版本号、构建日期等详尽信息。

docker version

容器化技术的主要优势是什么_容器化技术有哪些_docker容器化技术

七、创建一个文件

vim /etc/docker/daemon.json

八、在文件中添加下方的内容

配置Docker使用阿里云的镜像站点作为镜像加速器。镜像加速器可以推动Docker镜像的下载速率,增强容器的创建和布署效率。配置完成后,Docker将手动使用阿里云的镜像站点来加速下载。

{
      "registry-mirrors": ["https://3laho3y3.mirror.aliyuncs.com"]
}

九、启动docker

docker容器化技术_容器化技术有哪些_容器化技术的主要优势是什么

systemctl restart docker

三、docker的基本使用一、在库房中查找镜像

docker search centos

二、下载镜像

docker pull centos

容器化技术有哪些_容器化技术的主要优势是什么_docker容器化技术

三、查看本地docker镜像

docker image list

四、调用容器内的命令

在一个基于CentOS镜像的容器中运行命令cat/etc/hosts。

具体解释

为此docker容器化技术,这个命令的目的是启动一个基于CentOS镜像的容器,并在容器内部执行cat/etc/hosts命令,以查看容器内/etc/hosts文件的内容。

docker run -i -t centos cat /etc/hosts

docker容器化技术_容器化技术的主要优势是什么_容器化技术有哪些

五、进入容器

在一个基于CentOS镜像的容器中启动一个交互式的Bashshell。

具体解释如下:

通过执行这个命令,Docker会创建一个基于CentOS镜像的容器,并切换到容器的交互式的Bashshell终端,使用户可以与容器进行交互。这样可以在容器内部执行命令、查看文件、安装软件包等操作。当退出Shell终端时,容器也将停止运行。

若果在上图显示的界面输入exit的话,则直接退出容器

六、容器正常运行

假如想让容器正常运行的话,在输入dockerrun-itcentos/bin/bash后

按住ctrl键不要松手,在摁p键和q键 则会出现

一个伪终端

摁下回车,则成功的锁定容器并在容器内执行一些命令及操作,退出并且可以使容器正常运行

容器化技术有哪些_docker容器化技术_容器化技术的主要优势是什么

七、定义显存大小

在一个基于CentOS镜像的容器中以交互模式启动一个Bashshell,但是限制容器的显存使用量为300MB。

docker run -it -m 300M --memory-swap 300M  centos /bin/bash

八、查看正在运行的容器

docker ps

显示up的都是正在启动

容器化技术的主要优势是什么_容器化技术有哪些_docker容器化技术

九、确定被锁定的容器信息

docker stats 输入显示ID的前四个字符

容器化技术有哪些_容器化技术的主要优势是什么_docker容器化技术

十、限制容器只能使用1个CPU

docker run -it -m="500m" --cpus="1" centos /bin/bash

十一、限制容器在CPU上第一第二核心上使用资源

docker run -it --cpuset-cpus="0,1" centos /bin/bash

十二、限制容器使用c盘I/O

docker run -it --device-write-bps /dev/sda:30MB centos /bin/bash

十三、查看所有的容器包括早已退出的

docker ps -a

状态为UP的则正启动的,其他则为未启动

容器化技术的主要优势是什么_docker容器化技术_容器化技术有哪些

十四、停止和启动容器

用第一个容器举例,如今是正在启动的状态,关掉容器

docker kill 7e92

查看状态

docker ps -a

成功关掉容器

docker容器化技术_容器化技术的主要优势是什么_容器化技术有哪些

如要开启则输入

docker start 7e92

成功启动

容器化技术有哪些_docker容器化技术_容器化技术的主要优势是什么

十五、删除以退出的容器

以23f9为例如今是正在关掉和退出的状态linux apache 虚拟主机,输入命令

 docker rm 23f9

查看状态

docker ps -a

成功删掉

容器化技术有哪些_容器化技术的主要优势是什么_docker容器化技术

十六、删除已退出的容器及正在运行的容器

docker rm $(docker ps -a  | awk '{print $1}' | sed 1d) -f

十七、为容器命名为snowmpy

docker run -itd --name snowmpy centos /bin/bash

成功创建一个名为snowmpy的容器

容器化技术有哪些_docker容器化技术_容器化技术的主要优势是什么

十八、输入容器信息并导入容器

docker logs snowmpy

docker export snowmpy > mpy.tar

ls -l mpy.tar

容器化技术的主要优势是什么_docker容器化技术_容器化技术有哪些

十九、导入容器

catmpy.tar|dockerimport-mpy:test的意思是通过管线(|)将文件mpy.tar的内容导出到Docker中,并创建一个名为mpy:test的镜像。

cat mpy.tar | docker import - mpy:test

列举本地的镜像列表

docker image list

二十、指定docker的其他各类参数

docker run -ti --name gzliu -h server --dns-search=1000cc.net --dns=8.8.8.8 --dns=8.8.4.4 centos:latest /bin/bash

容器化技术有哪些_docker容器化技术_容器化技术的主要优势是什么

二十一、更改镜像名和标签

列举本地的镜像列表

docker images

给一个已有的镜像打上新的标签。

通过执行这个命令,Docker会在已有镜像的基础上创建一个新的镜像标签mpy:ok,两个标签实际上指向同一个镜像。这样可以便捷地给镜像创建不同的标签,用于版本管理或其他需求。新的标签可以用于辨识和使用相同镜像的不同版本或变体。

docker tag mpy:test mpy:ok

docker images

二十二、删除镜像

docker rmi mpy:test

docker容器化技术_容器化技术有哪些_容器化技术的主要优势是什么

二十三、确定容器根目录及文件系统在本地系统上挂载

docker run -d -h websrv --name websrv -p 80:80  nginx

容器化技术的主要优势是什么_容器化技术有哪些_docker容器化技术

二十四、进入容器并添加内容

dockerexec-itwebsrv/bin/bash:以交互式的形式步入名为websrv的Docker容器,并以bash作为默认的shell。

echo”helloworld”>/usr/share/nginx/html/index.html:将字符串”helloworld”写入到文件/usr/share/nginx/html/index.html中。

换句话说,这个命令的目的是在容器中的/nginx/html目录下创建一个名为index.html的文件,并在其中写入字符串”helloworld”。

docker exec -it websrv /bin/bash
root@websrv:/# echo "hello world" > /usr/share/nginx/html/index.html

输入exit退出中国linux操作系统,并dockerps查看,显示成功挂载

容器化技术的主要优势是什么_docker容器化技术_容器化技术有哪些

该命令用于获取有关名为websrv的Docker容器的详尽信息。它返回一个JSON格式的输出,其中包含有关容器的各类属性,如IP地址、挂载点、网络配置等。

docker inspect websrv

输入后再显示内容中找到

并复制第一行内容路径并输入

cd //var/lib/docker/overlay2/42ad29142a56ec09fc588eac31069f5652fc4926c5f2c7052cafc94fef0fc0a9/merged/usr/share/nginx/html

是容器的文件系统路径,其中包含了容器内部的文件和目录。这条命令的目的是将当前的工作目录切换到容器内的/nginx/html目录,便于进行操作。

二十五、开启一个新容器,并在容器中安装ssh服务

docker run --name snowchuai -h snow -it centos /bin/bash

这段命令是拿来在Docker中运行一个名为”snowchuai”的容器,容器的主机名设置为”snow”,但是以交互模式运行CentOS镜像,并启动一个bashshell。

具体说明如下:

docker容器化技术_容器化技术的主要优势是什么_容器化技术有哪些

这个命令的作用是创建一个CentOS容器并步入到容器内部的bashshell中进行后续操作。

二十六、更改源并安装ssh

这个源是有问题的,须要修改两个源所以须要步入

cd /etc/yum.repos.d/

首先步入

vi CentOS-Linux-AppStream.repo

将上面内容修改为

# CentOS-Linux-AppStream.repo
#
# The mirrorlist system uses the connecting IP address of the client and the
# update status of each mirror to pick current mirrors that are geographically
# close to the client.  You should use this for CentOS updates unless you are
# manually picking other mirrors.
#
# If the mirrorlist does not work for you, you can try the commented out
# baseurl line instead.
[appstream]
name=CentOS Linux $releasever - AppStream
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8-stream/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

步入第二个

vi CentOS-Linux-BaseOS.repo 

内容修改为

# CentOS-Linux-BaseOS.repo
#
# The mirrorlist system uses the connecting IP address of the client and the
# update status of each mirror to pick current mirrors that are geographically
# close to the client.  You should use this for CentOS updates unless you are
# manually picking other mirrors.
#
# If the mirrorlist does not work for you, you can try the commented out
# baseurl line instead.
[baseos]
name=CentOS Linux $releasever - BaseOS
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/8-stream/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

修改后输入安装命令

yum install openssh openssh-server passwd -y

成功安装

docker容器化技术_容器化技术的主要优势是什么_容器化技术有哪些

二十七、在容器中为sshd生成ssh所需的主机密码

ssh-keygen-trsa-f/etc/ssh/ssh_host_rsa_key-q-N''

ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -q -N ''

ssh-keygen-tecdsa-f/etc/ssh/ssh_host_ecdsa_key-q-N''

ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -q -N ''

ssh-keygen-ted25519-f/etc/ssh/ssh_host_ed25519_key-q-N''

这种命令将生成三对不同类型的SSH秘钥对,用于在SSH通讯中进行身分验证和加密。这种秘钥对分别是RSA、ECDSA和Ed25519类型的秘钥对。生成的私钥和公钥将保存在指定的文件中,公钥的密码被设置为空。

ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -q -N ''

二十八、容器的root密码

passwd

设置密码后,退出容器exit

二十九、获取dockerID和docker名

dockerid=$(docker ps -a | awk '{print $1}' | sed 1d) && echo $dockerid

容器化技术的主要优势是什么_容器化技术有哪些_docker容器化技术

三十、生成docker镜像

输入命令登陆回容器

docker run -it -m 300M --memory-swap 300M  centos /bin/bash

查看所有容器

docker ps -a

找到设置好的snowmpy

docker容器化技术_容器化技术有哪些_容器化技术的主要优势是什么

输入生成docker镜像的命令将中间改为ID

docker commit -m 'centos-ssh' 5b0eca08b488  mpy/centos-sshd

docker image list

查看结果

容器化技术有哪些_docker容器化技术_容器化技术的主要优势是什么

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复