Docker简单快速入门
1. 安装Docker
基于 Ubuntu 24.04 LTS 安装Docker 。
# 更新包索引并安装依赖包
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common# 添加Docker的官方GPG密钥并存储在正确的位置
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# 添加Docker的APT源(使用阿里云的镜像源)
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 安装Docker
sudo apt-get install -y docker-ce docker-ce-cli containerd.io# 安装后查看docker版本
docker -v# 运行测试容器
docker run hello-world# 配置Docker非root用户运行(可以查看用户管理相关指令)
sudo usermod -aG docker $USER# 启动一个新的shell会话,更改活动的用户组,让新的用户组在当前会话中生效
newgrp docker
2. 用户管理相关指令
2.1 添加用户到 Docker 组
sudo usermod -aG docker $USER
2.2 查看 Docker 组中的用户
getent group docker
2.3 从 Docker 组中移除用户
sudo gpasswd -d $USER docker
2.4 检查用户所属组
groups $USER
注:$USER表示当前登录的用户名称
3. 查看Docker信息
docker info
Client: Docker Engine - Community
Version: 27.0.3 # 客户端的 Docker 版本
Context: default # 当前使用的 Docker 上下文
Debug Mode: false # 客户端调试模式是否启用
Plugins: # 客户端插件信息
buildx: Docker Buildx (Docker Inc.) # Docker Buildx 插件
Version: v0.15.1 # Buildx 插件版本
Path: /usr/libexec/docker/cli-plugins/docker-buildx # Buildx 插件路径
compose: Docker Compose (Docker Inc.) # Docker Compose 插件
Version: v2.28.1 # Compose 插件版本
Path: /usr/libexec/docker/cli-plugins/docker-compose # Compose 插件路径Server: # 服务器部分,显示 Docker 服务器的状态和配置信息
Containers: 0 # 服务器上存在的总容器数
Running: 0 # 当前正在运行的容器数
Paused: 0 # 当前暂停的容器数
Stopped: 0 # 已停止的容器数
Images: 0 # 服务器上存在的总镜像数
Server Version: 27.0.3 # Docker 服务器版本
Storage Driver: overlay2 # 使用的存储驱动类型
Backing Filesystem: extfs # 存储驱动的底层文件系统
Supports d_type: true # 文件系统是否支持 d_type(目录类型)
Using metacopy: false # 是否启用了元数据拷贝功能
Native Overlay Diff: true # 是否使用本地 Overlay 差异
userxattr: false # 是否启用用户扩展属性
Logging Driver: json-file # 使用的日志驱动类型
Cgroup Driver: systemd # 使用的 cgroup 管理器
Cgroup Version: 2 # 使用的 cgroup 版本
Plugins: # 插件信息
Volume: local # 可用的卷插件
Network: bridge host ipvlan macvlan null overlay # 可用的网络插件
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog # 可用的日志插件
Swarm: inactive # Swarm 模式的状态
Runtimes: runc io.containerd.runc.v2 # 可用的运行时
Default Runtime: runc # 默认的运行时
Init Binary: docker-init # 使用的初始化二进制文件
containerd version: 2bf793ef6dc9a18e00cb12efb64355c2c9d5eb41 # containerd 版本
runc version: v1.1.13-0-g58aa920 # runc 版本
init version: de40ad0 # init 版本
Security Options: # 启用的安全选项
apparmor # AppArmor 安全选项
seccomp # Seccomp 安全选项
Profile: builtin # 使用的 Seccomp 配置文件
cgroupns # cgroup 命名空间安全选项
Kernel Version: 6.8.0-31-generic # 操作系统内核版本
Operating System: Ubuntu 24.04 LTS # 操作系统及其版本
OSType: linux # 操作系统类型
Architecture: x86_64 # 系统架构类型
CPUs: 2 # 可用的 CPU 数量
Total Memory: 3.778GiB # 总内存大小
Name: liber-VMware-Virtual-Platform # 机器名称
ID: 506c4663-2c48-4b6e-a3a2-7868e2eb6990 # Docker 守护进程的唯一 ID
Docker Root Dir: /var/lib/docker # Docker 根目录
Debug Mode: false # Docker 守护进程调试模式是否启用
Experimental: false # 是否启用了实验特性
Insecure Registries: # 配置的不安全镜像仓库
127.0.0.0/8 # 允许本地网络范围内的不安全仓库
Live Restore Enabled: false # 是否启用了 Live Restore 功能(容器在 Docker 守护进程重启时保持运行)
4. 创建Nginx容器
4.1 配置镜像加速器
4.1.1 获取阿里云加速地址


4.1.2 编辑Docker配置文件
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
参考文献:配置镜像加速器_容器镜像服务(ACR)-阿里云帮助中心
4.2 拉取Nginx镜像
docker pull nginx
4.3 运行 Nginx 容器
docker run --name mynginx -d -p 80:80 nginx
5. 镜像相关
5.1 查看本地所有镜像
docker images
例:
liber@liber-VMware-Virtual-Platform:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 2 years ago 141MBREPOSITORY:镜像的名称或存储库的名称。这个名称标识了镜像的来源或用途。
TAG: 镜像的标签,用于标识镜像的不同版本。
IMAGE ID: 镜像的唯一标识符。Docker 使用这个标识符来唯一地识别镜像。
CREATED: 镜像的创建时间,表示这个镜像在什么时候被构建。
SIZE: 镜像的大小,表示镜像占用的磁盘空间。
5.2 查看特定镜像的详细信息
docker inspect <image_id>
liber@liber-VMware-Virtual-Platform:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 2 years ago 141MB
liber@liber-VMware-Virtual-Platform:~$ docker inspect 605c77e624dd
5.3 拉取镜像
docker pull <repository>:<tag>
例:
liber@liber-VMware-Virtual-Platform:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 2 years ago 141MB
liber@liber-VMware-Virtual-Platform:~$ docker pull nginx:latest
5.4 标记镜像
docker tag <image_id> <repository>:<tag>
例:docker tag 605c77e624dd mynginx:v1
5.5 查看镜像的构建历史
docker history <image_id>
5.6 删除镜像
docker rmi <image_id>
例:
liber-VMware-Virtual-Platform:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 2 years ago 141MB
liber@liber-VMware-Virtual-Platform:~$ docker rmi 605c77e624dd
Error response from daemon: conflict: unable to delete 605c77e624dd (cannot be forced) - image is being used by running container fb2661b753dd #删除的容器在运行需要先停止
liber@liber-VMware-Virtual-Platform:~$ docker stop mynginx #停止容器
mynginxliber@liber-VMware-Virtual-Platform:~$ docker rmi 605c77e624dd #再次在线删除指令
Error response from daemon: conflict: unable to delete 605c77e624dd (must be forced) - image is being used by stopped container fb2661b753dd #镜像正在被一个停止的容器引用。在这种情况下,你需要先删除这个停止的容器,然后再删除镜像。liber@liber-VMware-Virtual-Platform:~$ docker ps -a #列出所有容器,包括停止的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb2661b753dd nginx "/docker-entrypoint.…" 41 minutes ago Exited (0) 7 minutes ago mynginx
liber@liber-VMware-Virtual-Platform:~$ docker rm fb2661b753dd #删除容器
fb2661b753dd
liber@liber-VMware-Virtual-Platform:~$ docker rmi 605c77e624dd #移除镜像
Untagged: nginx:latest
Untagged: nginx@sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
# 镜像的强制删除
docker rmi -f <image_id>
5.7 导出和导入镜像
5.7.1 导出镜像为tar文件
docker save -o <path_to_tar> <image_id>
例:
liber@liber-VMware-Virtual-Platform:~$ docker save -o nginx.tar 605c77e624dd
liber@liber-VMware-Virtual-Platform:~$ ls
公共 模板 视频 图片 文档 下载 音乐 桌面 nginx.tar snap
5.7.2 导入tar文件为镜像
docker load -i <path_to_tar>
6. 容器相关
常用选项
-d: 后台运行容器,并返回容器 ID。-i: 保持容器的标准输入(stdin)打开,即使没有附加到容器上。-t: 为容器分配一个伪终端,使你能够在容器内运行命令行界面。通常与-i一起使用。--name <container_name>: 为容器指定一个名称。-e <ENV_VAR>=<value>: 设置环境变量。-p <host_port>:<container_port>: 端口映射,将主机的端口映射到容器的端口。-v <host_dir>:<container_dir>: 卷挂载,将主机目录或文件挂载到容器的目录或文件。--rm: 在容器停止后自动删除容器。--network <network_name>: 指定容器连接到的网络。--link <name_or_id>:alias: 添加链接到另一个容器。
6.1 创建新的容器
6.1.1 创建后台运行容器
docker run --name <container_name> -d -p <host_port>:<container_port> <image>
#使用
docker run命令来创建并运行一个新的容器docker run --name mynginx -d -p 80:80 nginx
--name mynginx:指定容器的名称为mynginx。-d:让容器在后台运行(分离模式)。-p 80:80:将主机的 80 端口映射到容器的 80 端口。nginx:使用的镜像名称。
6.1.2 创建运行交互式容器
docker run -it [options] <image> [command]
[options] 是一个占位符,表示你可以在这里添加其他选项来配置容器的运行环境。
以下是一些常用的选项:
--name <container_name>: 为容器指定一个名称,这样你可以通过名称而不是容器 ID 来引用容器。
-d: --detach,让容器在后台运行,并返回容器 ID。使用这个选项可以让容器在后台继续运行,而不阻塞当前终端。
-p <host_port>:<container_port>: 端口映射,将主机的端口映射到容器的端口
-v <host_dir>:<container_dir>: 卷挂载,将主机目录或文件挂载到容器的目录或文件。
-e <ENV_VAR>=<value>: 设置环境变量,在容器运行时配置。
--rm: 在容器停止后自动删除容器。
--network <network_name>: 指定容器连接到的网络。
--link <name_or_id>:alias: 添加链接到另一个容器。
例子:
liber@liber-VMware-Virtual-Platform:~$ docker run -it --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:latest /bin/bash
- docker run: 创建并运行一个新的容器。
- -it: 交互模式运行容器并分配伪终端。
- --name mysql: 将容器命名为mysql。
- -e MYSQL_ROOT_PASSWORD=123456: 设置环境变量,指定 MySQL 的 root 用户密码。
- mysql:latest: 使用官方 MySQL 镜像的最新版本。
- /bin/bash: 在容器启动时运行的命令。
使用官方的 MySQL 启动命令:docker-entrypoint.sh mysqld
连接到运行中的 MySQL 容器:
liber@liber-VMware-Virtual-Platform:~$ docker exec -it mysql mysql -uroot -p #进入一个正在运行的容器
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
6.2 查看当前运行的容器
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
注解:
CONTAINER ID: 容器的唯一标识符。
IMAGE: 用于创建容器的镜像名称。
COMMAND: 容器启动时运行的命令。
CREATED: 容器创建的时间。STATUS(通常包含以下5种): 容器的当前状态,包括运行时间。
1. Up: 容器正在运行。
2. Exited: 容器已停止运行。
3. Created: 容器已创建但未启动。
4. Paused: 容器已暂停。
5. Restarting:容器正在重启。PORTS: 容器暴露的端口信息。
NAMES: 容器的名字,如果没有指定名字,Docker会自动生成一个随机名字。
6.3 查看所有容器(包括停止的容器)
docker ps -a
6.4 查看最近创建的容器
docker ps -l
6.5 查看容器日志
docker logs <CONTAINER ID>
例:
liber@liber-VMware-Virtual-Platform:~$ docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb2661b753dd nginx "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp mynginx
liber@liber-VMware-Virtual-Platform:~$ docker logs fb2661b753dd
/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: 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/07/20 00:48:50 [notice] 1#1: using the "epoll" event method
2024/07/20 00:48:50 [notice] 1#1: nginx/1.21.5
6.6 检查容器状态
docker inspect --format '{{.State.Status}}' <container_id>
例:
liber@liber-VMware-Virtual-Platform:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb2661b753dd nginx "/docker-entrypoint.…" 5 minutes ago Up 5 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp mynginx
liber@liber-VMware-Virtual-Platform:~$ docker inspect --format '{{.State.Status}}' fb2661b753dd
running
6.7 启动容器
docker start <container-name>
6.8 停止容器
docker stop <container-name>
6.9 删除容器
docker rm <container-name>
6.10 访问容器
docker exec -it <container_name_or_id> <command>
docker exec: 在一个正在运行的容器中执行命令。-it: 交互模式,分配一个伪终端。<container_name_or_id>: 目标容器的名称或 ID。<command>: 要在容器中执行的命令(如/bin/bash)。
7. 网络配置
7.1 查看所有网络
docker network ls
例:
liber@liber-VMware-Virtual-Platform:~$ docker network ls
NETWORK ID NAME DRIVER SCOPE
e4a84feb27d8 bridge bridge local
21db5cf6fb61 host host local
b86a38a046d2 none null localNETWORK ID: 网络的唯一标识符。Docker使用这个标识符来唯一地识别网络。
NAME: 网络的名称。用户可以使用这个名称来引用和管理网络。
DRIVER: 网络驱动程序,用于管理网络的实现方式。常见的驱动程序包括 bridge、host、null 等。
SCOPE: 网络的作用范围,表示网络的可见性范围。local 表示网络仅在本地Docker守护进程上可见。
7.2 查看特定网络
docker network inspect <network_id>
例:
liber@liber-VMware-Virtual-Platform:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 2 years ago 141MB
liber@liber-VMware-Virtual-Platform:~$ docker inspect 605c77e624dd
7.3 创建网络
docker network create mynetwork
7.4 连接网络
在启动容器时,通过 --network 选项将其连接到自定义网络。
liber@liber-VMware-Virtual-Platform:~$ docker run --name mynginx --network mynetwork -d -p 80:80 nginx
如果容器已经在运行,可以使用 docker network connect 命令将其连接到自定义网络。
docker network connect mynetwork mynginx
7.5 访问网络
liber@liber-VMware-Virtual-Platform:~$ docker exec -it mynginx /bin/bash #进入容器
root@0004faebf897:/# curl mynginx:80 #访问网络
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
8. 数据管理
8.1 数据卷
数据卷是 Docker 管理的专用目录,存储在主机文件系统中,但 Docker 提供了对其的完全管理。
8.1.1 创建数据卷
数据卷是 Docker 管理的专用目录,存储在主机文件系统中,但 Docker 提供了对其的完全管理。
docker volume create myvolume
8.1.2 查看数据卷
docker volume ls
liber@liber-VMware-Virtual-Platform:~$ docker volume ls
DRIVER VOLUME NAME
local 3e257cc31097122d7dbd2341b5610853473a98b71708e676099648c49903b65b
local myvolume
8.1.3 查详细信息
docker volume inspect myvolume
liber@liber-VMware-Virtual-Platform:~$ docker volume inspect myvolume
[
{
"CreatedAt": "2024-07-20T15:37:41+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/myvolume/_data",
"Name": "myvolume",
"Options": null,
"Scope": "local"
}
]
8.1.4 使用数据卷
将数据卷挂载到容器中,使得容器可以持久化存储数据。
docker run -d -p 80:80 -v myvolume:/usr/share/nginx/html nginx
-v myvolume:/usr/share/nginx/html:将数据卷myvolume挂载到容器的/usr/share/nginx/html目录。
8.1.5 备份数据卷
将数据卷中的数据备份到主机目录。
docker run --rm -v myvolume:/volume -v $(pwd):/backup mginx tar cvf /backup/backup.tar /volume
--rm:容器在退出时自动删除。-v myvolume:/volume:将数据卷myvolume挂载到容器的/volume目录。-v $(pwd):/backup:将当前主机目录挂载到容器的/backup目录。tar cvf /backup/backup.tar /volume:将/volume目录(即数据卷内容)打包为backup.tar并存储在主机的当前目录。liber@liber-VMware-Virtual-Platform:~$ docker run --rm -v myvolume:/volume -v $(pwd):/backup nginx tar cvf /backup/backup.tar /volume
tar: Removing leading `/' from member names
/volume/
/volume/50x.html
/volume/index.html
liber@liber-VMware-Virtual-Platform:~$ ls
公共 模板 视频 图片 文档 下载 音乐 桌面 backup.tar nginx_latest.tar snap
8.1.6 恢复数据卷
docker run --rm -v myvolume:/volume -v $(pwd):/backup nginx bash -c "cd /volume && tar xvf /backup/backup.tar --strip 1"
tar xvf /backup/backup.tar --strip 1:将backup.tar文件解压到/volume目录中,--strip 1选项用于去除路径中的第一级目录。liber@liber-VMware-Virtual-Platform:~$ docker run --rm -v myvolume:/volume -v $(pwd):/backup nginx bash -c "cd /volume && tar xvf /backup/backup.tar --strip 1"
volume/50x.html
volume/index.htmlliber@liber-VMware-Virtual-Platform:~$ docker run -it --name new_nginx -v myvolume:/volume -p 81:82 nginx /bin/bash #运行并挂载数据卷
root@14c73202ba4f:/# cd volume #进入容器后,访问挂载目录
root@14c73202ba4f:/volume# ls
50x.html index.html
8.2 绑定挂载
绑定挂载将主机文件系统中的文件或目录挂载到容器中,可以在容器和主机之间共享数据。
docker run -v /path/on/host:/path/in/container <image> <command>
/path/on/host:主机上的路径,是你希望挂载到容器内的文件或目录的路径。
/path/in/container:容器内的路径,是你希望将主机文件或目录挂载到容器内的文件或目录的路径。
例子:
root@liber-VMware-Virtual-Platform:/opt# mkdir -p /opt/nginx
root@liber-VMware-Virtual-Platform:/opt# echo "Docker Nginx" > /opt/nginx/index.html
root@liber-VMware-Virtual-Platform:/opt# docker run -d -p 80:80 -v /opt/nginx:/usr/share/nginx/html nginx
9befe205cddd3719993bd8bef47eb4ced0b6408cd7142f409a21287b766f19e1
root@liber-VMware-Virtual-Platform:/opt# echo "Update Docker Nginx" > /opt/nginx/index.html可以访问80端口的地址检验实时生效。
9. Docker Compose
9.1 安装Docker Compose
# 安装docker-compose
sudo wget "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -O /usr/local/bin/docker-compose# 赋予执行文件
sudo chmod +x /usr/local/bin/docker-compose# 验证安装
docker-compose --version
9.2 基本命令
9.2.1 启动服务
docker-compose up
9.2.2 后台启动服务
docker-compose up -d
9.2.3 停止服务
docker-compose down
9.2.4 查看服务日志
docker-compose logs
9.2.5 查看运行中的容器
docker-compose ps
9.2.6 构建或重新构建服务
docker-compose build
9.3 简单案例
9.3.1 项目结构:

9.3.2 docker-compose.yml
version: '3.8' # 指定 docker-compose 文件的版本services: # 定义应用的各个服务web: # 服务名称image: nginx:latest # 使用的镜像ports:- "80:80" # 端口映射volumes:- ./:/usr/share/nginx/html # 绑定挂载
volumes: # 定义数据卷db_data:
9.3.3 启动结果
liber@liber-VMware-Virtual-Platform:/opt/web$ docker-compose up
[+] Running 1/0
✔ Container web-web-1 Created 0.0s
Attaching to web-web-1
web-web-1 | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
web-web-1 | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
web-web-1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
web-web-1 | 10-listen-on-ipv6-by-default.sh: info: IPv6 listen already enabled
web-web-1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
web-web-1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
web-web-1 | /docker-entrypoint.sh: Configuration complete; ready for start up
web-web-1 | 2024/07/20 09:49:57 [notice] 1#1: using the "epoll" event method
web-web-1 | 2024/07/20 09:49:57 [notice] 1#1: nginx/1.21.5
web-web-1 | 2024/07/20 09:49:57 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6)
web-web-1 | 2024/07/20 09:49:57 [notice] 1#1: OS: Linux 6.8.0-31-generic
web-web-1 | 2024/07/20 09:49:57 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
web-web-1 | 2024/07/20 09:49:57 [notice] 1#1: start worker processes
web-web-1 | 2024/07/20 09:49:57 [notice] 1#1: start worker process 24
web-web-1 | 2024/07/20 09:49:57 [notice] 1#1: start worker process 25

10. 总结
通过Ubuntu 24.04 LTS完成Docker 和Docker-Compose安装,以及实现docker的简单入门。需要注意Docker和Docker之间的版本兼容性。
相关文章:
Docker简单快速入门
1. 安装Docker 基于 Ubuntu 24.04 LTS 安装Docker 。 # 更新包索引并安装依赖包 sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common# 添加Docker的官方GPG密钥并存储在正确的位置 curl -fsSL https://mirror…...
【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 图像物体的边界(200分) - 三语言AC题解(Python/Java/Cpp)
🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…...
【无人机】低空经济中5G RedCap芯片的技术分析报告
1. 引言 图一. 新基建:低空经济 低空经济作为一种新兴的经济形态,涵盖了无人机、电动垂直起降飞行器(eVTOL)、低空物流、空中交通管理等多个领域。随着5G网络的普及和演进,5G RedCap(Reduced Capability&a…...
MongoDB教程(二十一):MongoDB大文件存储GridFS
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言一、GridFS…...
vue 搜索框
效果 创建搜索组件: 在Vue项目中,首先需要创建一个搜索组件。这个组件通常包含一个输入框和一个搜索按钮。使用v-model指令将输入框与组件的数据属性(如searchKeyword)进行双向绑定,以便获取用户输入的关键词。处理搜索…...
国科大作业考试资料-人工智能原理与算法-2024新编-第五次作业整理
1、本题以井字棋(圈与十字游戏)为例练习博弈中的基本概念。定义X_n为恰好有n个X而没有O 的行、列或者对角线的数目。同样O_n为正好有n 个O的行、列或者对角线的数目。效用函数给 X_3=1的棋局+1, 给O_3=1的棋局-1。所有其他终止状态效用值为0。对于非终止状态,使用线性的 …...
C++五子棋(未做完,但能玩,而且还不错)
代码放下面了,关于步骤介绍的我以后再完善一下。 #include<bits/stdc.h> #include<cstdio> #include<cstdlib> #include<ctime> #include<windows.h> #include<stdlib.h> #include<time.h> #define random(x) (rand()%x…...
二分查找代码详解
二分查找代码实现 以下是完整的代码和解释: #include <stdio.h>int binarySearch(int arr[], int length, int target) {int left 0;int right length - 1;while (left < right) {int mid left (right - left) / 2; // 防止溢出if (arr[mid] target…...
uniapp的h5,读取本地txt带标签的文件
效果图 使用的回显的标签是u-parse,下面的网址讲了这个标签的相关 https://www.cnblogs.com/huihuihero/p/12978903.html 导入此插件 https://ext.dcloud.net.cn/plugin?id364 使用 uni.request({// 本地文件url: "/static/互联网医院医师端用户协议.txt…...
韦东山嵌入式linux系列-具体单板的按键驱动程序(查询方式)
1 GPIO 操作回顾 (1)使能模块; (2)设置引脚的模式(工作于GPIO模式); (3)设置GPIO本身(输入/输出); (4&…...
如何使用 API list 极狐GitLab 群组中的镜像仓库?
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署…...
PHP设计模式-简单工厂模式
核心: 一、定义一个接口类里面写规定好的方法。 interface Message{public function send(array $params);public function getMessage(array $params);public function getCode(array $params);} 二、定义产品类 、产品类继承接口类 class AlliYunSms implements …...
C语言航空售票系统
以下是系统部分页面 以下是部分源码,需要源码的私信 #include<stdio.h> #include<stdlib.h> #include<string.h> #define max_user 100 typedef struct ft {char name[50];//名字char start_place[50];//出发地char end_place[50];//目的地char …...
Oracle 19c打Datapatch数据补丁报错处理
Oracle 19c打Datapatch数据补丁报错处理 错误分析重新编译补丁验证安装完数据库补丁后,在数据补丁的步骤收到以下报错: Connecting to database...OK Gathering database info...done Bootstrapping registry and package to current versions...done Determining current s…...
Linux shell编程学习笔记66:ping命令 超详细的选项说明
0 前言 网络信息是电脑网络信息安全检查中的一块重要内容,Linux和基于Linux的操作系统,提供了很多的网络命令,今天我们研究最常用的ping命令。 1 ping命令 的功能、格式和选项说明 1.1 ping命令 的功能 简单来说, ping 命令 会…...
SSL/TLS和SSL VPN
1、SSL/TLS SSL安全套接字层:是一种加密协议,用于在网络通信中建立安全连接。它在应用层和传输层(TCP/IP)之间提供数据加密、服务器身份验证以及信息完整性验证 SSL只保护TCP流量,不保护UDP协议 TLS:传输层…...
浅谈WebSerice
一. 什么是WebService Web Service也称为web服务,它是一种跨编程语言和操作系统平台的远程调用技术。Web Service采用标准的SOAP协议传输(SOAP:Simple Object Access Protocol简单对象访问协议,soap属于w3c标准。并且soap协议是基…...
linux快速入门-学习笔记
linux快速入门-学习笔记 第一章:Linux系统概念及命令学习Linux系统基本概念命令终端介绍命令格式介绍Linux系统辨别目录与文件的方法通过文件详细属性辨别ls 查看目录/文件命令Linux 系统下的归属关系命令行编辑技巧Linux 基本权限的类别课后练习 第二章:…...
科普文:5种Linux下软件部署方式说明
在Linux世界里,高效、灵活地安装和管理软件是每个系统管理员和开发者的基本功。从传统的RPM包管理,到便捷的YUM软件仓库,再到颠覆性的Docker容器技术,Snap,源码安装,每一种方法都有其独到之处,适…...
Redisson中的RBlockingQueue的使用场景及例子
Redisson 的 RBlockingQueue 是一个实现了 Java BlockingQueue 接口的分布式队列,它可以用于在分布式系统中实现生产者-消费者模式。RBlockingQueue 提供了线程安全的阻塞队列操作,允许生产者在队列满时阻塞,消费者在队列空时阻塞,…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
WEB3全栈开发——面试专业技能点P7前端与链上集成
一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...
