docker容器-[基于centos8]

1、docker基础入门

1.1 docker版本分两种

  • docker-ee 商业版-收费
  • docker-ce 社区版-免费[只能用于centos]

1.2 虚拟化分为两类

  • 主机虚拟化:
    全虚拟化:硬件>虚拟化产品>虚拟机
    半虚拟化:硬件>系统>虚拟化产品>虚拟机
  • 容器虚拟化:硬件>系统>虚拟机
  • 容器主要用来隔离与主机上的:
    ①UTS(主机名和域名)
    ②mount文件挂载
    ③IPC共享文件
    ④PID进程树
    ⑤user用户
    ⑥network(ip)
  • 命名空间(Namespaces):Linux利用该技术进行隔离,每个容器都有自己独特的命名空间。
  • 控制住(CGROUP):是Linux中的一个特性,可以对容器内的内存、CPU、磁盘IO资源限制;
    提供的功能有:
    ① 资源限制(Resource Limitting)组可以设置为不超过设定的内存限制。比如:内存子系统可以为进行组设定一个内存使用上限,一旦进程组使用的内存达到限额再申请内存,就会发出Out of Memory警告;
    ②优先级(Prioritization)通过优先级让一些组优先得到更多的CPU等资源;
    ③资源审计(Accounting)用来统计系统实际上把多少资源用到合适的目的上,可以使用cpuacct子系统记录某个进程组使用的CPU时间;
    ④隔离(Isolation)为组隔离命名空间,这样一个组不会看到另一个组的进程、网络连接和文件系统;
    ⑤控制(Control)挂起、恢复和重启等操作。
    【/sys/fs/cgroup/memory/ 可以看到docker组的限制项】

1.3 安装docker

[root@king ~]# cd /etc/yum.repos.d/
//下载docker源,并改名为docker-ce.repo
curl -o docker-ce.repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
//因为下载国外的源,需要全部替换('s@..@..@g')改为国内的docker源(清华的源)
sed -i 's@https://download.docker.com@https://mirrors.tuna.tsinghua.edu.cn/docker-ce@g' docker-ce.repo
接着👇
配置网络源:
使用阿里云网络源网站https://developer.aliyun.com/mirror/
//安装网络源时,要把yum本地源移走,才可安装不冲突
[root@king yum.repos.d]# mv CentOS-Linux-* /tmp
[root@king yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
[root@king yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@king yum.repos.d]# yum clean all
28 files removed
[root@king yum.repos.d]# yum makecache
//docker只能在centos上使用(都是免费的)
[root@king yum.repos.d]# yum -y install docker-ce
//安装完,可以查看docker组的限制项有哪些
[root@king ~]# cd /sys/fs/cgroup/memory/
[root@king memory]# ls

1.4 LXC

LXC是管理Linux的容器,使用它需要配置复杂的内核系统,比较繁琐,即后出现docker,可以说docker是LXC的增强版。

1.5 docker概念

①docker是容器技术的一个前端工具。
②docker的工作方式:一个容器只运行一个进程。
③容器分为可写层和可读层,如果要输入数据不能直接在容器中输入,必须先挂载容器再在可写层上输入内容。在容器的使用中,我们应以有状态(有数据)为耻,以无状态(无数据)为荣。删除容器时,可写层内容也会删除。
④docker自家出了libcontainer,如今基本已经都使用libcontainer容器。

2、docker基础用法

2.1 docker中容器有

LXC  libcontainer  runC
docker提供了一个专门容纳容器镜像的站点:https://hub.docker.com

2.2 安装docker之后的安装加速器

docker-ce配置文件:/etc/docker/daemon.json ——此文件默认不存在,需要配置

[root@king ~]# mkdir /etc/docker
[root@king ~]# ls /etc/d
dbus-1/   default/   depmod.d/    dhcp/    dnf/      docker/    dracut.conf    dracut.conf.d/ 
[root@king ~]# ls /etc/docker/
[root@king ~]# cd /etc/docker/
//加速器(镜像源)
[root@king docker]# vim daemon.json
{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]
}
[root@king docker]# systemctl restart docker
//查看系统级详细信息
[root@king docker]# docker info
 Registry Mirrors:
  https://docker.mirrors.ustc.edu.cn/
 Live Restore Enabled: false
//也可加入多个加速器镜像,用逗号和双引号隔开
[root@king docker]# vim daemon.json
{
            "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/","https://registry.docker-cn.com"]
}
[root@king docker]# systemctl daemon-reload   //重新加载程序
[root@king docker]# systemctl restart docker  //重启docker
[root@king docker]# docker info
 Registry Mirrors:
  https://docker.mirrors.ustc.edu.cn/
  https://registry.docker-cn.com/
 Live Restore Enabled: false

中国镜像加速器:https://registry.docker-cn.com
中国科技大学加速器:https://docker.mirrors.ustc.edu.cn/
阿里云的加速器镜像获取需要先注册才可使用。

2.3 docker的常用命令

适用于镜像命令:
docker search +镜像名:在Docker Hub中搜索镜像,如[root@king ~]# docker search httpd
docker pull +镜像名:把镜像从Docker Hub拉下来用,如果没有写镜像版本,默认拉最新版本
docker images:查看本地所有已有的镜像
[root@king ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest 73b8cfec1155 2 weeks ago 138MB

docker image rm +镜像名(或镜像ID):删除某一个或多个镜像
适用于容器的命令:
docker create +要创建的容器镜像名:创建某个容器
[root@king ~]# docker create httpd
2db0a6b53e48c656868d1c5aaf6f11a45a4e63989026b7c659b4f5debbedc7c8

docker ps -a:查看所有的容器状态
docker ps:只能查看已开启的容器
[root@king ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2db0a6b53e48 httpd “httpd-foreground” 4 minutes ago Created focused_goldstine

docker start +容器id(或容器名):开启一个或多个容器运行
[root@king ~]# docker start 2db0a6b53e48
2db0a6b53e48
[root@king ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2db0a6b53e48 httpd “httpd-foreground” 30 minutes ago Up 6 seconds 80/tcp focused_goldstine

docker stop +容器id(或容器名):停止一个或多个在运行的容器
docker kill +容器id(或容器名):杀死(=停止)一个或多个在运行的容器(容器只是被停止,同上条命令作用相同)
docker restart +容器id(或容器名):重启某个容器
docker rm +容器id(或容器名):删除一个容器或多个容器(但必须先停止运行容器)
docker rm -f +容器id(或容器名):强制删除容器
[root@king ~]# docker rm 2db0a6b53e48
Error(报错) response from daemon: You cannot remove a running container 2db0a6b53e48c656868d1c5aaf6f11a45a4e63989026b7c659b4f5debbedc7c8. Stop the container before attempting removal or force remove//移除容器之前先停止容器运行
[root@king ~]# docker rm -f 2db0a6b53e48
2db0a6b53e48
[root@king ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

docker run +镜像名:如果本地没有该镜像,它会从网络直接拉取镜像下来然后创建成容器直接运行
如果ctrl+c结束运行,容器的状态就会也停止。
在这里插入图片描述
docker info:查看所有容器的详细信息
docker inspect +容器id:查看某个容器的详细信息
docker attach +容器id:连接到一个已经运行的容器,如果按crtl+c结束,容器状态也会随之停止
docker exec -it +容器id +指定登录shell:在正在运行的容器中运行命令,用终端的模式给指定shell运行
在其中运行命令就算exit退出,容器也不会停止运行。
在这里插入图片描述
docker logs +容器id:查看容器日志

3、docker镜像制作生成

1、先要拉取个镜像到本地

[root@king ~]# docker pull busybox  
Using default tag: latest
latest: Pulling from library/busybox
b71f96345d44: Pull complete 
Digest: sha256:0f354ec1728d9ff32edcd7d1b8bbdfc798277ad36120dc3dc683be44524c8b60
Status: Downloaded newer image for busybox:latest
docker.io/library/busybox:latest

2、把镜像运行成容器并修改它的名字和指定登录shell并进行内容修改,例如
在这里插入图片描述
3、在创建镜像时,不能退出终端,需要复制另起一个窗口执行命令,例如

docker commit +[参数]命令用法
-a、 ----作者(例如,“John Hannibal Smithhannibal@a-team.com
-c、 ------更改列表将Dockerfile指令应用于创建的镜像
-p、 ------提交期间暂停容器(默认为true)
-m、 -------消息字符串提交消息

在这里插入图片描述
4、创建完镜像,此时要在Docker Hub网站中创建自己的仓库,名字要和终端上创建的容器名一样,如b1
在这里插入图片描述
5、创建完仓库后,要在本地终端登录docker Hub才能在本地把创建镜像推到网站中创建的仓库中去,如
在这里插入图片描述
在这里插入图片描述
6、测试使用新生成的镜像创建容器
[新生成的镜像中包含之前所写内容]
在这里插入图片描述
7、容器默认情况下启动的进程是sh,则需要启动的是http进程,所以要重新生成镜像并上传…在这里插入图片描述[指定登录sh;-f 不使用守护进程;-h 指定家目录]在这里插入图片描述
上传镜像:[root@king ~]# docker push tangq123456/b1:v0.1.2
在这里插入图片描述
8、再使用新生成的镜像,运行生成容器

[root@king ~]# docker run --name w2 -d tangq123456/b1:v0.1.2    //(-d 打印id)
22cc8e74f8dfc4224886e3320914718e8940ac55f9b2083a20f4d71ad588f3ec
[root@king ~]# curl 172.17.0.2    //使用curl访问IP,查看是否访问网页
Hello summer~~    //成功访问
[root@king ~]# 

4、docker镜像的导入/导出

1、先导出镜像

docker save -o myimages.gz tangq123456/b1

2、将打包压缩的A主机上的镜像,使用scp拷贝到B主机上
3、再另一台主机上进行导入镜像文件

docker load -i myimages.gz
Docker是一种开源的容器化平台,它可以帮助开发者将应用程序和服务以容器的形式进行打包、分发和部署。而Gluster是一个分布式存储系统,它可以将多个服务器的存储空间整合在一起,形成一个统一的、可扩展的存储池。 CentOS是一种基于Red Hat Enterprise Linux(RHEL)的开源操作系统,它提供了稳定性和安全性,并且具备广泛的应用支持。 Dockerfile是用于构建Docker镜像的脚本文件,它可以定义容器的运行环境、设置启动命令等。 那么,docker-gluster-centos Dockerfile是指在CentOS系统上构建一个包含Gluster分布式存储系统的Docker镜像的脚本文件。 在docker-gluster-centos Dockerfile中,我们可以使用CentOS的官方镜像作为基础镜像,并在此基础上安装和配置Gluster分布式存储系统。可以通过使用适当的软件包管理工具(如yum)来安装Gluster软件包和依赖项。然后,可以使用Dockerfile中的指令来启动和配置Gluster节点、创建Gluster卷以及设置其他必要的参数和选项。 通过构建docker-gluster-centos Docker镜像,我们可以在任何支持Docker的环境中快速部署和运行Gluster分布式存储系统,而无需手动安装和配置。这样可以大大简化Gluster的部署过程,提高运维效率,并且能够实现更加轻量级、可移植和可扩展的存储解决方案。 总而言之,docker-gluster-centos Dockerfile是用于在CentOS系统上构建包含Gluster分布式存储系统的Docker镜像的脚本文件,使得Gluster的部署和运行变得更加简单、可靠和可扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值