Docker基础入门:Docker基础总结篇--超详细
Docker基础入门:Docker基础总结篇[docker3要素、docker安装配置、容器使用、镜像管理发布]
- 一、Docker 3要素
- 1.1、镜像(Image)
- 1.2、容器(Container)
- 1.3、仓库(Registry)
- 1.4 、总结
- 二、Docker安装配置
- 2.1、卸载旧版Docker
- 2.2、需要的安装包依赖
- 2.3、设置镜像仓库
- 2.4、更新yum软件包索引
- 2.5、安装Docker--社区版
- 2.6、配置镜像加速(阿里云加速器地址--每个人地址不一致):
- 2.7、启动 | 停止Docker
- 2.8、测试--hello-world
- 2.9、查看Docker镜像
- 2.10、Docker进程查看
- 三、Docker容器使用
- 3.1、获取Dokcer相关信息命令
- 3.2、常用的Docker CLI 命令
- 3.3、给镜像重新命名和换标签
- 3.4、Docker容器的启停和删除
- 3.5、Docker 容器批量处理
- 3.6、Docker容器的几种运行方式
- 四、Docker镜像管理
- 4.1、Docker镜像的几种获取方式
- 4.2、查看镜像具体信息
- 4.3、构建镜像的有关指令
- 4.4、构建镜像步骤
- 4.5、实战---构建自己的一个centos
- 4.6、实战---构建自己的一个tomcat
- 五、发布镜像至阿里云
- 5.1、登录阿里云Docker Registry
- 5.2、使用" docker push" 命令将centos镜像提交至阿里云
- 5.3、阿里云镜像仓库查看
- 六、发布镜像至私有仓库
- 6.1、下载Registry镜像
- 6.2、查看Docker 镜像列表
- 6.3、运行 Docker Registry 容器
- 6.4、测试上传镜像到Registry
💖The Begin💖点点关注,收藏不迷路💖 |
在前面对Docker基础概念、基本使用的了解后,本章将更加详细地介绍容器的使用。
一、Docker 3要素
Docker 三个核心要素——镜像(Image)、容器(Container)和仓库(Registry)是理解和使用Docker的关键。
1.1、镜像(Image)
镜像是Docker的基本构建单元,它包含了运行容器所需的文件系统和软件环境。可以将镜像视为一个只读模板,其中定义了应用程序及其依赖的安装、配置和启动信息。镜像可以通过Dockerfile进行定义,其中记录了构建镜像的步骤和配置指令。通过构建镜像,我们可以实现应用程序的可移植性和可重复性。
1.2、容器(Container)
容器是从镜像创建的运行实例,它提供了一个隔离的运行环境,使得应用程序及其依赖可以在不同的系统中以一致的方式运行。每个容器都是相互独立的,具有自己的文件系统、进程空间和网络资源。通过容器,我们可以实现应用程序的部署、管理和扩展。容器可以被启动、停止、删除等操作,并且可以通过网络互相通信。
1.3、仓库(Registry)
仓库是用于存储和分享镜像的地方。Docker Hub是一个公共的Docker仓库,提供了大量的官方和社区创建的镜像供用户使用。用户可以通过搜索或推送镜像到Docker Hub来获取和分享镜像。此外,还可以搭建私有的仓库,用于存储和管理自己的镜像,或者在内部网络环境中共享镜像。仓库为镜像的存储、获取和分享提供了便利。
Docker官方:
Docker官方文档:https://docs.docker.com/
Docker Hub官网:https://hub.docker.com/
1.4 、总结
镜像、容器和仓库是Docker的三要素,共同构成了Docker的核心功能和特性。
通过镜像,我们可以快速创建容器,实现应用程序的移植性和可重复性;
通过容器,我们可以实现应用程序的隔离、部署和管理;
通过仓库,我们可以方便地存储、获取和分享镜像,加快应用程序的开发和交付过程。
深入理解和灵活运用这三个要素,能够帮助我们更好地使用Docker技术,提高应用程序的可靠性和效率。
二、Docker安装配置
Docker是基于Go语言开发的!开源项目!
官网:https://www.docker.com/
文档地址:https://docs.docker.com/
Doker镜像仓库地址:https://hub.docker.com/
前提:
#1、系统内核为3.10以上、要求系统为64位(x86_64)
[root@zyl-server ~]# uname -r
3.10.0-1160.el7.x86_64
[root@zyl-server ~]# #2、查看系统版本
[root@zyl-server ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"[root@zyl-server ~]#
2.1、卸载旧版Docker
sudo yum remove docker*
###或者使用
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
2.2、需要的安装包依赖
yum install -y yum-utils
2.3、设置镜像仓库
###使用国内镜像仓库地址
yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo #国外yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #国内
2.4、更新yum软件包索引
yum makecache fast
2.5、安装Docker–社区版
相关版本:docker-ce(社区版)、 docker-ee(企业版)。
docker-ce ----->社区版
docker-ce-cli ----->命令行
containerd.io ----->docker容器化运行环境
##默认不指定版本则安装最新版。
yum install docker-ce docker-ce-cli containerd.io##指定版本安装
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6
2.6、配置镜像加速(阿里云加速器地址–每个人地址不一致):
如何获取自己阿里云的镜像加速地址:
1、登录后打开阿里云的控制台
2、在控制台中找到“容器镜像服务”
###1、通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://lqwtpdhx.mirror.aliyuncs.com"]
}
EOF###2、修改保存后,重启Docker以使配置生效。
sudo systemctl daemon-reload
sudo systemctl restart docker##3、查看配置是否生效。
##执行 docker info,查看是否含有如下信息(最后):Registry Mirrors:https://lqwtpdhx.mirror.aliyuncs.com/
2.7、启动 | 停止Docker
systemctl start docker #启动
systemctl stop docker #停止
systemctl restart docker #重启
systemctl status docker #查看状态
systemctl enable docker #开机自启[root@zyl-server ~]# systemctl start docker
[root@zyl-server ~]# docker version #查看是否安装成功
2.8、测试–hello-world
docker run hello-world
2.9、查看Docker镜像
[root@zyl-server ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 23 months ago 13.3kB
[root@zyl-server ~]#
2.10、Docker进程查看
[root@zyl-server ~]# ps -ef |grep docker
root 1502 1 0 22:07 ? 00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root 1794 1266 0 22:16 pts/0 00:00:00 grep --color=auto docker
[root@zyl-server ~]#
# 三、Docker容器使用
# 四、Docker镜像管理与发布## 4.1 获取镜像的多种途径```python
1、Docker Hub(Docker仓库):Docker Hub 是官方的镜像注册中心,提供了大量的官方和社区维护的镜像供用户使用。可以通过命令docker pull从 Docker Hub 中获取镜像。例如,要获取名为 nginx 的镜像,可以执行命令:docker pull nginx2、私有仓库(Private Registry):除了 Docker Hub,还可以搭建自己的私有仓库来存储镜像。私有仓库可以在内网环境中使用,并允许你上传、下载和管理自己的镜像。一个受欢迎的私有仓库是 Docker Registry,可以使用 docker pull 命令从私有仓库中获取镜像。docker push 私有仓库地址ip:端口/myimage:tag
docker pull 私有仓库地址ip:端口/myimage:tag 3、从镜像导出文件:如果你已经有一个正在运行的 Docker 容器,并且希望将其转换为一个可重用的镜像,可以使用 docker export 命令将容器导出为一个 tar 文件。然后,你可以使用 docker import 命令将该 tar 文件导入为镜像。例如:docker export [CONTAINER_ID] > image.tar
docker import image.tar myimage:tag4、Dockerfile 构建镜像:Dockerfile 是一种文本格式的文件,它包含了一条条的指令和参数,用于自动构建 Docker 镜像。通过使用 Dockerfile,你可以定义并定制自己的镜像。可以使用 docker build 命令根据 Dockerfile 构建自定义镜像。例如:docker build -t myimage:tag .5、从其他镜像导出:如果你已经有一个现成的镜像并且想要基于它做修改,你可以创建一个新的容器,并在容器内部更改配置、安装软件等操作。然后,你可以使用 docker commit 命令将更改后的容器保存为新的镜像。例如:docker run -it [EXISTING_IMAGE] /bin/bash
# 在容器内部进行配置和更改
docker commit [CONTAINER_ID] myimage:tag
三、Docker容器使用
3.1、获取Dokcer相关信息命令
1、docker version:显示Docker客户端和服务器的版本信息。示例:
docker version2、下载(或更新)一个指定的镜像docker pull <image_name>:使用指定的镜像名称从 Docker 镜像仓库中下载镜像。
通过执行这个命令,Docker 将会:检查本地是否已经存在指定名称的镜像。如果本地已经存在,将会检查镜像是否已经是最新版本。
如果本地不存在或镜像不是最新版本,则会从 Docker 镜像仓库下载最新的镜像。
使用 docker pull 命令时,可以提供完整的镜像名称,包括仓库名称、标签和版本号。例如,可以使用以下格式之一的镜像名称:<repository>/<image_name>:<tag>:指定仓库名称、镜像名称和标签。
<repository>:可选,指定镜像所在的仓库名称。
<image_name>:必需,指定要下载的镜像的名称。
<tag>:可选,指定镜像的标签,用于区分不同版本的镜像。示例:下载最新版本的 nginx 镜像:docker pull nginx
下载特定标签的 ubuntu 镜像(标签为 18.04):docker pull ubuntu:18.04下载带有仓库和标签的镜像(仓库名称为 registry.example.com,镜像名称为 myimage,标签为 latest):docker pull registry.example.com/myimage:latestdocker pull 命令将从默认的 Docker 镜像仓库下载镜像。您也可以使用 -a 选项指定要拉取的全部标签的镜像,或使用其他镜像仓库的 URL 来下载镜像。3、docker info:显示Docker系统的详细信息,包括服务器配置、镜像和容器数量等。示例:
docker info4、docker images:列出本地已下载的镜像列表。示例:
docker images可结合grep 进行过滤。docker images | grep nginx5、docker ps:显示正在运行的容器列表。使用-a选项可以显示所有容器,包括已停止的容器。示例:
docker ps或者显示所有容器:
docker ps -a或者检查容器是否运行:
docker inspect --format "{{.State.Running}}" <容器ID或名称>[root@zyl-server ~]# docker inspect --format "{{.State.Running}}" 4b41981f69bc
"true"6、docker inspect <容器ID或名称>:显示指定容器的详细信息,包括网络配置、挂载点等。示例:
docker inspect mycontainer7、docker logs <容器ID或名称>:查看容器的日志输出。示例:
docker logs mycontainer8、docker port <容器ID或名称>:显示容器的端口映射情况。示例:
docker port mycontainer9、docker stats <容器ID或名称>:实时显示指定容器的资源使用情况,例如CPU、内存、网络等。示例:
docker stats mycontainer10、docker top <容器ID或名称>:显示容器内运行的进程列表。示例:
docker top mycontainer11、docker network ls:列出当前存在的网络列表。示例:
docker network ls12、docker volume ls:列出当前存在的数据卷(volume)列表。示例:
docker volume ls13、docker inspect <网络ID或名称>:显示指定网络的详细信息。示例:
docker inspect mynetwork14、docker inspect <数据卷ID或名称>:显示指定数据卷的详细信息。示例:
docker inspect myvolume15、docker ps | grep <容器ID或名称> :查看已运行容器,可结合grep 进行过滤。
示例:
docker ps | grep nginx
3.2、常用的Docker CLI 命令
Docker CLI(命令行界面)是与Docker引擎进行交互的主要方式。下面是几个常用的Docker CLI命令。
1、docker pull <镜像名>:从Docker镜像仓库拉取指定名称的镜像。示例:docker pull nginx2、docker run <选项> <镜像名>:创建并运行一个新的容器实例。示例:docker run -d -p 80:80 nginx
-d:以后台模式(detached mode)运行容器。
-p 80:80:将主机的80端口映射到容器的80端口。3、docker ps:查看正在运行的容器列表。示例:docker ps4、docker stop <容器ID或名称>:停止一个正在运行的容器。示例:docker stop mynginx5、docker rm <容器ID或名称>:删除一个已经停止的容器。示例:docker rm mynginx6、docker images:列出本地已经下载的镜像列表。示例:docker images7、docker rmi <镜像ID或名称>:删除一个本地的镜像。示例:docker rmi nginx8、docker exec -it <容器ID或名称> <命令>:在正在运行的容器中执行命令。示例:docker exec -it mynginx /bin/bash
-it:以交互模式进入容器。
/bin/bash:在容器中执行的命令。
3.3、给镜像重新命名和换标签
1、查看已有的镜像列表:docker images2、选择要重新命名和换标签的镜像,复制其镜像ID或名称。3、重新命名镜像:docker tag <旧镜像ID或名称> <新镜像名称>
示例:docker tag nginx:latest mynginx:1.0
这将创建一个新的镜像标签,将旧镜像的名称 "nginx" 改为 "mynginx",并设置标签为 "1.0"。4、验证新的镜像标签是否已创建:docker images
确保在输出的镜像列表中能够看到修改后的镜像名称和标签。5、(可选)删除旧的镜像标签(如果不再需要):docker rmi <旧镜像ID或名称>
示例:docker rmi nginx:latest请注意,在删除镜像时务必小心,确保不会意外删除其他正在使用的镜像。
3.4、Docker容器的启停和删除
1、查看正在运行的容器:docker ps
这将列出当前正在运行的所有容器,其中包括它们的 ID、名称、镜像、状态等信息。2、启动容器:docker start <容器ID或名称>
示例:docker start mynginx
这会启动名为 "mynginx" 的容器。3、停止容器:docker stop <容器ID或名称>
示例:docker stop mynginx
这会停止名为 "mynginx" 的容器。4、重启容器:docker restart <容器ID或名称>
示例:docker restart mynginx
这将重启名为 "mynginx" 的容器。5、删除容器:docker rm <容器ID或名称>
示例:docker rm mynginx
这会删除名为 "mynginx" 的容器。如果要删除多个容器,可以在命令中使用空格分隔它们的ID或名称。
请注意,在删除容器时务必小心,确保不会意外删除其他正在使用的容器。此外,如果容器正在运行,则应首先使用 docker stop 命令停止它,然后再使用 docker rm 命令删除它。
3.5、Docker 容器批量处理
1、批量启动容器:docker start $(docker ps -qa) # 开启所有容器或者:docker start <容器ID或名称> [<容器ID或名称> ...]
示例:docker start container1 container2 container3
这将同时启动名为 container1、container2 和 container3 的多个容器。2、批量停止容器:docker stop $(docker ps -qa) # 停止所有容器或者:docker stop <容器ID或名称> [<容器ID或名称> ...]
示例:docker stop container1 container2 container3
这将同时停止名为 container1、container2 和 container3 的多个容器。3、批量重启容器:docker restart <容器ID或名称> [<容器ID或名称> ...]
示例:docker restart container1 container2 container3
这将同时重启名为 container1、container2 和 container3 的多个容器。4、批量启动所有已停止的容器docker start $(docker ps -qf status=exited) # 启动未运行容器⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔
⛔⛔⛔⛔ 🈲🈲🈲🈲 以下命令慎用 🈲🈲🈲🈲 ⛔⛔⛔⛔
⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔5、批量删除容器:
docker rm $(docker ps -aq)或者docker rm <容器ID或名称> [<容器ID或名称> ...]
示例:docker rm container1 container2 container3
这将同时删除名为 container1、container2 和 container3 的多个容器。6、删除所有已停止的容器。执行该命令将永久删除这些容器,且无法恢复。docker container prune7、删除所有未被标记(tag)且未被任何容器使用的镜像。要使用该命令,请在终端中输入以下命令:docker image prune系统将会提示您是否确认删除未被标记和未被容器使用的镜像。如果确认,请输入 y 或 yes 并按下回车键。请注意,在执行该命令之前,请确保您了解将被删除的镜像,并且这些镜像不再需要。执行命令后,这些镜像将无法恢复。如果只想删除未被标记的镜像,可以使用 docker image prune -a 命令。8、清理 Docker 系统中的不再使用的资源,包括未被使用的容器、镜像、网络和存储卷等。执行 docker system prune 命令会提示您确认是否删除这些不再使用的资源。如果确认,请输入 y 或 yes 并按下回车键。要使用该命令,请在终端中输入以下命令:docker system prune请注意,在执行该命令之前,请确保您了解将被删除的资源,并且这些资源不再需要。执行命令后,这些资源将无法恢复。docker system prune 命令会删除以下资源:未使用的容器
未被标记(tag)的镜像
未使用的网络
未使用的存储卷
通过清理这些不再使用的资源,可以释放磁盘空间并提高系统性能。但请务必谨慎操作,并确保不会误删重要资源。如果只想清理部分资源,可以使用单独的命令,如 docker container prune、docker image prune、docker network prune 和 docker volume prune。9、删除所有未被使用的资源,包括未被使用的容器、镜像、网络和存储卷等,即使它们具有标记(tag)。要执行该命令,请在终端中输入以下命令:docker system prune -a系统将会提示您确认是否删除所有未被使用的资源。如果确认,请输入 y 或 yes 并按下回车键。请注意,在执行该命令之前,请确保您了解将被删除的资源,并且这些资源不再需要。执行命令后,这些资源将无法恢复。通过 docker system prune -a 命令可以清理所有未被使用的资源,包括未被标记的镜像、未使用的容器、未使用的网络和未使用的存储卷。这将释放磁盘空间,并提高系统性能。但请注意谨慎操作,以免误删重要资源。如果只想清理部分资源,可以使用单独的命令,如 docker container prune、docker image prune、docker network prune 和 docker volume prune。
3.6、Docker容器的几种运行方式
1、运行交互式容器:步骤:
使用 docker run 命令创建并运行一个新的容器。
通过 -it 选项(或者 -i -t)指定交互式模式和终端连接。
指定要运行的镜像名称。
示例命令:
docker run -it <image_name> 解释: 这将在一个新的容器中启动一个交互式会话。您将被连接到容器的终端,可以在其中执行命令和与容器进行交互。
启动守护式容器:步骤:
使用 docker run 命令创建并启动一个新的容器。
通过 -d 选项指定以守护进程(后台)模式运行。
指定要运行的镜像名称。
示例命令:
docker run -d <image_name> 解释: 这将在一个新的容器中启动一个守护进程。容器将在后台运行,不会连接到容器的终端。适用于长时间运行的服务和应用程序。3、启动具有端口映射的容器:步骤:
使用 docker run 命令创建并启动一个新的容器。
通过 -p 选项指定要映射的端口。
指定要运行的镜像名称。
示例命令:
docker run -p <host_port>:<container_port> <image_name>
解释: 此命令将启动一个新的容器,并将容器中的指定端口映射到主机上的指定端口。这允许从主机上的指定端口访问容器中运行的应用程序。4、运行容器并挂载卷:步骤:
使用 docker run 命令创建并运行一个新的容器。
通过 -v 选项指定主机和容器之间的目录或文件卷挂载。
指定要运行的镜像名称。
示例命令:
docker run -v <host_dir>:<container_dir> <image_name>解释: 此命令将创建一个新的容器,并将主机上的指定目录或文件卷挂载到容器中。这样,主机和容器之间可以共享数据。
四、Docker镜像管理
4.1、Docker镜像的几种获取方式
1、使用 Docker Hub:步骤:
在命令行中使用 docker pull 命令下载镜像,指定要下载的镜像名称和标签。例如,要下载 Ubuntu 20.04 镜像,可以运行以下命令:
docker pull ubuntu:20.042、从其他 Docker 镜像仓库中获取:步骤:在命令行中使用 docker pull 命令,并通过 --registry-mirror 选项指定要使用的镜像仓库。例如,在使用阿里云容器镜像服务时,可以运行以下命令:
docker pull --registry-mirror=<mirror-url>/<image-name>:<tag>或者从私有仓库拉取:docker pull 私有仓库地址:端口/<image-name>:<tag>3、从本地主机构建:步骤:创建一个名为 Dockerfile 的文本文件,并在其中定义构建所需的步骤和指令。
在 Dockerfile 所在的目录中打开命令行。
运行以下命令来构建镜像,并通过 -t 选项指定镜像的名称和标签:
docker build -t <image-name>:<tag> .4、导入外部镜像:步骤:将包含要导入的 Docker 镜像的 tar 文件复制到本地 Docker 主机中。
打开命令行,并在镜像所在的目录中运行以下命令:
docker load -i <image-file>.tar示例:
[root@zyl-server ~]# docker load -i my_tomcat.tar
Loaded image: tomcat:8.0
[root@zyl-server ~]#5、从 Docker 镜像导出或保存为文件:步骤:打开命令行,并运行以下命令来导出 Docker 镜像为 tar 文件:
docker save -o <image-file>.tar <image-name>:<tag>
导出完成后,可以将生成的 tar 文件复制到其他机器或存档备份。示例:
[root@zyl-server ~]# docker save -o my_tomcat.tar tomcat:8.0
[root@zyl-server ~]# ls
anaconda-ks.cfg dockerfile my-projects my_tomcat.tar zyl-bulid
[root@zyl-server ~]#
4.2、查看镜像具体信息
1、查看镜像详细信息,docker inspect 镜像名字:tag
示例:
docker inspect nginx
执行命令后,将会返回包含关于该 nginx 镜像的详细配置、网络设置、挂载点等信息的 JSON 格式输出。2、查看镜像系统
示例:
docker inspect -f{{.Os}} nginx 执行命令后,将会返回 nginx 镜像所使用的操作系统名称。
3、查看镜像的cpu 架构
示例:
docker inspect -f{{.Architecture}} nginx执行命令后,将会返回 nginx 镜像所使用的体系架构,如 amd64 或 arm64。
4.3、构建镜像的有关指令
官方构建语法参考:https://docs.docker.com/engine/reference/builder/#parser-directives
**编写Docker-file 用到的指令:**| 指令 | 作用 |
| ----------- | ---------------------------------------- |
| FROM | 从最基础镜像构建 ,全新制作镜像,可以 FROM scratch, scratch它是个空镜像。 |
| ADD | 将本地的文件,添加到镜像中去将本地的文件,添加到镜像中去 |
| RUN | 构建中执行的shell 命令 |
| CMD | 类似于RUN指令,CMD 在docker run 时运行,而非docker build. 一个DockerFile中只能有一个cmd指令。 |
| LABEL | 镜像的注释信息。可以注明应用的版本号,创建日期,谁创建的等等。 |
| EXPOSE | 仅仅是声明容器打算使用什么端口而已,并不会自动在宿主进行端口映射。具体端口映射,还是需要docker run -p <宿主端口>:<容器端口> 实际来进行映射。 |
| ENV | 该`ENV`指令将环境变量`<key>`设置为 value `<value>`。该值将在构建阶段的所有后续指令的环境中,也可以在许多中[内联替换] |
| ARG | 该`ARG`指令定义了一个变量,用户可以在构建时通过使用 标志的`docker build`命令将其传递给构建器, 也可以替代ENV , 因为ARG不会修改镜像内的系统环境变量。只会在构建中起作用。 |
| COPY | 用于容器与主机之间的数据拷贝。 |
| ENTRYPOINT | `ENTRYPOINT` 的目的和 `CMD` 一样 ,增强版的cmd,可以运行.sh 脚本在run 之前做一些预处理的工作,以及可以跟cmd 集合一起使用。 |
| VOLUME | 数据卷,实现数据持久化 。*数据不随着Container的删除而丢失,需要将数据挂载到本地宿主机的某个文件或目录。从而实现容器之间的数据共享等, 简单来说,Volume就是目录或者文件,它可以绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上。 |
| USER | 默认是root用户,可以切换用户, USER Zhangtl |
| WORKDIR | 相当于设置容器的工作目录了, 容器启动时执行的命令会在该目录下执行, 如果不存在,即使它没有在任何后续指令中使用,它也会被创建。 |
| ONBUILD | 在使用ONBUILD命令时,其后面跟着的其他命令在当前镜像构建时不会被执行,以其为基础镜像源,构建下级镜像源时才会执行 |
| HEALTHCHECK | 可以出现一次,结合CMD 、RUN 等可以细节化验证容器中的服务是否正常。 |
4.4、构建镜像步骤
通过 Docker,可以使用 Dockerfile 文件来创建自定义的 Docker 镜像。下面是创建镜像的详细步骤:
1、创建 Dockerfile在工作目录中创建一个新文件,并命名为 Dockerfile。Dockerfile 包含一系列指令和参数,用于描述如何构建自定义 Docker 镜像。2、编写 Dockerfile在 Dockerfile 中编写构建镜像所需的指令和参数。例如,定义源镜像、安装应用程序软件、添加配置文件等。3、构建 Docker 镜像运行以下命令来构建 Docker 镜像:docker build -t <image-name>:<tag> .
其中 <image-name> 是为镜像取的名称,<tag> 为标签或版本号。 . 表示 Dockerfile 文件所在的当前目录。4、查看新构建的镜像运行以下命令查看刚刚构建的 Docker 镜像:docker images5、运行新构建的镜像运行以下命令来运行新构建的镜像:docker run --name <container-name> -p <host-port>:<container-port> -d <image-name>:<tag>其中 :
<container-name> 是容器的名称,
<host-port> 是主机上开放的端口(例如 8080),
<container-port> 是 Docker 容器中应用程序的端口(例如 80),-d 参数表示在后台运行容器。
4.5、实战—构建自己的一个centos
1、创建有关dockerfile目录
[root@zyl-server ~]# mkdir dockerfile
[root@zyl-server ~]# ll
total 4
-rw-------. 1 root root 1419 Aug 12 20:31 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Aug 29 23:30 dockerfile
drwxr-xr-x. 2 root root 51 Aug 28 22:50 docker-test-volume
[root@zyl-server ~]# cd dockerfile/
[root@zyl-server dockerfile]# ll
total 0
[root@zyl-server dockerfile]# vi mydockerfile
[root@zyl-server dockerfile]#
2、编写构建文件
FROM centos MAINTAINER zyl<zyl@163.com>ENV MYPATH /usr/localWORKDIR $MYPATHRUN yum -y install vimRUN yum -y install net-toolsEXPOSE 80CMD echo $MYPATHCMD echo "-----end-----"CMD /bin/bash
3、通过dockerfile文件构建镜像
[root@zyl-server dockerfile]# docker build -f mydockerfile -t mycentos:1.0 .
报错:通过dockerfile yum -y install vim 安装 vim 时 ,从仓库 ‘appstream’ 下载元数据失败:由于镜像列表中没有 URL,不能准备内部镜像列表。
CentOS Linux 8 - AppStream 75 B/s | 38 B 00:00
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
The command '/bin/sh -c yum -y install vim' returned a non-zero code: 1
解决办法:
这是因为Centos8于2021年年底停止了服务,使用yum源安装时候,就会报错:Failed to download metadata for repo ‘AppStream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist”,这时我们需要在dockerfile文件指定centos版本小于8版本:
FROM centos:centos7MAINTAINER zyl<zyl@163.com>ENV MYPATH /usr/localWORKDIR $MYPATHRUN yum -y install vimRUN yum -y install net-toolsEXPOSE 80CMD echo $MYPATHCMD echo "-----end-----"CMD /bin/bash
再次构建镜像:
[root@zyl-server dockerfile]# docker build -f mydockerfile -t mycentos:1.0 .
..............................
..............................
Successfully built a3e6ef33a458
Successfully tagged mycentos:1.0###docker images 检查
[root@zyl-server dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos 1.0 a3e6ef33a458 33 seconds ago 698MB
centos centos7 eeb6ee3f44bd 23 months ago 204MB
[root@zyl-server dockerfile]#
测试运行(自己构建的镜像与官方的centos原生镜像):
4.6、实战—构建自己的一个tomcat
创建工作目录
[root@zyl-server ~]# mkdir zyl-bulid
[root@zyl-server ~]# cd zyl-bulid/
[root@zyl-server zyl-bulid]# mkdir tomcat
[root@zyl-server zyl-bulid]# cd tomcat
[root@zyl-server tomcat]# ll
total 0
[root@zyl-server tomcat]#
1、准备jdk、tomcat压缩包
2、编写Dockerfile文件(官方命名:Dockerfile,build 时会自动寻找这个文件,就不再需要使用 -f 指定了)
FROM centos:centos7MAINTAINER zyl<zyl@163.com>COPY readme.txt /usr/local/readme.txtADD jdk-8u381-linux-x64.tar.gz /usr/local/ADD apache-tomcat-9.0.73.tar.gz /usr/local/RUN yum -y install vimENV MYPATH /usr/localWORKDIR $MYPATHENV JAVA_HOME /usr/local/jdk1.8.0_381
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENV CATALINA_HOME /usr/local/apache-tomcat-9.0.73ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.73ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/binEXPOSE 8080CMD /usr/local/apache-tomcat-9.0.73/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.73/bin/logs/catalina.out
3、构建镜像
docker build -t mytomcat .
..............
..............
Successfully built 7b01ac741538
Successfully tagged mytomcat:latest
4、docker images 检查
[root@zyl-server tomcat]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat latest 7b01ac741538 51 seconds ago 838MB
mycentos 1.0 a3e6ef33a458 46 minutes ago 698MB
centos centos7 eeb6ee3f44bd 23 months ago 204MB
centos latest 5d0da3dc9764 23 months ago 231MB
[root@zyl-server tomcat]#
5、运行镜像
1、运行
[root@zyl-server tomcat]# docker run -d -p 9090:8080 --name zyl-tomcat -v /home/zyl/projects/test:/usr/local/apache-tomcat-9.0.73/webapps/test -v /home/zyl/projects/tomcatlogs/:/usr/local/apache-tomcat-9.0.73/logs mytomcat
1706ccdbea21e820785d4edef01774263553578e664edf3ceafab2104f85e794
[root@zyl-server tomcat]#2、进入容器
[root@zyl-server tomcat]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1706ccdbea21 mytomcat "/bin/sh -c '/usr/lo…" 2 minutes ago Up 2 minutes 0.0.0.0:9090->8080/tcp, :::9090->8080/tcp zyl-tomcat
[root@zyl-server tomcat]# docker exec -it 1706ccdbea21 /bin/bash
[root@1706ccdbea21 local]#3、测试访问[root@zyl-server tomcat]# curl localhost:9090
浏览器访问:http://192.168.234.10:9090/
五、发布镜像至阿里云
Docker基础入门:镜像、容器导入导出与私有仓库搭建
5.1、登录阿里云Docker Registry
[root@zyl-server tomcatlogs]# docker login --username=zhb1999 registry.cn-hangzhou.aliyuncs.com
Password:
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/#credentials-storeLogin Succeeded
[root@zyl-server tomcatlogs]#
5.2、使用" docker push" 命令将centos镜像提交至阿里云
####将mytomcat 镜像IMAGE ID (7b01ac741538)提交至阿里云
[root@zyl-server tomcatlogs]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat latest 7b01ac741538 34 minutes ago 838MB
mycentos 1.0 a3e6ef33a458 About an hour ago 698MB
centos centos7 eeb6ee3f44bd 23 months ago 204MB
centos latest 5d0da3dc9764 23 months ago 231MB
[root@zyl-server tomcatlogs]#### 推送
[root@zyl-server tomcatlogs]# docker tag 7b01ac741538 registry.cn-hangzhou.aliyuncs.com/zhaohaibao/mytomcat:9.0
[root@zyl-server tomcatlogs]# docker push registry.cn-hangzhou.aliyuncs.com/zhaohaibao/mytomcat:9.0
提交发布的时候也是按层级进行提交的,发布时带上版本号!!!!
5.3、阿里云镜像仓库查看
六、发布镜像至私有仓库
6.1、下载Registry镜像
[root@zyl-server ~]# docker pull registry
Using default tag: latest
latest: Pulling from library/registry
79e9f2f55bf5: Pull complete
0d96da54f60b: Pull complete
5b27040df4a2: Pull complete
e2ead8259a04: Pull complete
3790aef225b9: Pull complete
Digest: sha256:169211e20e2f2d5d115674681eb79d21a217b296b43374b8e39f97fcf866b375
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest
[root@zyl-server ~]#
6.2、查看Docker 镜像列表
[root@zyl-server ~]# docker images
6.3、运行 Docker Registry 容器
docker run -d -p 5000:5000 -v /zyl/myregistry/:/tmp/registry --privileged=true registry
默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器数据卷映射,方便宿主机联调[root@zyl-server ~]# docker run -d -p 5000:5000 -v /zyl/myregistry/:/tmp/registry --privileged=true registry
4c3babd80e86c8e2b21f4ad1dffeec5ca42270e5d467bed2a93839e323bcd5c6
[root@zyl-server ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4c3babd80e86 registry "/entrypoint.sh /etc…" 10 seconds ago Up 8 seconds 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp amazing_rhodes
780530eaf656 centos "/bin/bash" About an hour ago Up About an hour wizardly_dhawan
95420eae9ad9 nginx "/docker-entrypoint.…" About an hour ago Up About an hour 80/tcp great_pasteur
[root@zyl-server ~]#
浏览器访问http://IP:5000/v2,显示“{}” 说明registry运行正常。
6.4、测试上传镜像到Registry
1、提交centos容器副本成为新的镜像,Tag----》1.2 。
[root@zyl-server ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4c3babd80e86 registry "/entrypoint.sh /etc…" 5 minutes ago Up 5 minutes 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp amazing_rhodes
780530eaf656 centos "/bin/bash" About an hour ago Up About an hour wizardly_dhawan
95420eae9ad9 nginx "/docker-entrypoint.…" 2 hours ago Up 2 hours 80/tcp great_pasteur
[root@zyl-server ~]# docker commit -m="centos" -a="zyl" 780530eaf656 centos:1.2
sha256:d0a52e21dd65f98f7cd106d996e97e1b3e709431e4bb80cd2e3599953fa95fe6
[root@zyl-server ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 1.2 d0a52e21dd65 20 seconds ago 231MB
nginx latest 605c77e624dd 19 months ago 141MB
registry latest b8604a3fe854 21 months ago 26.2MB
hello-world latest feb5d9fea6a5 23 months ago 13.3kB
centos latest 5d0da3dc9764 23 months ago 231MB
registry.cn-hangzhou.aliyuncs.com/zhaohaibao/centos 7.9 5d0da3dc9764 23 months ago 231MB
[root@zyl-server ~]#
2、查看当前私有仓库镜像(空)
[root@zyl-server ~]# curl -XGET http://192.168.234.10:5000/v2/_catalog
{"repositories":[]}
[root@zyl-server ~]#
3、将主机的registry镜像命名为符合仓库要求的格式。registry_url:port/ImageName:tag
docker tag centos:1.2 192.168.234.10:5000/centos:1.2
4、上传centos镜像到Registry仓库
docker push 192.168.234.10:5000/centos:1.2
push失败:
[root@zyl-server ~]# docker push 192.168.234.10:5000/centos:1.2
The push refers to repository [192.168.234.10:5000/centos]
Get "https://192.168.234.10:5000/v2/": http: server gave HTTP response to HTTPS client
[root@zyl-server ~]#
解决:
这是因为我们启动的registry服务不是安全可信赖的。这时需要修改客户端docker的配置文件vi /etc/docker/daemon.json,添加下面的内容(insecure-registries服务地址):{
""registry-mirrors": ["https://XXX.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.234.10:5000"]
}"registry-mirrors": ["https://XXX.mirror.aliyuncs.com"] 是阿里云代理的Registry Hub仓库的地址,可以加快国内访问Registry Hub仓库的速度。修改好之后需要重启Docker服务才能生效,执行命令:systemctl restart docker ,再push即可.
5、再次推送
[root@zyl-server ~]# docker push 192.168.234.10:5000/centos:1.2
The push refers to repository [192.168.234.10:5000/centos]
Get "http://192.168.234.10:5000/v2/": dial tcp 192.168.234.10:5000: connect: connection refused
[root@zyl-server ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@zyl-server ~]#
报错:connect: connection refused
解决:docker ps 查看发现没有运行的镜像实例,重新运行 registry。
docker run -d -p 5000:5000 -v /zyl/myregistry/:/tmp/registry --privileged=true registry### pushdocker push 192.168.234.10:5000/centos:1.2
6、检查–查看当前私有仓库镜像
[root@zyl-server ~]# curl -XGET http://192.168.234.10:5000/v2/_catalog
{"repositories":["centos"]}
[root@zyl-server ~]#
至此,我们的Registry私有仓库搭建完成,如果在今后中要使用,可以使用命令:
docker pull 192.168.234.10:5000/centos:1.2
💖The End💖点点关注,收藏不迷路💖 |
相关文章:
![](https://img-blog.csdnimg.cn/849c0f6107844b1abf43ece746a9b554.png#pic_center)
Docker基础入门:Docker基础总结篇--超详细
Docker基础入门:Docker基础总结篇[docker3要素、docker安装配置、容器使用、镜像管理发布] 一、Docker 3要素1.1、镜像(Image)1.2、容器(Container)1.3、仓库(Registry)1.4 、总结 二、Docker安…...
![](https://img-blog.csdnimg.cn/img_convert/7f2c37406539a9ea396cad84315afc74.png)
对象临时中间状态的条件竞争覆盖
Portswigger练兵场之条件竞争 🦄条件竞争之对象临时中间状态的条件竞争 Lab: Partial construction race conditions🚀实验前置必要知识点 某些框架尝试通过使用某种形式的请求锁定来防止意外的数据损坏。例如,PHP 的本机会话处理程序模块…...
![](https://img-blog.csdnimg.cn/img_convert/230be051a11cde2cd888e24fe7922683.png)
Nodejs 第十四章(process)
process 是Nodejs操作当前进程和控制当前进程的API,并且是挂载到globalThis下面的全局API API 介绍 1. process.arch 返回操作系统 CPU 架构 跟我们之前讲的os.arch 一样 arm、arm64、ia32、mips、mipsel、ppc、ppc64、s390、s390x、以及 x64 2. process.cwd() …...
![](https://img-blog.csdnimg.cn/565015d53f7c40e5bebcf6b2720630b0.png)
数据分析因子评分学习
当多个因素影响一个结果时,我们需要综合考虑这些因素分别对结果德影响。因子评分就是用于比较其对结果德影响程度。 文章目录 前言一、案例背景二、解决方案(一)分析思路(二)剔除无关数据(三)求…...
![](https://img-blog.csdnimg.cn/fcc4eda096624c7eb8202dca8836761d.png)
【postgresql 基础入门】数据库服务的管理
数据库服务管理 专栏内容: postgresql内核源码分析手写数据库toadb并发编程 开源贡献: toadb开源库 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤ÿ…...
![](https://img-blog.csdnimg.cn/995ae939af4541138f62577ce7aebb71.png)
githubPage部署Vue项目
github中新建项目 my-web (编写vue项目代码) myWebOnline(存放Vue打包后的dist包里面的文件) 发布流程 (假设my-web项目已经编写完成)Vue-cli my-web vue.config.js文件中 const { defineConfig } require(vue/cli-service)…...
![](https://www.ngui.cc/images/no-images.jpg)
【网络编程】网络原来这么简单(更新中)
故事背景:有一天小胖和他的朋友细狗出去吃饭,聊着聊着就聊到了网络,小胖是学校里的编程大佬,而细狗只是个空有求知欲的编程小白。 细狗:胖儿啊,你说计算机是怎么通信的我感觉好抽象啊。为啥别人给我发个消息…...
![](https://img-blog.csdnimg.cn/4cd815c0441c4a6dbfc71c459f7ecafe.webp)
监控系统典型架构
监控系统典型架构如下: 从左往右看: 采集器是负责采集监控数据的,采集到数据之后传输给服务端,通常是直接写入时序库。 对时序库的数据进行分析和可视化。 告警引擎产生告警事件之后交给告警发送模块做不同媒介的通知。 可视化比…...
![](https://img-blog.csdnimg.cn/28b903b5c26349e58d0ed1b095af94c3.png)
jsp 新能源汽车论坛网Myeclipse开发mysql数据库web结构java编程计算机网页项目
一、源码特点 JSP 新能源汽车论坛网是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0…...
![](https://img-blog.csdnimg.cn/2530c6729ab8490ab9b35b34be78a7bc.png)
Code Snippet的使用
文章目录 前言Code Snippet:就是咱们在VS中敲的prop、propfull、ctol【构造器快捷键】、for等快捷键,然后按tab键自动生成代码1.VS自带的:prop、propfull、ctol【构造器快捷键】、for等快捷键,直接使用2.自定义Snippet: 巨人的肩膀…...
![](https://img-blog.csdnimg.cn/9e0374adf6bd4c22a1ec4d4730afe043.png)
华为云云服务器评测|华为云耀云L搭建zerotier服务测试
0. 环境 - Win10 - 云耀云L服务器 1. 安装docker 检查yum源,本EulerOS的源在这里: cd /etc/yum.repos.d 更新源 yum makecache 安装 yum install -y docker-engine 运行测试 docker run hello-world 2. 运行docker镜像 默认配…...
![](https://img-blog.csdnimg.cn/894faaefc1434e9c814f3cbfdf989d4a.jpeg)
企业电脑文件加密系统 / 防泄密软件——「天锐绿盾」
「天锐绿盾」是一种公司文件加密系统,旨在保护公司内网数据安全,防止信息泄露。该系统由硬件和软件组成,其中包括服务端程序、控制台程序和终端程序。 PC访问地址: isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c…...
![](https://img-blog.csdnimg.cn/img_convert/81d7600bb7ef1061dc16515eca0ad065.jpeg)
单条视频涨粉50w,逃出大英博物馆背后的逻辑是什么?
为洞察小红书平台的内容创作趋势及品牌营销策略,新红推出8月月度榜单,从创作者、品牌、品类多方面入手,解析月榜数据,为从业者提供参考。 一条视频涨粉50w 情感共鸣是爆火的核心 据8月的『涨粉排行榜』TOP500数据显示,…...
![](https://www.ngui.cc/images/no-images.jpg)
AIGC(生成式AI)试用 1 -- 基本文本查询
以一个字起,依次加一个字构成新句,不断加字使句子越来越长,也许越来越有趣。 1. 使用不同的生成AI提问,提取结果(全部 或 第一句),对比结果,个人评价更喜欢哪个(绿色底色…...
![](https://www.ngui.cc/images/no-images.jpg)
php如何处理高并发请求
PHP 处理高并发请求的方法: 使用异步框架:通过使用异步处理方式,可以有效地降低 PHP 处理请求的响应时间,避免因为 IO 操作而导致的等待阻塞。常用的异步框架有ReactPHP和Swoole等。 使用缓存:使用缓存可以减少每个请求…...
![](https://www.ngui.cc/images/no-images.jpg)
控制台实现汽车租赁系统
汽车租赁系统需求:(基于控制台实现,适合基础小白练习使用) 1、包含汽车租赁和汽车管理两个模块 2、汽车租赁需要包含汽车租赁天数以及汽车租金结算功能 3、汽车管理需要包含租赁汽车的添加、删除、修改、查询功能 代码如下&#…...
![](https://www.ngui.cc/images/no-images.jpg)
机器学习和数据挖掘03-模型性能评估指标
Accuracy(准确率) 概念:模型正确预测的样本数量与总样本数量的比例。 公式:Accuracy (TP TN) / (TP TN FP FN) TP (True Positives):正确预测为正例的样本数。即模型正确地将正例判定为正例。 TN (True Negati…...
![](https://www.ngui.cc/images/no-images.jpg)
PageNumberPagination、LimitOffsetPagination、CursorPagination
数据 from django.db import modelsclass User(models.Model):username models.CharField(max_length64, verbose_name用户名)password models.CharField(max_length64, verbose_name密码)# 用户类型user_type models.IntegerField(choices((1, 菜鸟用户), (2, 普通用户), …...
![](https://img-blog.csdnimg.cn/img_convert/0cd9e8f935fdc93526f506be86049227.png)
怎么把视频转换成mp4格式
怎么把视频转换成mp4格式?如今,随着科技的不断发展,我们在工作中接触到的多媒体视频格式也越来越多。其中,MP4作为一种广泛兼容的视频格式,在许多软件中都能轻松播放,并且成为了剪辑与裁剪视频时大家常用的…...
![](https://www.ngui.cc/images/no-images.jpg)
正则判断字符是否包含手机号
字符前后不能是数字,满足手机号标准 String msg "19009098989";String mobliePattern "((?<!\\d))(mobile|手机号|)(|\\[|\\\":\\\"|:|:||:|)(1)([3-9]{1}\\d{1})(\\d{4})(\\d{4})(\\]|\\\"||)((?!\\d))";String mobileR…...
![](https://img-blog.csdnimg.cn/img_convert/23c7d84d9172d921b5fbbdd2ece4f388.png)
OSCP系列靶场-Esay-Sumo
OSCP系列靶场-Esay-Sumo 总结 getwebshell : nikto扫描 → 发现shellshock漏洞 → 漏洞利用 → getwebshell 提 权 思 路 : 内网信息收集 → 内核版本较老 →脏牛提权 准备工作 启动VPN 获取攻击机IP → 192.168.45.194 启动靶机 获取目标机器IP → 192.168.190.87 信息收…...
![](https://img-blog.csdnimg.cn/img_convert/cf18ac649249f426c9f7f61b1d8f641a.png)
本地电脑搭建web服务器、个人博客网站并发布公网访问 【无公网IP】(1)
文章目录 前言1. 安装套件软件2. 创建网页运行环境 指定网页输出的端口号3. 让WordPress在所需环境中安装并运行 生成网页4. “装修”个人网站5. 将位于本地电脑上的网页发布到公共互联网上 前言 在现代社会,网络已经成为我们生活离不开的必需品,而纷繁…...
![](https://www.ngui.cc/images/no-images.jpg)
Python基础List列表定义与函数
如何定义一个非空的列表? name_list ["liming","xiaohong",15,{"hobby":"basketball"}] 列表的特点: 1.列表是有序的 2.可以存放多个元素 3.每个元素可以是任何数据类型 定义一个空列表 name_list [] 访…...
![](https://www.ngui.cc/images/no-images.jpg)
typeScript--[数据定义]
一.安装ts 1.命令行运行如下命令,全局安装 TypeScript: npm install -g typescript2.安装完成后,在控制台运行如下命令,检查安装是否成功 tsc -V 二.创建ts文件 1.创建一个day01.ts文件,随便在里面码一点代码&…...
![](https://www.ngui.cc/images/no-images.jpg)
【常见相机模型】
常见相机模型 enum class Type {kPinhole 0,kUnifiedProjection 1,kOmni 2, //optimize_on_spherekEqFisheye 3};其余类型optimize_on_plane这4种类型的相机模型具有以下差异: kPinhole (针孔相机模型):这是最基本和常见的相机模型。它假设光线通过…...
![](https://img-blog.csdnimg.cn/c51cee75d3e74e3dbe30457c5b7a77cb.png)
大数据-玩转数据-Flink状态编程(上)
一、Flink状态编程 有状态的计算是流处理框架要实现的重要功能,因为稍复杂的流处理场景都需要记录状态,然后在新流入数据的基础上不断更新状态。 SparkStreaming在状态管理这块做的不好, 很多时候需要借助于外部存储(例如Redis)来手动管理状态, 增加了编…...
![](https://img-blog.csdnimg.cn/3112de0520cf4ecfa2edddefc7a15fd2.png#pic_center)
主动获取用户的ColaKey接口
主动获取用户的ColaKey接口 一、主动获取用户的ColaKey接口二、使用步骤1、接口***重要提示:建议使用https协议,当https协议无法使用时再尝试使用http协议***2、请求参数 三、 请求案例和demo1、请求参数例子(POST请求,参数json格式)2、响应返…...
![](https://img-blog.csdnimg.cn/82baf0b586e94b60ab09989f8e601ef7.png)
C#写一个UDP程序判断延迟并运行在Centos上
服务端 using System.Net.Sockets; using System.Net;int serverPort 50001; Socket server; EndPoint client new IPEndPoint(IPAddress.Any, 0);//用来保存发送方的ip和端口号CreateSocket();void CreateSocket() {server new Socket(AddressFamily.InterNetwork, SocketT…...
![](https://img-blog.csdnimg.cn/ff5aae3bf96f4ae18a43dfa729c22cf4.jpeg)
Kafka核心原理第二弹——更新中
架构原理 一、高吞吐机制:Batch打包、缓冲区、acks 1. Kafka Producer怎么把消息发送给Broker集群的? 需要指定把消息发送到哪个topic去 首先需要选择一个topic的分区,默认是轮询来负载均衡,但是如果指定了一个分区key&#x…...
![](https://img-blog.csdnimg.cn/be3dca31ff50410fa79a60c7eff305a2.png)
巨人互动|游戏出海H5游戏出海规模如何?
H5游戏出海是指将H5游戏推广和运营扩展到国外市场的行为,它的规模受到多个因素的影响。本文小编讲一些关于H5游戏出海规模的详细介绍。 1、市场规模 H5游戏出海的规模首先取决于目标市场的规模。不同国家和地区的游戏市场规模差异很大,有些市场庞大而成…...
![](https://img-blog.csdnimg.cn/img_convert/b6f9d17e543bea3effbef9cd00f2ac57.png)
网站公司简介模板/河南百度推广公司
一、了解机器连接数情况问题:1.2.3.4的sshd的监听端口是22,如何统计1.2.3.4的sshd服务各种连接状态(TIME_WAIT/ CLOSE_WAIT/ ESTABLISHED)的连接数。常见方法:netstat -n | grep 1.2.3.4:22 | awk /^tcp/ {S[$NF]} END {for(a in S) print a,…...
![](https://img-blog.csdnimg.cn/20210901155444662.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5L2O5ZCffua1heWUsQ==,size_18,color_FFFFFF,t_70,g_se,x_16)
建站系统下载 discuz/网络代运营推广
$x array(1,2,3,4,5); var_dump($x);//除去下标在为3底下的值 unset($x[3]); var_dump($x);//除去下标为3的值后面重新排序 $x array_values($x); var_dump($x);...
微信公众号微网站开发/沈阳cms建站模板
先给急着用的人:项目地址:https://github.com/zhuzhenke/invoke-limit-api 针对调用亚马逊AWS服务,对于亚马逊针对每个接口有不同的频率调用限制,设计了这个对调用者可以同步和异步调用的sdk框架,把因为频率限制的错误…...
![](http://www.genwoxue.org/no2/asp_net/image/asp-net_34_01-001.jpg)
网站建设报价套餐/外链屏蔽逐步解除
【知识要点】 (1)初识GridView (2)为GridView加个样式 (3)让GridView自定义表头 【问题提出】 如何把客户以下面列表的形式展示出来呢? 【…...
![](/images/no-images.jpg)
园林景观设计公司需要什么资质/项目优化seo
IOS开发——自定义类归档(继承于自定义类) 我先创建一个新闻基类,对其实现NSCoding协议;再创建一个图组新闻类继承于这个新闻基类,添加一些属性(图组),那么这个自定义的图组新闻类该…...
![](/images/no-images.jpg)
数字营销证书/高级seo
因为看到很多公司招聘需要有linux平台下的开发经验,所以今天在笔记本上装了一个Kubuntu作为以后学习的平台。本文采用的是win7Kubuntu双系统的模式,尽管最后安装成功了,但是中间有很多波折在此记下来以备以后再次发生同样的事情。首先&#x…...