删除西部数码网站管理助手网站备案登陆

当前位置: 首页 > news >正文

删除西部数码网站管理助手,网站备案登陆,手机网页开发,pc端网站开发总结docker docker介绍docker镜像命令docker容器命令docker仓库 docker介绍 官网 Docker 是一种开源的容器化平台#xff0c;用于开发、部署和运行应用。它通过将应用程序及其依赖项打包到称为“容器”的单一包中#xff0c;使得应用能够在任何环境下运行#xff0c;不受底层系… docker docker介绍docker镜像命令docker容器命令docker仓库 docker介绍 官网 Docker 是一种开源的容器化平台用于开发、部署和运行应用。它通过将应用程序及其依赖项打包到称为“容器”的单一包中使得应用能够在任何环境下运行不受底层系统的限制。Docker提供了一种标准化的软件交付方式使得应用在开发、测试和生产环境中的运行更加一致。 Docker的核心概念 镜像ImageDocker镜像是容器的“模板”包含了操作系统、应用程序以及相关依赖库。镜像是只读的用于创建和运行容器。 容器Container容器是镜像的一个运行实例是一个隔离的进程环境拥有独立的文件系统、网络等资源。一个镜像可以创建多个容器每个容器之间是相互隔离的。 DockerfileDockerfile是一个文本文件定义了如何构建Docker镜像。它包含了一系列指令用于描述镜像的构建步骤例如选择基础镜像、安装依赖、复制文件、设置环境变量等。 仓库RegistryDocker仓库用于存储和分发Docker镜像类似于代码的版本控制系统。Docker Hub是官方的公共镜像仓库用户也可以搭建私有仓库。 Docker的底层架构与组件 Docker的底层架构主要由以下几个核心组件组成 Docker Daemon守护进程 Docker Daemon是Docker的后台进程负责管理容器的生命周期、构建和运行镜像。它接受客户端CLI命令并执行相应操作。 Docker CLI Docker CLI是Docker的命令行界面用于与Docker Daemon进行通信执行容器的启动、停止、删除等操作。 Containerd Containerd是一个容器管理的守护进程负责管理容器的生命周期。它是Docker的一部分但也可以作为独立组件使用直接与OCIOpen Container Initiative兼容。 RunC RunC是一个轻量级的、符合OCI标准的容器运行时工具。RunC的核心作用是创建和启动容器通过Namespace、Cgroups等Linux内核特性实现容器的隔离与资源控制。 Libnetwork Libnetwork是Docker的网络管理库用于处理容器的网络连接包括创建虚拟网络、网络隔离等操作。 图像和存储管理 Docker支持多种存储驱动如OverlayFS、AUFS、Device Mapper等用于管理镜像的分层存储结构。每一层只保存了增量数据这种分层存储可以提高资源利用率并减少冗余。 Docker 使用客户端-服务器架构。Docker 客户端与 Docker 守护程序通信后者负责构建、运行和分发 Docker 容器的繁重工作。Docker 客户端和守护程序可以在同一系统上运行或者您可以将 Docker 客户端连接到远程 Docker 守护程序。Docker 客户端和守护程序使用 REST API、通过 UNIX 套接字或网络接口进行通信。另一个 Docker 客户端是 Docker Compose它允许使用由一组容器组成的应用程序。 Docker的底层原理 Docker的底层原理主要依赖于Linux内核的几个关键技术包括Namespace、Cgroups、Union File System等这些技术实现了容器的隔离、资源管理和文件系统支持。 Namespace命名空间 Namespace是Linux内核提供的资源隔离技术它允许系统资源如进程ID、网络、文件系统等被隔离到独立的命名空间中。不同命名空间内的资源是相互独立的从而使得一个容器中的进程无法影响另一个容器中的进程。Docker主要使用了以下几种Namespace PID Namespace隔离进程ID使得每个容器中的进程彼此独立。 NET Namespace隔离网络资源如网卡、IP地址、端口等使得容器拥有独立的网络栈。 IPC Namespace隔离进程间通信如信号、消息队列等确保容器间通信安全。 Mount Namespace隔离文件系统挂载点每个容器可以拥有独立的文件系统视图。 UTS Namespace隔离主机名和域名使得容器可以设置自己的主机名。 CgroupsControl Groups Cgroups是Linux内核提供的资源管理功能可以限制和隔离进程组使用的资源如CPU、内存、磁盘I/O等。在Docker中Cgroups用于限制每个容器的资源使用确保系统稳定。比如可以设置一个容器的CPU最大使用率不超过50%、内存不超过1GB等从而避免单个容器过度占用资源影响其他容器。 Union File System联合文件系统 Docker的镜像由多层只读层叠加而成这种分层结构依赖于Union File System的支持。常见的联合文件系统有AUFS、OverlayFS等。每层镜像都只记录了文件系统的增量只有在容器运行时创建一个可写层。分层文件系统使得镜像可以高效共享、重复利用提高了存储空间的利用率。 容器镜像的分层结构与存储管理 Docker镜像的分层结构使得不同镜像可以共享相同的底层资源。在镜像构建时Docker会为每个操作创建一个新的层这些层按顺序叠加构成完整的镜像。在容器启动时Docker会在镜像的顶部添加一个可写层即“容器层”以便容器可以对文件系统进行读写操作。 Docker的运行流程 构建镜像根据Dockerfile构建镜像镜像分为多个只读层每层对应Dockerfile的一条指令。 启动容器从镜像创建容器实例并为容器创建一个可写层。 隔离资源启动容器时Docker通过Namespace隔离容器的进程、网络、文件系统等资源。 分配资源Docker通过Cgroups为容器分配资源并监控其资源使用情况。 容器网络Docker使用Libnetwork为容器创建网络连接实现容器间通信和网络隔离。 文件系统管理Docker使用联合文件系统挂载镜像层并为容器提供可写层。 Docker的优势与应用场景 一致性Docker打包了应用和依赖确保在不同环境中运行的一致性解决了“运行在我电脑上”的问题。 资源高效相比虚拟机容器不需要完整的操作系统和硬件模拟启动速度快资源占用少。 弹性伸缩通过编排工具如Kubernetes管理容器集群容器化应用易于实现水平扩展和自动恢复。 快速交付Docker简化了软件的开发、测试、部署流程使得开发、测试、运维团队之间的协作更加高效。 容器与虚拟机 (VM) 简单来说虚拟机是一个完整的操作系统拥有自己的内核、硬件驱动程序、程序和应用程序。启动虚拟机只是为了隔离单个应用程序这会带来很大的开销。 容器只是一个独立的进程其中包含运行所需的所有文件。如果运行多个容器它们都共享同一个内核这样您就可以在更少的基础设施上运行更多的应用程序。 结合使用虚拟机和容器 容器和虚拟机经常一起使用。例如在云环境中配置的机器通常是虚拟机。但是具有容器运行时的虚拟机可以运行多个容器化应用程序而不是配置一台机器来运行一个应用程序从而提高资源利用率并降低成本。 容器和镜像的关系 容器是一个独立的进程它从哪里获取文件和配置如何共享这些环境这就是容器镜像发挥作用的地方容器镜像是一个标准化包其中包含运行容器所需的所有文件、二进制文件、库和配置。 对于 PostgreSQL映像该映像将打包数据库二进制文件、配置文件和其他依赖项。对于 Python Web 应用它将包括 Python 运行时、应用代码及其所有依赖项。 镜像有两个重要原则 镜像是不可变的。镜像一旦创建就无法修改。只能创建新镜像或在其上添加更改。 容器镜像由层组成。每层代表一组添加、删除或修改文件的文件系统更改。
可以理解为镜像就是一个流水线工厂容器就是最终加工出来的产品 docker镜像命令 安装dockerUbuntu2410使用阿里源安装最新docker apt -y install apt-transport-https ca-certificates curl software-properties-commoncurl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -add-apt-repository deb [archamd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \((lsb_release -cs) stableapt-get -y install docker-cesystemctl enable --now dockerroothuhy:~# docker version Client: Docker Engine - CommunityVersion: 27.3.1API version: 1.47Go version: go1.22.7Git commit: ce12230Built: Fri Sep 20 11:40:42 2024OS/Arch: linux/amd64Context: defaultServer: Docker Engine - CommunityEngine:Version: 27.3.1API version: 1.47 (minimum version 1.24)Go version: go1.22.7Git commit: 41ca978Built: Fri Sep 20 11:40:42 2024OS/Arch: linux/amd64Experimental: falsecontainerd:Version: 1.7.22GitCommit: 7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311crunc:Version: 1.1.14GitCommit: v1.1.14-0-g2c9f560docker-init:Version: 0.19.0GitCommit: de40ad0Docker 使用 Linux 内核的 iptables 机制来处理容器的网络通信和地址转发。因此需要启用参数 加载 br_netfilter 内核模块。这是一个负责管理桥接网络过滤的模块 modprobe br_netfiltervi /etc/sysctl.confnet.bridge.bridge-nf-call-iptables1 net.bridge.bridge-nf-call-ip6tables1roothuhy:~# sysctl -p net.bridge.bridge-nf-call-iptables 1 net.bridge.bridge-nf-call-ip6tables 1搜索镜像docker search 可以指定全称不然就返回包含名称的所有镜像 roothuhy:~# docker search centos NAME DESCRIPTION STARS OFFICIAL centos DEPRECATED; The official build of CentOS. 7756 [OK] centos/postgresql-10-centos7 PostgreSQL is an advanced Object-Relational … 20 centos/httpd-24-centos8 3 corpusops/centos centos corpusops baseimage 0 centos/systemd systemd enabled base container. 115 centos/redis-5-centos8 0 centos/postgresql-96-centos7 PostgreSQL is an advanced Object-Relational … 45 centos/mariadb-102-centos7 MariaDB 10.2 SQL database server 6 centos/postgresql-10-centos8 0 centos/mysql-80-centos8 0 centos/mongodb-36-centos7 MongoDB NoSQL database server 12 centos/nginx-112-centos7 Platform for running nginx 1.12 or building … 16 centos/mariadb-103-centos8 2 centos/postgresql-12-centos8 0 centos/mysql-57-centos7 MySQL 5.7 SQL database server 95 centos/mariadb-101-centos7 MariaDB 10.1 SQL database server 13 centos/mysql-56-centos7 MySQL 5.6 SQL database server 23 centos/httpd-24-centos7 Platform for running Apache httpd 2.4 or bui… 46 centos/redis-32-centos7 Redis in-memory data structure store, used a… 6 centos/redis-5-centos7 Redis in-memory data structure store, used a… 0 centos/ruby-25-centos7 Platform for building and running Ruby 2.5 a… 3 centos/postgresql-12-centos7 PostgreSQL is an advanced Object-Relational … 5 centos/php-56-centos7 Platform for building and running PHP 5.6 ap… 34 centos/postgresql-94-centos7 PostgreSQL is an advanced Object-Relational … 16 centos/nginx-18-centos7 Platform for running nginx 1.8 or building n… 14拉取镜像docker pull 需要指定版本否则默认拉取最新版本的镜像 roothuhy:~# docker pull centos Using default tag: latest latest: Pulling from library/centos a1d0c7532777: Pull complete Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 Status: Downloaded newer image for centos:latest docker.io/library/centos:latest roothuhy:~#查看镜像docker images 获取镜像的名称大小版本、id等信息 roothuhy:~# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 5d0da3dc9764 3 years ago 231MB删除镜像docker rmi 通过名称或者id都可以删除需要注意的是删除的镜像是不能有已经启动过的容器实例不然会失败 roothuhy:~# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 5d0da3dc9764 3 years ago 231MB roothuhy:~# docker rmi centos Untagged: centos:latest Untagged: centossha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 Deleted: sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6 Deleted: sha256:74ddd0ec08fa43d09f32636ba91a0a3053b02cb4627c35051aff89f853606b59批量删除镜像 通过组合命令使用先执行查看镜像然后删除查看到的镜像 roothuhy:~# docker rmi \)(docker images) Untagged: redis:latest Untagged: redissha256:a06cea905344470eb49c972f3d030e22f28f632c1b4f43bbe4a26a4329dd6be5 Deleted: sha256:f02a7f56692880b88d5fabe631da5547ae1d8c30d7050c3d004347a9fa5e5a3c Deleted: sha256:685583ae93732862468e2a7edba217ed8165dfc730c363c30bb9405c4c81aac5 Deleted: sha256:fd8efb49fd2763acfd6a07881e62713a246858a4cdfe4b9a31c9cb3336a9c710 Deleted: sha256:3895fdb072213028eed326869c37d52d4b4003c6b0d0b4e6faf57bf18e5d439a Deleted: sha256:7c9bf6b85511bdf143188f915e200ff94b46dc75d6d218845a939bfa8701f1e2 Deleted: sha256:ba40754911b8313098bdacb32d5044d6105f72a3b9cfe4a9ea16b8f05861614d Deleted: sha256:93588577b39273261aea628c7f6aab541a86ff37e1f2674ee421300a2ff34d02 Deleted: sha256:1408254577b9d64420dcf7d4ba1b0df9a3ddd7a29d3d4736ad2ff4672baf4a8a Untagged: centos:latest Untagged: centossha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 Deleted: sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6 Deleted: sha256:74ddd0ec08fa43d09f32636ba91a0a3053b02cb4627c35051aff89f853606b59 Untagged: nginx:latest Untagged: nginxsha256:28402db69fec7c17e179ea87882667f1e054391138f77ffaf0c3eb388efc3ffb Deleted: sha256:3b25b682ea82b2db3cc4fd48db818be788ee3f902ac7378090cf2624ec2442df Deleted: sha256:3e8a4396bcdb62aeb916ec1e4cf64500038080839f049c498c256742dd842334 Deleted: sha256:8dd6a711fbdd252eba01f96630aa132c4b4e96961f09010fbbdb11869865f994 Deleted: sha256:9368c52198f80c9fb87fc3eaf7770afb7abb3bfd4120a8defd8a8f1a68ff375d Deleted: sha256:46834c975bf2d807053675d76098806736ee94604c650aac5fe8b5172ab008c8 Deleted: sha256:6e433330e8b1553bee0637fac3b1e66c994bb2c0cab7b2372d2584171d1c93d8 Deleted: sha256:fbc611fa4a4aff4cf0bfd963c49e2c416ff8047c9f84c2dc9328d3b833f1118d Deleted: sha256:98b5f35ea9d3eca6ed1881b5fe5d1e02024e1450822879e4c13bb48c9386d0ad清理镜像docker image prune 默认情况下docker image prune 只会删除 未被任何容器使用 的镜像。 使用 -a 标志删除所有没有标签的镜像。 roothuhy:/opt# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tmt v1 f77539e7e45f 2 weeks ago 467MB tomcat latest f77539e7e45f 2 weeks ago 467MB nginx latest 3b25b682ea82 7 weeks ago 192MB roothuhy:/opt# docker image prune -a WARNING! This will remove all images without at least one container associated to them. Are you sure you want to continue? [y/N] y Deleted Images: untagged: tmt:v1 untagged: tomcat:latest deleted: sha256:f77539e7e45f7c6337c681589fe18ee6407640e4066c450fcfb8c6a4ba5575b2 untagged: nginx:latest deleted: sha256:3b25b682ea82b2db3cc4fd48db818be788ee3f902ac7378090cf2624ec2442df deleted: sha256:3e8a4396bcdb62aeb916ec1e4cf64500038080839f049c498c256742dd842334 deleted: sha256:8dd6a711fbdd252eba01f96630aa132c4b4e96961f09010fbbdb11869865f994 deleted: sha256:9368c52198f80c9fb87fc3eaf7770afb7abb3bfd4120a8defd8a8f1a68ff375d deleted: sha256:46834c975bf2d807053675d76098806736ee94604c650aac5fe8b5172ab008c8 deleted: sha256:6e433330e8b1553bee0637fac3b1e66c994bb2c0cab7b2372d2584171d1c93d8 deleted: sha256:fbc611fa4a4aff4cf0bfd963c49e2c416ff8047c9f84c2dc9328d3b833f1118d deleted: sha256:98b5f35ea9d3eca6ed1881b5fe5d1e02024e1450822879e4c13bb48c9386d0adTotal reclaimed space: 191.7MB roothuhy:/opt# docker images REPOSITORY TAG IMAGE ID CREATED SIZE roothuhy:/opt#保存镜像docker save o, –output指定保存的 tar 文件的名称或路径。默认为标准输出 保存单个镜像 roothuhy:/opt# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat latest f77539e7e45f 2 weeks ago 467MB nginx latest 3b25b682ea82 7 weeks ago 192MB roothuhy:/opt# docker save -o nginx.tar nginx:latest roothuhy:/opt# ls nginx.tar roothuhy:/opt#保存两个镜像 roothuhy:/opt# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat latest f77539e7e45f 2 weeks ago 467MB nginx latest 3b25b682ea82 7 weeks ago 192MB roothuhy:/opt# docker save -o image.tar nginx:latest tomcat:latest roothuhy:/opt# ls image.tar批量保存所有镜像到一个压缩包里面 #!/bin/bash# 设置输出文件名称 output_fileall_docker_images.tar# 获取所有镜像名称和标签 images\((docker images --format {{.Repository}}:{{.Tag}})# 打包所有镜像 echo 正在将以下镜像保存到 \)output_file echo \(images docker save -o \)output_file \(imagesecho 所有镜像已保存到 \)output_fileroothuhy:/opt# vi images.sh iroothuhy:/opt# bash images.sh 正在将以下镜像保存到 all_docker_images.tar tomcat:latest nginx:latest 所有镜像已保存到 all_docker_images.tar roothuhy:/opt# ls all_docker_images.tar images.sh roothuhy:/opt#导入镜像docker load -i, –input指定要加载的 tar 文件路径 roothuhy:/opt# docker images REPOSITORY TAG IMAGE ID CREATED SIZE roothuhy:/opt# docker load -i all_docker_images.tar Loaded image: tomcat:latest 98b5f35ea9d3: Loading layer [] 77.83MB/77.83MB b33db0c3c3a8: Loading layer [] 117.9MB/117.9MB 63d7ce983cd5: Loading layer [] 3.584kB/3.584kB 296af1bd2844: Loading layer [] 4.608kB/4.608kB 8ce189049cb5: Loading layer [] 2.56kB/2.56kB 6ac729401225: Loading layer [] 5.12kB/5.12kB e4e9e9ad93c2: Loading layer [] 7.168kB/7.168kB Loaded image: nginx:latest roothuhy:/opt# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat latest f77539e7e45f 2 weeks ago 467MB nginx latest 3b25b682ea82 7 weeks ago 192MB roothuhy:/opt#添加标签dockr tag roothuhy:/opt# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat latest f77539e7e45f 2 weeks ago 467MB nginx latest 3b25b682ea82 7 weeks ago 192MB roothuhy:/opt# docker tag tomcat:latest tmt:v1 roothuhy:/opt# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tmt v1 f77539e7e45f 2 weeks ago 467MB tomcat latest f77539e7e45f 2 weeks ago 467MB nginx latest 3b25b682ea82 7 weeks ago 192MBdocker容器命令 启动容器docker run -d表示后台运行容器即“分离模式”这样容器启动后会在后台运行不会阻塞当前终端–name指定容器的名称方便后续管理。否则系统会随机生成一个名称-p端口映射将主机的端口映射到容器的端口格式是 主机端口:容器端口如果p是大写就是随机分配端口-v数据卷挂载用于将主机的文件夹挂载到容器中这在 Web 服务中很常见可以将 Nginx 配置文件或网页文件挂载到容器。格式是 主机路径:容器路径–rm容器停止后自动删除容器。适用于临时测试环境-e设置环境变量用于在启动时配置容器内部的环境-it用于交互模式启动容器加上 -t 表示为容器分配一个伪终端–network设置容器的网络模式。Docker 提供了多种网络模式如 bridge、host、none 等或使用自定义网络。-h, –hostname设置容器的主机名。–memory限制容器的内存使用。可以指定具体的内存大小。–cpu-shares为容器设置 CPU 共享权重用于调度时分配 CPU 资源–restart设置容器的自动重启策略。常见的选项有 no不会自动重启容器默认行为。 always容器停止时总是重启。 unless-stopped除非容器被手动停止否则总是重启。 on-failure仅在容器非正常退出退出码非 0时重启
启动一个nginx容器 roothuhy:# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 3b25b682ea82 5 weeks ago 192MB roothuhy:# docker run -itd –name nginx -p 8081:80 3b25b682ea82 6eefa8c342cfef7142fb000172727b757f1686a4d0bcc835df19e310d3d18ef9 roothuhy:# ss -tlun | grep 80 tcp LISTEN 0 4096 0.0.0.0:8081 0.0.0.0:* tcp LISTEN 0 4096 [::]:8081 [::]:*查看容器docker ps -a列出所有容器包括已停止的容器-q仅显示容器 ID不显示其他详细信息
roothuhy:
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6eefa8c342cf 3b25b682ea82 /docker-entrypoint.… 4 minutes ago Up 4 minutes 0.0.0.0:8081-80/tcp, [::]:8081-80/tcp nginx roothuhy:# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6eefa8c342cf 3b25b682ea82 /docker-entrypoint.… 4 minutes ago Up 4 minutes 0.0.0.0:8081-80/tcp, [::]:8081-80/tcp nginx roothuhy:# docker ps -q 6eefa8c342cf查看容器详细信息docker inspect roothuhy:# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6eefa8c342cf 3b25b682ea82 /docker-entrypoint.… 7 minutes ago Up 7 minutes 0.0.0.0:8081-80/tcp, [::]:8081-80/tcp nginx roothuhy:# docker inspect nginx [{Id: 6eefa8c342cfef7142fb000172727b757f1686a4d0bcc835df19e310d3d18ef9,Created: 2024-11-11T02:35:58.084126042Z,Path: /docker-entrypoint.sh,Args: [nginx,-g,daemon off; …………查看容器日志docker logs -f跟随实时输出日志–tail查看日志的最后几行
roothuhy:# docker logs -f nginx /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2024/11/11 02:35:58 [notice] 1#1: using the epoll event method 2024/11/11 02:35:58 [notice] 1#1: nginx/1.27.2 2024/11/11 02:35:58 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14) 2024/11/11 02:35:58 [notice] 1#1: OS: Linux 6.8.0-45-generic 2024/11/11 02:35:58 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2024/11/11 02:35:58 [notice] 1#1: start worker processes进入容器docker exec -i–interactive开启交互模式使得容器中的命令可以接收标准输入。适用于需要交互输入的命令-t–tty分配一个伪终端TTY。通常与 -i 一起使用来打开一个交互式的终端比如 bash 或 sh-e–env设置环境变量为执行的命令添加指定的环境变量。可以添加多个 -e 参数–privileged允许容器有更多的权限适用于执行一些需要高权限的操作–workdir指定容器中执行命令的工作目录工作路径相当于切换到指定目录再执行命令
roothuhy:
# docker exec -it nginx bash root6eefa8c342cf:/# ls bin dev docker-entrypoint.sh home lib64 mnt proc run srv tmp var boot docker-entrypoint.d etc lib media opt root sbin sys usr root6eefa8c342cf:/#停止容器docker stop roothuhy:# docker stop nginx nginx roothuhy:# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES roothuhy:# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6eefa8c342cf 3b25b682ea82 /docker-entrypoint.… 39 minutes ago Exited (0) 10 seconds ago nginx roothuhy:#强制停止docker kill roothuhy:/opt# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES df30594547df nginx /docker-entrypoint.… 5 seconds ago Up 5 seconds 80/tcp optimistic_mirzakhani roothuhy:/opt# docker kill df30594547df df30594547df roothuhy:/opt# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES roothuhy:/opt#启动容器docker start roothuhy:# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES roothuhy:# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6eefa8c342cf 3b25b682ea82 /docker-entrypoint.… 39 minutes ago Exited (0) 10 seconds ago nginx roothuhy:# docker start nginx nginx roothuhy:# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6eefa8c342cf 3b25b682ea82 /docker-entrypoint.… 40 minutes ago Up 3 seconds 0.0.0.0:8081-80/tcp, [::]:8081-80/tcp nginx roothuhy:#暂停容器中所有进程docker pause roothuhy:# docker pause nginx nginx roothuhy:# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6eefa8c342cf 3b25b682ea82 /docker-entrypoint.… 41 minutes ago Up 57 seconds (Paused) 0.0.0.0:8081-80/tcp, [::]:8081-80/tcp nginx roothuhy:#恢复被暂停的容器docker unpause roothuhy:# docker unpause nginx nginx roothuhy:# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6eefa8c342cf 3b25b682ea82 /docker-entrypoint.… 51 minutes ago Up 10 minutes 0.0.0.0:8081-80/tcp, [::]:8081-80/tcp nginx roothuhy:#查看 Docker 的实时事件流docker events –since指定从特定时间开始获取事件。时间格式可以是时间戳或格式化的日期字符串。 例如查看最近 1 小时的事件
docker events –since 1h–until指定事件结束时间和 –since 搭配使用。 例如查看指定时间段内的事件 docker events –since 2023-10-01T00:00:00 –until 2023-10-01T12:00:00–filter用于过滤特定的事件docker events 支持多种过滤器最常用的包括 event按事件类型过滤例如 start、stop、die 等。 container指定某个容器的事件。 image指定某个镜像的事件。 label按标签过滤事件。 例如查看特定容器的事件 docker events –filter containermy-container容器导出为镜像docker commit 此命令只会记录文件系统和容器状态不会记录启动参数和卷挂载等等可搭配inspect使用达到容器迁移的效果 roothuhy:/opt# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9448eb29f64e nginx /docker-entrypoint.… 14 seconds ago Up 13 seconds 80/tcp elated_beaver roothuhy:/opt# docker commit 9448eb29f64e new_nginx:v1 sha256:885f36e25bdfc0dcff244ab96c0c6f4d4dd4f2e11fa7b1e38e2014e66070edac roothuhy:/opt# docker images REPOSITORY TAG IMAGE ID CREATED SIZE new_nginx v1 885f36e25bdf 5 seconds ago 192MB nginx latest 60c8a892f36f 7 weeks ago 192MB容器导出为快照docker export Docker 支持将容器完整导出为文件快照这个方式更适合迁移可以间接保存所有数据 roothuhy:/opt# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9448eb29f64e nginx /docker-entrypoint.… 6 minutes ago Up 6 minutes 80/tcp elated_beaver roothuhy:/opt# docker export -o nginx_test.tar 9448eb29f64e roothuhy:/opt# cat nginx_test.tar | docker import - my_nginx_image:latest sha256:6bf3501bd2b49601f158c5905d4eae05f135c19eb3a89fd9f201284a7153bf28 roothuhy:/opt# roothuhy:/opt# docker images REPOSITORY TAG IMAGE ID CREATED SIZE my_nginx_image latest 6bf3501bd2b4 17 seconds ago 190MB new_nginx v1 885f36e25bdf 8 minutes ago 192MB nginx latest 60c8a892f36f 7 weeks ago 192MB使用 docker commit 在容器中做了修改例如安装了软件、修改配置文件希望将这些修改保存为镜像供后续使用。 快速创建一个基于现有容器的自定义镜像。 希望能够在以后使用该镜像启动新容器并保留容器的所有修改。 使用 docker export 需要导出容器的文件系统以便迁移到其他地方例如将容器的文件系统导出为 tar 包并上传到另一个机器上。 只关心容器内的数据不关心容器的配置。 备份容器的文件系统内容但不需要容器的运行时配置。 docker仓库 Docker仓库是用于存储和管理Docker镜像的地方可以是公共的也可以是私有的。通过Docker仓库开发者可以方便地上传、下载和共享Docker镜像。常见的Docker仓库包括Docker Hub、Harbor、 Google ContainerRegistryGCR、Amazon Elastic ContainerRegistryECR和 Azure ContainerRegistryACR。这些仓库支持镜像的版本控制存储、分发通常还提供镜像扫描、加密、权限管理等安全功能 Harbor官网 配置最新harbor安装要求docker 20.10.10-ce and docker-compose 1.18.0 . tar -xf harbor-offline-installer-v2.11.2.tgzroothuhy:
# cd harbor/ roothuhy:/harbor# ls common.sh harbor.v2.11.2.tar.gz harbor.yml.tmpl install.sh LICENSE prepare在 Docker 20.10 及更高版本中Docker 引入了 docker compose 作为一个插件命令逐渐取代了 docker-compose。这个命令作为 Docker CLI命令行界面的一部分允许直接通过 docker 命令来管理 Docker Compose 功能而不再需要单独安装docker-compose 工具 roothuhy:/harbor# docker compose version Docker Compose version v2.29.7配置daemon vi /etc/docker/daemon.json{registry-mirrors: [https://o90diikg.mirror.aliyuncs.com],insecure-registries : [0.0.0.0/0] }systemctl daemon-reload systemctl restart docker修改yml mv harbor.yml.tmpl harbor.ymlyml文件官网配置详解 vi harbor.yml修改为本机IP并注释https hostname: 192.168.200.160# http related config http:# port for http, default is 80. If https enabled, this port will redirect to https portport: 80# https related config #https:# https port for harbor, default is 443# port: 443# The path of cert and key files for nginx#certificate: /your/certificate/path#private_key: /your/private/key/path# enable strong ssl ciphers (default: false)# strong_ssl_ciphers: false使用默认启动 ./install.sh启动harbor时可带一些可选参数 –with-trivy # 启用 Trivy 漏洞扫描 –with-clair # 启用 Clair 漏洞扫描 –with-notary # 启用镜像签名与验证Notary –with-chartmuseum # 启用 Helm Chart 仓库 –with-registry # 启用 Docker 镜像仓库 –with-database # 启用数据库服务通常是 PostgreSQL –with-redis # 启用 Redis 服务 –with-log # 启用日志记录 –with-https # 启用 HTTPS 配置 –with-clair-scanner # 启用 Clair 扫描器 –with-clair-metadata # 启用 Clair 元数据 –with-jobservice # 启用任务服务 –with-core # 启用 Harbor 核心服务 –with-portal # 启用 Harbor Web UI界面访问IPadmin/Harbor12345 界面创建公开项目 查看推送命令 推送镜像打标签 roothuhy:# docker images REPOSITORY TAG IMAGE ID CREATED SIZE goharbor/harbor-exporter v2.11.2 520de0cd30c7 10 days ago 108MB goharbor/redis-photon v2.11.2 bb0d92ddf3ec 10 days ago 165MB goharbor/trivy-adapter-photon v2.11.2 0962772f9c8f 10 days ago 347MB goharbor/harbor-registryctl v2.11.2 075c10d45191 10 days ago 162MB goharbor/registry-photon v2.11.2 1365718c5208 10 days ago 84.8MB goharbor/nginx-photon v2.11.2 2949037133e7 10 days ago 154MB goharbor/harbor-log v2.11.2 9ae20475f5ca 10 days ago 163MB goharbor/harbor-jobservice v2.11.2 8dbbe22ef281 10 days ago 159MB goharbor/harbor-core v2.11.2 6c2be6bdb874 10 days ago 185MB goharbor/harbor-portal v2.11.2 a3440cd04321 10 days ago 162MB goharbor/harbor-db v2.11.2 a5fc5485967b 10 days ago 271MB goharbor/prepare v2.11.2 74c41ed4e2a9 10 days ago 205MB roothuhy:# docker tag goharbor/prepare:v2.11.2 192.168.200.160/test/goharbor/prepare:test登录harbor roothuhy:# docker login -u admin -p Harbor12345 192.168.200.160 WARNING! Using –password via the CLI is insecure. Use –password-stdin. WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credential-storesLogin Succeeded roothuhy:#roothuhy:# docker push 192.168.200.160/test/goharbor/prepare:test The push refers to repository [192.168.200.160/test/goharbor/prepare] c6844997789a: Pushed ee793768fa5f: Pushed 659dc40ce3b7: Pushed 029c27b3f91b: Pushed 7db7ce7738f9: Pushed 771d6693db72: Pushed 9c15ef707b0c: Pushed e8d8565c9983: Pushed faebe453cc4b: Pushed 7e3e085aad00: Pushed test: digest: sha256:3761801ca8f76e7df2ab1c4f7c35913cf0540a3d34510cb54274939568bcc346 size: 2413 roothuhy:#界面查看镜像已经推送成功