泉缘泉 发表于 2024-8-7 12:43:54

Docker基本管理

        随着计算机近几十年的蓬勃发展,产生了大量优秀系统和软件。软件开辟职员可以自由选择名种软件应用。但同时带来的问题就是必要维护一个非常庞大的开辟、测试和生产环境。 面临这种环境,Docker 容器技术横空出世,提供了简朴、灵活、高效的办理方案,不必要过多地改变现有的利用习惯,就可以和已有的工具,如 OpenStack 等配合利用。因此,掌握 Docker 相关技术也是途经云计算的必经之路。
        本章将依次介绍 Docker 的三大核心概念--镜像、容器、堆栈,以及安装 Docker 与介绍围绕镜像和容器的具体操纵。
一、Docker概述

        因为 Docker 轻便、快速的特性,可以使应用到达快速迭代的目的。每次小的变更,马上就可以看到效果,而不用将若于个小变更积攒到一定程度再变更。每次变更一小部分实在是一种非常安全的方式,在开辟环境中能够快速提高工作效率。
        Docker 容器能够帮助开辟职员、系统管理员、质量管理和版本控制工程师在一个生产环节中一起协同工作。订定一套容器标准能够使系统管理员更改容器的时间,程序员不必要关心容器的变革,而更专注自己的应用程序代码。从而隔离开了开辟和管理,简化了开辟和部署的本钱。
 https://i-blog.csdnimg.cn/direct/62b3f3d6dd33403cb56ac5285adf7424.png
1.1什么是Docker



[*]是一种轻量级的“假造机”
[*]在Linux容器里运行应用的开源工具
        如果要方便的创建运行在云平台上的应用,必须要脱离底层的硬件,同时还必要任何时 间地点可获取这些资源,这正是 Docker 所能提供的。Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。通过这种容器打包应用程序,意味着简化了重新部署、调试这些琐碎的重复工作,极大的提高了工作效率。
1.2Docker的优势

        Docker 容器运行速度很快,启动和制止可以在秒级实现,比传统假造秘密快很多;Docker 核心办理的问题是利用容器来实现雷同假造机的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。因此,Docker 容器除了运行其中的应用之外,基本不消耗额外的系统资源,在包管应用性能的同时,又减小了系统开销,使得一台主机上同时运行数千个 Docker 容器成为大概。Docker 操纵方便,可以通过 Dockerfile 设置文件支持灵活的自动化创建和部署。表 1-1将 Docker容器技术与传统假造机的特性进行了比力。
https://i-blog.csdnimg.cn/direct/d623d376ff624da8b73855400236015a.png
        Docker之所以拥有浩繁优势,与操纵系统假造化自身的特点是分不开的。传统假造机必要有额外的假造机管理程序和假造机操纵系统层,而 Docker 容器则是直接在操纵系统层面之上实现的假造化。图 1.2 是 Docker 与传统假造机架构。
https://i-blog.csdnimg.cn/direct/32711c407b6645538220cff0f7aafcbb.png
1.3镜像

        镜像、容器、堆栈是 Docker 的三大核心概念。其中 Docker 的镜像是创建容器的基础,雷同假造机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。例如:一个镜像可以是一个完整的 Cent OS 操纵系统环境,称为一个 CentOS 镜像;也可以是一个安装了 MSQL 的应用程序,称之为一个 MySQL 镜像等等。
        Docker 提供了简朴的机制来创建和更新现有的镜像,用户也可以从网上下载已经创建好的镜像直接利用。
1.4容器

        Docker 的容器是从镜像创建的运行实例,它可以被启动、制止和删除。所创建的每一个容器都是相互隔离、互不可见,以包管安全性的平台。可以将容器看作是一个浅易版的 Linux 环境,Docker 利用容器来运行和隔离应用。
1.5堆栈

        Docker 堆栈是用来集中保存镜像的地方,当创建了自己的镜像之后,可以利用 push 命令将它上传到公有堆栈(Public)大概私有堆栈(Private)。当下次要在另外一台机器上利用这个镜像时,只需从堆栈获取。
        堆栈注册服务器(Registry)是存放堆栈的地方,其中包含了多个堆栈。每个堆栈集中存放某一类镜像,而且利用不同的标签(tag)来区分它们。现在最大的公共堆栈是docker Hub,存放了数量庞大的镜像供用户下载利用。
二、安装 Docker

        Docker 支持在主流的操纵系统平台上进行利用,包括 Windows 系统、Linux 系统、以及 MacOS 系统等。现在最新的 RHEL、Cent OS 以及 Ubuntu 系统官方软件源中都已经默认自带了Docker 包,可直接安装利用,也可以用 Docker 自己的 YUM 源进行设置。
        Cent OS 系统下安装 Docker 可以有两种方式:一种是利用 CURL 获得 Docker 的安装脚本进行安装,另一种是利用 YUM 堆栈来安装 Docker。
        注意:现在 Docker 只能支持 64 位系统。
2.1安装最新版本Docker依赖版本环境

#本安装方式使用阿里的软件仓库
#Step1: 添加软件源信息
yum -y install wget
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache #Step2: 使用本地yum源安装必要的一些系统工具
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #Step 3: 安装Docker-CE
yum clean all
yum makecache fast
yum repolist
yum -y install docker-ce ##Step 4:添加国内镜像站
mkdir /etc/docker/
cat>/etc/docker/daemon.json<<EOF
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF 备注:
也可以将国内的镜像站改为阿里镜像加快器,Docker镜像加快地点可以在阿里上申请
阿里云登录 - 接待登录阿里云,安全稳定的云计算服务平台
#Step 5: 开启Docker服务
systemctl restart docker
systemctl enable docker
docker version

cat>> /etc/sysctl.conf <<EOF
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl -p 三、Docker镜像操纵

1.搜索镜像

# docker search lamp 2.获取镜像

注意:可选择星级较高的镜像
# docker pull mattrayner/lamp 3.查看镜像信息

# docker images 查看镜像的具体信息
# docker inspect c15 修改镜像标签(老名字+新名字)
# docker tag mattrayner/lamp lamp:lamp
# docker images 注意:
修改标签时可以只设置新的镜像名称,不要标签TAG,此时的标签会利用默认的latest当做标署名
4.删除镜像

用镜像名删除
# docker rmi lamp:lamp 注意:如果标署名为latest,删除时只用镜像名马上
用ID删除
# docker rmi c15 注意:
用ID删除时,不能有同ID的镜像,好比修改镜像标签而天生的新的镜像,该镜像的ID和原始镜像是雷同的,此时不能用ID删除。
5.存出镜像和载入镜像

# docker save -o lamp mattrayner/lamp
# docker rmi mattrayner/lamp
# docker load<lamp 6.上传镜像

# docker tag mattrayner/lamp 58wangjunqing/lamp:lamp 注意:
要想将自己的镜像上传到Docker,必要修改镜像名字,名字的前缀要利用Docker账号
# docker login
输入账号和密码后即可登录成功

# docker push 58wangjunqing/lamp:lamp

# docker search 58wangjunqing 备注:注册Docker账号,登录网址https://hub.docker.com/
https://i-blog.csdnimg.cn/direct/f8e0bfdc1d02475a98d19f37392e06bf.png
四、Docker容器操纵

1.容器的创建与启动

# docker create -it mattrayner/lamp /bin/bash 注意:
-i:让容器的输入保持打开状态
-t:让Docker分配一个伪终端
-d:以守卫进程的方式运行该容器
此命令只是把容器创建了出来,并没有运行
# docker ps -a 2.容器的运行

# docker start 5a

在创建容器时直接启动容器
# docker run centos:7 /usr/bin/bash -c "ls /root"
注意:此命令只是用该容器执行了一下ls命令,随后此容器就关闭了

在启动容器时持续在后台运行
# docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"

# docker run -dit centos:7 /bin/bash 3.容器的制止

# docker stop b18 4.进入容器

# docker exec -it 03f /bin/bash 退出
# exit 5.容器导出

# docker export 03f >centos7 6.容器导入天生镜像

# docker import centos7 centos7:test
# docker images 7.容器删除

# docker rm 7f 删除全部容器
docker rm -f $(docker ps -a | awk '{print $1}') 8.端口映射

# docker pull httpd (1)随机映射端口

# docker run -d -P httpd
# docker ps -a (2)指定映射端口

# docker run -d -p 49280:80 httpd
# docker ps -a 备注:
49280:是映射到外部的端口,这个端口范围通常是从32768到61000
80:是容器的端口
备注:
在开启防火墙的环境下,创建容器时如果指定了端口映射,转发规则会自动的添加到docker主机的防火墙策略中,这样,外部主机就可以通过docker主机的ip地点+容器对外映射的端口访问容器的服务,这样就包管了docker主机的安全性
如果要关闭防火墙,会提示无法创建iptables策略,重启一下docker进程即可
9.容器互联

(1)创建源容器

# docker run -dit --name web01 centos:7 (2)创建接收容器

# docker run -dit --name web02 --link web01:web01 centos:7 备注:
 --link web1:web1
冒号前的web1,是第一个必要链接的容器的名字
冒号后的web1,是链接到第二个容器后,为第一个容器起的别名
(3)测试容器互联

# docker exec -it web02 /bin/bash
# cat /etc/hosts
127.0.0.1        localhost
::1        localhost ip6-localhost ip6-loopback
fe00::0        ip6-localnet
ff00::0        ip6-mcastprefix
ff02::1        ip6-allnodes
ff02::2        ip6-allrouters
172.17.0.2        web01 36411a49ce54
172.17.0.3        71591dd4a58e
# ping web01 五、Docker的数据管理

1.什么是数据卷

        Docker 提供的一种长期化数据存储办理方案,用于在容器之间共享和长期化数据。数据卷办理了容器中数据易失性的问题,使得容器可以更加灵活和可移植。
2.创建数据卷

# docker run -dit -v /data1 -v /data2 --name web03 centos:7

# dockerexec -it web03 /bin/bash
# cd /data1
# cd /data2 3.数据卷容器

# docker run -dit --volumes-from web03 --name db1 centos:7 /bin/bash 4.挂载主机目录作为数据卷

案例1
# docker run -dit -p 8080:80 -v /data1:/usr/local/apache2/htdocs --name web04 httpd
# echo "ni hao">/data1/index.html
# curl 192.168.10.101:8080  案例2
# mkdir -p /www/{conf,html}
将编辑好的nginx配置文件拷贝到/www/conf
将网站代码拷贝到/www/html
# docker run -dit -p 9090:80 -v /www/conf/nginx.conf:/etc/nginx/nginx.conf -v /www/html:/www/html --name web05 nginx /bin/bash -c "nginx"

# docker run -d -p 9090:80 -v /www/conf/default.conf:/etc/nginx/conf.d/default.conf -v /www/html:/usr/share/nginx/html -v/www/nginx/log:/var/log/nginx --name web05 nginx
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Docker基本管理