ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Docker容器详解

Docker容器详解 文章目录一、Docker简介和部署方法1.1.什么是docekr1.2.docekr企业中的应用场景1.3.docekr和虚拟化1.5.Docker部署二、Docker的基本操作2.1.搜索镜像2.2.拉取镜像2.3.查看镜像2.4.导出镜像2.5.删除镜像2.6.容器常用命令2.6.1查看容器信息2.6.2运行、停止和删除容器2.6.3器内容提交2.6.4系统中的文件和容器中的文件的传输2.6.5查询容器内部日志一、Docker简介和部署方法1.1.什么是docekrDocker 是一个用于开发、打包、运行应用程序的容器化平台。优势轻量级虚拟化Docker 容器相较于传统的虚拟机更加轻量和高效能够快速启动和停止节省系统资源。一致性应用程序在不同的环境中如开发、测试、生产具有一致的运行表现。可移植性可以轻松地将 Docker 容器从一个平台迁移到另一个平台无需担心依赖和环境配置的差异。资源利用高效多个 Docker 容器可以共享主机的操作系统内核从而更有效地利用系统资源。容易部署和扩展能够快速部署新的应用实例并且可以根据需求轻松地进行水平扩展。Docker 极大地简化了应用程序的开发、部署和管理流程提高了开发效率和运维的便利性。它在现代软件开发和云计算领域得到了广泛的应用。1.2.docekr企业中的应用场景在企业中docker作为业务的最小载体而被广泛应用通过docker企业可以更效率的部署应用并更节省资源云计算的三种主要服务模式IaaS:基础设施即服务提供底层的基础计算、存储、网络资源。用户可以在这些基础设施上安装操作系统、中间件、数据库和应用程序。PaaS平台即服务提供开发和部署应用所需的平台环境包括操作系统、数据库、中间件、开发工具等。用户只需关注应用代码本身。SaaS软件即服务直接提供可用的软件应用用户通过浏览器或客户端直接使用无需安装、维护或管理底层基础设施。1.3.docekr和虚拟化虚拟化是“模拟一台完整的电脑”Docker 是“在操作系统里隔离进程”。虚拟机docker容器操作系统宿主机上运行虚拟机OS共享宿主机OS存储镜像较大GB镜像小MB性能操作系统额外的cpu、内存消耗几乎无性能损耗移植性笨重、与虚拟化技术耦合度高轻量、灵活迁移隔离性完全隔离安全隔离部署慢、分钟级快速、秒级运行密度一般几十个单机支持上千容器Docker 是基于操作系统层的容器技术共享宿主机内核轻量快速虚拟化是通过 Hypervisor 模拟完整硬件和操作系统隔离性强但资源消耗大。1.5.Docker部署官方站点https://docs.docker.com/1.配置仓库cd/etc/yum.repos.dvimdocker.repo[docker]namedocker-cebaseurlhttps://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stablegpgcheck02.安装Docker-ce并启动#安装dockeryuminstall-ydocker-ce#编辑docker启动文件设定其使用iptables的网络设定方式默认使用nftables[rootdocker ~]# vim /usr/lib/systemd/sysvtem/docker.serviceExecStart/usr/bin/dockerd-Hfd://--containerd/run/containerd/containerd.sock--iptablestrue systemctlenable--nowdockerdockerinfo3.配置内核网络echobr_netfilter/etc/modules-load.d/docker_mod.conf modprobe br_netfiltervim/etc/sysctl.d/docker.conf net.bridge.bridge-nf-call-iptables1net.bridge.bridge-nf-call-ip6tables1net.ipv4.ip_forward1sysctl--systemsystemctl restartdocker4.设置Docker加速器[rootdocker-node1 ~]vim/etc/docker/daemon.json{registry-mirrors:[https://docker.m.daocloud.io]}[rootdocker-node1 ~]systemctl restartdocker[rootdocker-node1 ~]dockerinfo...... Registry Mirrors: https://docker.m.daocloud.io/ Live Restore Enabled:false二、Docker的基本操作2.1.搜索镜像[rootDocker-node1 ~]dockersearch nginx NAME DESCRIPTION STARS OFFICIAL nginx Official build of Nginx.20094[OK]参数说明NAME镜像名称DESCRIPTION镜像说明STARS点赞数量OFFICIAL是否是官方的2.2.拉取镜像#从镜像仓库中拉取镜像[rootDocker ~]dockerpull nginx:1.26-alpine[rootdocker ~]dockerpull busybox Using default tag: latest latest: Pulling from library/busybox 481282afbc43: Pull complete Digest: sha256:1487d0af5f52b4ba31c7e465126ee2123fe3f2305d638e7827681e7cf6c83d5e Status: Downloaded newer imageforbusybox:latest docker.io/library/busybox:latest 查看本地镜像[rootdocker ~]dockerimages i Info → U In Use IMAGE ID DISK USAGE CONTENT SIZE EXTRA busybox:latest 925ff61909ae4.42MB 0B#alpine 版本nginx镜像的最小安装发型版本2.3.查看镜像#查看系统中的镜像列表[rootdocker ~]dockerimages i Info → U In Use IMAGE ID DISK USAGE CONTENT SIZE EXTRA busybox:latest 925ff61909ae4.42MB 0B mysql:8.0 9340b388320f 781MB 0B nginx:1.26 64e5ac93d424 192MB 0B[rootdocker ~]##查看镜像的详细信息[rootDocker ~]dockerimage inspect nginx:1.26-alpine#查看对镜像的更改记录[rootdocker ~]dockerhistorybusybox IMAGE CREATED CREATED BY SIZE COMMENT 925ff61909ae18months ago BusyBox1.37.0(glibc), Debian134.42MB2.4.导出镜像[rootdocker ~]dockerimages IMAGE ID DISK USAGE CONTENT SIZE EXTRA busybox:latest 925ff61909ae4.42MB 0B mysql:8.0 9340b388320f 781MB 0B nginx:1.26 64e5ac93d424 192MB 0B[rootdocker ~]dockerimage save nginx:1.26-onginx-latest.tar[rootdocker ~]dockerimage save nginx:1.26-onginx-latest.tar.gz[rootdocker ~]lsanaconda-ks.cfg mysql-8.0.tar redis-7.4.8 config-ens.sh nginx-1.26.tar redis-7.4.8.tar.gz ip.sh nginx-latest.tar.gz sysnc_nfs.sh#保存所有镜像[rootDocker ~]dockersavedockerimages|awkNR1{print $1:$2}-oimages.tar.gz-o指定导出镜像的位置可以同时导出多个镜像到一个文件中指定.tar.gz 可以导出并压缩。2.5.删除镜像[rootDocker-node1 ~]dockerrmi nginx:latest 删除全部镜像[rootDocker-node1 ~]dockerrmidockerimages|awkNR1{print $1:$2}2.6.容器常用命令[rootDocker~]dockerrun-d--namemario-p80:8080 whw/mario[root3ba22e59734f /]#进入到容器中按ctrld退出并停止容器#按ctrlpq退出但不停止容器#重新进入容器[rootdocker ~]dockerattach mario[root3ba22e59734f /]##在容器中执行命令[rootdocker ~]# docker exec -it test ifconfiglo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0(0.0B)TX bytes:0(0.0B)-d #后台运行-i #交互式运行-t #打开一个终端–name #指定容器名称-p #端口映射 -p 808080 把容器8080端口映射到本机80端口–rm #容器停止自动删除容器–network #指定容器使用的网络2.6.1查看容器信息[rootDocker ~]dockerps#查看当前运行容器[rootdocker ~]dockerpsCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES[rootDocker ~]dockerps-a#查看所有容器[rootdocker ~]dockerps-aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES[rootDocker ~]dockerinspect busybox#查看容器运行的详细信息2.6.2运行、停止和删除容器[rootDocker ~]dockerstop busybox#停止容器[rootDocker ~]dockerkillbusybox#杀死容器可以使用信号[rootDocker ~]dockerstart busybox#开启停止的容器[rootDocker ~]dockerrmmario#删除停止的容器[rootDocker ~]dockerrm-fbusybox#删除运行的容器[rootDocker ~]dockercontainer prune-f#删除所有停止的容器2.6.3器内容提交默认情况下容器被删除后在容器中的所有操作都会被清理包括要保存的文件如果想永久保存那么我们需要把动作提交提交后会生成新的镜像当我们在运行新镜像后即可看到我们提交的内容[rootdocker ~]dockerrun-it--nametestbusybox /# touch file #在容器中建立文件/# lsbin etc home lib64 root tmp var devfilelib proc sys usr /# [rootdocker ~]#[rootdocker ~]#[rootdocker ~]# docekr rm test-bash: docekr未找到命令[rootdocker ~]# docker rm testError response from daemon: cannot remove container/test:container is running: stop the container before removing or force remove[rootdocker ~]# docker rm test -ftest[rootdocker ~]# docker run -it --name test busybox/# ls #删掉容器后在开启发现文件不在了bin etc lib proc sys usr dev home lib64 root tmp var /# [rootdocker ~]#[rootdocker ~]#[rootdocker ~]# docker commit -m add file test busybox:v1sha256:a8ae2a17851f446d0bca5bc313aea24549e6a120a2c8f1613bcb12e0a6ad4331[rootdocker ~]# docker imagesi Info → U In Use IMAGE ID DISK USAGE CONTENT SIZE EXTRA busybox:latest 925ff61909ae4.42MB 0B busybox:v1 a8ae2a17851f4.42MB 0B mysql:8.0 9340b388320f 781MB 0B nginx:1.26 64e5ac93d424 192MB 0B[rootdocker ~]# docker image history busybox:v1IMAGE CREATED CREATED BY SIZE COMMENT a8ae2a17851f22seconds agosh3Baddfile925ff61909ae18months ago BusyBox1.37.0(glibc), Debian134.42MB[rootdocker ~]#此方法不利于企业审计所以不推荐使用在企业中我们多用Dockerfile来构建镜像2.6.4系统中的文件和容器中的文件的传输[rootDocker~]dockercptest2:/file /mnt#把容器中的文件复制到本机Successfully copied1.54kB to /mnt[rootDocker ~]dockercp/etc/fstab test2:/fstab#把本机文件复制到容器中2.6.5查询容器内部日志[rootdocker ~]dockerlogstest/# lsbin etc lib proc sys usr dev home lib64 root tmp var
返回列表