IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Java微服务篇5——Docker -> 正文阅读

[系统运维]Java微服务篇5——Docker

Java微服务篇5——Docker

1、虚拟化技术

虚拟化技术是一种计算机资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储 等,予以抽象、转换后呈现出来。虚拟化技术打破了计算机实体结构间的,不可切割的障碍。使用户可 以比原本的组态更好的方式,来应用这些资源

  • 高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件
  • 软件跨环境迁移问题(代码的水土不服)
    在这里插入图片描述

2、Docker简介

官网: https://www.docker.com

文档地址: https://docs.docker.com

仓库地址: https://hub.docker.com

“Docker is the world’s leading software container platform.“,Docker的定位是一 个应用容器平台

Docker 可以让开发者打包他们的应用,以及依赖包到一个轻量级、可移植的容器中,然后发布到任何 流行的 Linux 机器上。Docker容器是完全使用沙箱机制,相互隔离,性能开销也极低,通俗的讲是服务器中高性能的虚拟机,可以将一台物理机虚拟N多台虚拟机的机器,互相之间隔离,互不影响

特点

  • 标准化交付:Docker将应用打包成标准化单元,用于交付、部署
  • 轻量级:容器及包含了软件运行所需的所有环境,而且非常轻量级
  • 高可靠:容器化的应用程序,可以在任何Linux环境中始终如一的运行
  • 隔离性:容器化的应用程序,具备隔离性,这样多团队可以共享同一Linux系统资源

容器与虚拟机得对比
在这里插入图片描述

特性容器虚拟机
启动秒级分钟级
硬盘使用一般为MB一般为GB
性能接近原生硬件弱鸡
系统支持量单机可跑几十个容器单机几个虚拟OS
运行环境主要在Linux主要在window

3、Docker基本概念

在这里插入图片描述

  • 宿主机:安装Docker守护进程的Linux服务器,称之为宿主机
  • 镜像(Image):Docker 镜像,就相当于是一个 root 文件系统。除了提供容器运行时所需的程序、 库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数
  • 容器(Container):镜像运行之后的实体,镜像和容器的关系,就像是面向对象程序设计中的类和对 象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
  • 仓库(Repository):仓库可看成一个镜像控制中心,用来保存镜像

4、Docker安装

移除之前版本的依赖

yum remove docker \
        docker-client \
        docker-client-latest \
        docker-common \
        docker-latest \
        docker-latest-logrotate \
        docker-logrotate \
        docker-engine

安装依赖库

yum install -y yum-utils

设置镜像

# 国外
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

更新软件包索引

yum makecache fast

安装docker

yum install docker-ce docker-ce-cli containerd.io

测试

[root@VM-8-13-centos ~]# docker -v
Docker version 20.10.8, build 3967b7d

启动docker

systemctl start docker

docker卸载

卸载docker

yum remove docker-ce docker-ce-cli containerd.io

删除镜像

rm -rf /var/lib/docker
rm -rf /var/lib/containerd

阿里云镜像加速(如果感觉下载镜像慢,添加一下镜像加速)
在这里插入图片描述

[root@VM-8-13-centos ~]# mkdir -p /etc/docker
[root@VM-8-13-centos ~]# tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://12sotewv.mirror.aliyuncs.com"]
> }
> EOF
{
  "registry-mirrors": ["https://12sotewv.mirror.aliyuncs.com"]
}
[root@VM-8-13-centos ~]# systemctl daemon-reload
[root@VM-8-13-centos ~]# systemctl restart docker

5、Docker基本命令

5.1、镜像基本命令

5.1.1、查看镜像

# 查看镜像
[root@VM-8-13-centos ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
#--------------------------------------参数--------------------------------------
# -a 显示所有镜像
# -q 只显示id
  • REPOSITORY 镜像的仓库源
  • TAG 镜像的标签
  • IMAGE ID 镜像的id
  • CREATED 镜像的创建时间
  • SIZE 镜像的大

5.1.2、查找镜像

Docker Hub:https://hub.docker.com/

[root@VM-8-13-centos ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   11296     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   4291      [OK]       
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   837                  [OK]
centos/mysql-57-centos7           MySQL 5.7 SQL database server                   91                   
mysql/mysql-cluster               Experimental MySQL Cluster Docker images. Cr…   88                   
centurylink/mysql                 Image containing mysql. Optimized to be link…   59                   [OK]
databack/mysql-backup             Back up mysql databases to... anywhere!         46                   
prom/mysqld-exporter                                                              42                   [OK]
deitch/mysql-backup               REPLACED! Please use http://hub.docker.com/r…   41                   [OK]
tutum/mysql                       Base docker image to run a MySQL database se…   35                   
linuxserver/mysql                 A Mysql container, brought to you by LinuxSe…   31                   
schickling/mysql-backup-s3        Backup MySQL to S3 (supports periodic backup…   30                   [OK]
mysql/mysql-router                MySQL Router provides transparent routing be…   21                   
centos/mysql-56-centos7           MySQL 5.6 SQL database server                   20                   
arey/mysql-client                 Run a MySQL client from a docker container      18                   [OK]
fradelg/mysql-cron-backup         MySQL/MariaDB database backup using cron tas…   16                   [OK]
genschsa/mysql-employees          MySQL Employee Sample Database                  7                    [OK]
yloeffler/mysql-backup            This image runs mysqldump to backup data usi…   7                    [OK]
openshift/mysql-55-centos7        DEPRECATED: A Centos7 based MySQL v5.5 image…   6                    
cytopia/mysql-5.5                 MySQL 5.5 on CentOS 7                           4                    [OK]
devilbox/mysql                    Retagged MySQL, MariaDB and PerconaDB offici…   3                    
ansibleplaybookbundle/mysql-apb   An APB which deploys RHSCL MySQL                2                    [OK]
jelastic/mysql                    An image of the MySQL database server mainta…   2                    
widdpim/mysql-client              Dockerized MySQL Client (5.7) including Curl…   1                    [OK]
monasca/mysql-init                A minimal decoupled init container for mysql    0
#--------------------------------------参数--------------------------------------
# --filter=STARS=3000 搜索镜像STARS大于3000的

5.1.3、下载镜像

# docker pull mysql不加版本默认安装最新版得
[root@VM-8-13-centos ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
e1acddbe380c: Pull complete 
bed879327370: Pull complete 
03285f80bafd: Pull complete 
ccc17412a00a: Pull complete 
1f556ecc09d1: Pull complete 
adc5528e468d: Pull complete 
1afc286d5d53: Pull complete 
4d2d9261e3ad: Pull complete 
ac609d7b31f8: Pull complete 
53ee1339bc3a: Pull complete 
b0c0a831a707: Pull complete 
Digest: sha256:7cf2e7d7ff876f93c8601406a5aa17484e6623875e64e7acc71432ad8e0a3d7e
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
[root@VM-8-13-centos ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
mysql        5.7       6c20ffa54f86   2 days ago   448MB

5.1.4、删除容器

[root@VM-8-13-centos ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
tomcat       latest    266d1269bb29   19 hours ago   668MB
mysql        5.7       6c20ffa54f86   2 days ago     448MB
[root@VM-8-13-centos ~]# docker rmi 266d1269bb29
Untagged: tomcat:latest
Untagged: tomcat@sha256:1af502b6fd35c1d4ab6f24dc9bd36b58678a068ff1206c25acc129fb90b2a76a
Deleted: sha256:266d1269bb298d6a3259fc2c2a9deaedf8be945482a2d596b64f73343289a56c
Deleted: sha256:439d07aeab2ffb9df1addbc02dc38a0fa9464f6021ffcf2b98c4a1a124e69b27
Deleted: sha256:75141848bd8c6035bd8718875b209c25246548d6e157291e516ff8b1f24c2ce4
Deleted: sha256:4574961f407fe7376fdda09ea06f117f747fc97fdb99f688a7f05a0541a14628
Deleted: sha256:ea393406b6bdae6926be0e47ccd9567ceef45fbe4df33b411eb227596ca94efa
Deleted: sha256:7852f1c402046c585e34532fdf1f88ec5fa0fa24e502b0b6a05b6019c29215a6
Deleted: sha256:12c634660480a3693741588dd6e0792ac0954eef0fcad48e7c4c6781e4b9248b
Deleted: sha256:a84b4e945affc390a49fe16b1e47251671dfc628c111de3a4c5b2e0b09d2649a
Deleted: sha256:4bc4490d37ab1d9664581bcbb9c198cd5c4e7eaf0c5b1607c5ec44a11eaf922f
Deleted: sha256:21b5c6b4b2751d9e70a183749330b4b9e11687a0cb4995f33ee5812846128294
Deleted: sha256:c2ddc1bc2645ab5d982c60434d8bbc6aecee1bd4e8eee0df7fd08c96df2d58bb
#--------------------------------------参数--------------------------------------
# 删除多个容器
# docker rmi -f 容器id 容器id 容器id 容器id
# 删除全部的容器
# docker rmi -f $(docker images -aq)

5.2、容器命令

安装一个centos镜像

[root@VM-8-13-centos ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
7a0437f04f83: Pull complete 
Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest

5.2.1、新建容器并启动

[root@VM-8-13-centos /]# docker run -it centos /bin/bash
[root@ff0c9c6e6547 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@ff0c9c6e6547 /]# exit
exit
[root@VM-8-13-centos /]# ls
bin  boot  data  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
#--------------------------------------参数--------------------------------------
# --name="Name" 指定容器名称
# -d 后台方式运行
# -it 使用交互方式运行,进入容器查看内容
# -p 指定容器的端口
#	-p ip:主机端口:容器端口
#	-p 主机端口:容器端口(常用)
#	p 容器端口
#----------------------------------centos内部命令---------------------------------
# exit 退出容器(停止运行)
# ctrl+p+q退出容器(不停止运行)

5.2.2、查看容器

# 查看运行中的容器
[root@VM-8-13-centos /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
# 查看所有的容器
[root@VM-8-13-centos /]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES
ff0c9c6e6547   centos    "/bin/bash"   3 minutes ago   Exited (0) 2 minutes ago             focused_hamilton
#--------------------------------------参数--------------------------------------
# -a 列出当前正在运行的容器+历史运行的容器
# -n=x 列出最近的x个容器
# -q 只显示容器编号

5.2.3、删除容器

# docker rm -f $(docker ps -aq) 强制删除所有容器
[root@VM-8-13-centos /]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES
ff0c9c6e6547   centos    "/bin/bash"   3 minutes ago   Exited (0) 2 minutes ago             focused_hamilton
[root@VM-8-13-centos /]# docker rm ff0c9c6e6547
ff0c9c6e6547
[root@VM-8-13-centos /]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

5.2.4、容器启动与停止

# 启动容器
docker start 容器id
# 重启容器
docker restart 容器id
# 停止容器
docker stop 容器id
# 强制停止容器
docker ki11 容器id
# 后台启动容器,只加-d仍会停止,因为没有前台进程
docker run -id centos /bin/bash

5.2.5、查看容器进程信息

[root@VM-8-13-centos /]# docker run -id centos /bin/bash
0134a448bfff7da25e3b0afe3b7b188ae2eba643148fb7eb0da9f5ac4ddead8c
[root@VM-8-13-centos /]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
0134a448bfff   centos    "/bin/bash"   12 seconds ago   Up 11 seconds             upbeat_ishizaka
[root@VM-8-13-centos /]# docker top 0134a448bfff
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                12561               12543               0                   23:56               ?                   00:00:00            /bin/bash

5.2.6、查看容器元数据

[root@VM-8-13-centos /]# docker inspect 0134a448bfff
[
    {
        "Id": "0134a448bfff7da25e3b0afe3b7b188ae2eba643148fb7eb0da9f5ac4ddead8c",
        "Created": "2021-08-19T15:56:01.562379627Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 12561,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-08-19T15:56:01.850514701Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",
        "ResolvConfPath": "/var/lib/docker/containers/0134a448bfff7da25e3b0afe3b7b188ae2eba643148fb7eb0da9f5ac4ddead8c/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/0134a448bfff7da25e3b0afe3b7b188ae2eba643148fb7eb0da9f5ac4ddead8c/hostname",
        "HostsPath": "/var/lib/docker/containers/0134a448bfff7da25e3b0afe3b7b188ae2eba643148fb7eb0da9f5ac4ddead8c/hosts",
        "LogPath": "/var/lib/docker/containers/0134a448bfff7da25e3b0afe3b7b188ae2eba643148fb7eb0da9f5ac4ddead8c/0134a448bfff7da25e3b0afe3b7b188ae2eba643148fb7eb0da9f5ac4ddead8c-json.log",
        "Name": "/upbeat_ishizaka",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/011bb6cfa81323e3f8be510b63adf11dcf308d20853e0816d7578e280d83bc45-init/diff:/var/lib/docker/overlay2/1b7f009ac9f6a4e0335ccf29ece6e8bca4690c893c704dab67ecd558cf10040a/diff",
                "MergedDir": "/var/lib/docker/overlay2/011bb6cfa81323e3f8be510b63adf11dcf308d20853e0816d7578e280d83bc45/merged",
                "UpperDir": "/var/lib/docker/overlay2/011bb6cfa81323e3f8be510b63adf11dcf308d20853e0816d7578e280d83bc45/diff",
                "WorkDir": "/var/lib/docker/overlay2/011bb6cfa81323e3f8be510b63adf11dcf308d20853e0816d7578e280d83bc45/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "0134a448bfff",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": true,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "Image": "centos",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20201204",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "0fcfc03c26b1cfb22f585e9e9bb4d03f1e81cf00d458ec855ba90759b8583f9b",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/0fcfc03c26b1",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "70eb870344f07dc82ed4e6139dbb773dd037da4405aaa5b13e08d8290a3fafcd",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "e37ffb6ce5ddd26628b1a0adf06e212600041884b1ef544cba16278db6acfb07",
                    "EndpointID": "70eb870344f07dc82ed4e6139dbb773dd037da4405aaa5b13e08d8290a3fafcd",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]

5.2.7、进入运行中的容器

# docker exec -it 容器id /bin/bash 开启新的终端
[root@VM-8-13-centos /]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
0134a448bfff   centos    "/bin/bash"   9 minutes ago   Up 9 minutes             upbeat_ishizaka
[root@VM-8-13-centos /]# docker attach 0134a448bfff
exit

5.2.8、文件拷贝

[root@VM-8-13-centos ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
0134a448bfff   centos    "/bin/bash"   22 minutes ago   Up 12 minutes             upbeat_ishizaka
[root@VM-8-13-centos ~]# docker exec -it 0134a448bfff  /bin/bash
[root@0134a448bfff /]# cat > docker.txt << eof
> hello,docker!
> eof
[root@0134a448bfff /]# exit
exit
[root@VM-8-13-centos ~]# docker cp 0134a448bfff:/docker.txt /root
[root@VM-8-13-centos ~]# ls
docker.txt
[root@VM-8-13-centos ~]# cat docker.txt 
hello,docker!
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 15:29:39  更:2021-08-20 15:31:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年9日历 -2024/9/28 6:17:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码