文章目录

  • 一、docker 安装
    • 0 、一些信息
    • 1、yum安装
    • 2、开机启动
    • 3、免sudo执行docker命令
    • 4、命令补齐, 镜像加速
    • 5、其他: apt-get安装
  • 二、docker-compose安装
  • 三、docker-compose
    • 1、docker-compose 常用命令
    • 2、运行jar包
      • 2.1、启动
      • 2.2、停止
      • 2.3、日志
      • 2.4、tsdp-portal.yml
    • 3、mysql yml示例
    • 4、yml文件属性一览
    • 5、docker-compose格式对应docker版本
  • 四、docker
    • 1、运行tomcat
      • 1.1、 拉取tomcat镜像
      • 1.2、 启动
      • 1.3、进入容器目录
    • 2、打包docker为image
    • 3、Dockerfile
    • 4、docker下运行centos
    • 5、在服务器的docker中创建私有仓库
    • 6、docker命令
      • 6.1、常用命令
        • 删除镜像名称包含hello的镜像ID
        • 查找镜像名称包含hello的镜像ID
        • Centos7安装Docker
        • 设置为开机启动
        • 查看docker版本
        • 拉取镜像
        • 查看镜像, Docker镜像保存在/var/lib/docker目录下
        • 运行镜像
        • 删除镜像
        • 删除容器
        • 删除所有停止的容器
        • 查看正运行容器
        • 查看所有容器(已停止、创建、运行)
        • 启动、停止、重启容器命令:
        • 镜像重命名
        • 容器重命名
        • 进入容器,后台启动一个容器后,如果想进入容器,可以使用attach命令:
        • 查看当前系统Docker信息
        • 查看容器信息
        • 查找镜像,查找Docker Hub上名称含nginx的镜像
        • 保存镜像为压缩包文件
        • 加载镜像文件
    • 7、启动镜像
    • 8、日志

一、docker 安装

0 、一些信息

默认情况下,物理机下创建的docker容器的空间是10G,内存是物理机内存

1、yum安装

# 1. 查看安装版本
docker version
# 2. 删除旧版本
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
# 3. 安装工具包
sudo yum install -y yum-utils
# 4. 添加docker源
sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
# 5. 搜索docker软件列表
sudo yum list docker-ce --showduplicates | sort -r
# 6. 安装最新docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 6. 安装指定版本docker
# sudo yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io -y# 7. 设置默认存储路径
sudo vim /etc/docker/daemon.json# 加上data-root参数{ "data-root": "/data/docker/var/lib/docker" }
# 重载配置
sudo systemctl daemon-reload

2、开机启动

# 7. 启动
sudo systemctl start docker
# 8.设置开机启动
sudo systemctl enable docker
# 9.查看开机启动
sudo systemctl list-unit-files|grep docker

3、免sudo执行docker命令

# 10. 查看安装版本
docker version
# 11. 添加docker用户组
sudo groupadd docker
# 12. 将当前用户添加至docker用户组
sudo gpasswd -a $USER docker
# 13. 切换session到docker用户组
newgrp docker

4、命令补齐, 镜像加速

# 14. 命令自动补全
sudo yum -y install bash-completion
source /etc/profile.d/bash_completion.sh# 15. 镜像加速
sudo vim /etc/docker/daemon.json
{"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
# 查看使用镜像,下方Registry Mirrors条目
docker info

5、其他: apt-get安装

# 卸载
sudo apt-get remove docker docker-engine docker.io containerd runc
# 依赖
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# 添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -# 验证您现在是否拥有带有指纹的密钥
sudo apt-key fingerprint 0EBFCD88# 设置稳定版仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"# 3.安装 Docker Engine-Community
# 更新
sudo apt-get update# 查看版本信息
sudo apt-cache show docker-ce# 安装最新的Docker-ce
sudo apt-get install docker-ce# 启动
sudo systemctl enable docker
sudo systemctl start docker# 4.测试
sudo docker run hello-world

二、docker-compose安装

# 1. 下载二进制文件
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 2. 设置可执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 3. 查看版本
docker-compose -v

三、docker-compose

1、docker-compose 常用命令

官方文档: https://docs.docker.com/compose/reference/

# 启动容器并后台运行(根据文件)
docker-compose -f tsdp-portal.yml up -d
# 停止容器(根据文件)
docker-compose -f tsdp-portal.yml down
# 停止容器并删除系统卷
docker-compose -f tsdp-portal.yml down --volumes
#构建建启动tsdp-portal1容器
docker-compose up -d tsdp-portal1
#登录到tsdp-portal1容器中
docker-compose exec tsdp-portal1 bash
#删除所有tsdp-portal1容器,镜像
docker-compose down
#显示所有容器
docker-compose ps
#重新启动tsdp-portal1容器
docker-compose restart tsdp-portal1
#在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器
docker-compose run --no-deps --rm php-fpm php -v
#构建镜像
docker-compose build tsdp-portal1
#不带缓存的构建。
docker-compose build --no-cache tsdp-portal1
#查看tsdp-portal1的日志
docker-compose logs  tsdp-portal1
#查看tsdp-portal1的实时日志
docker-compose logs -f tsdp-portal1
#验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。
docker-compose config  -q
#以json的形式输出tsdp-portal1的docker日志
docker-compose events --json tsdp-portal1
#暂停tsdp-portal1容器
docker-compose pause tsdp-portal1
#恢复ningx容器
docker-compose unpause tsdp-portal1
#删除容器(删除前必须关闭容器)
docker-compose rm tsdp-portal1
#停止tsdp-portal1容器
docker-compose stop tsdp-portal1
#启动tsdp-portal1容器
docker-compose start tsdp-portal1

2、运行jar包

2.1、启动

cd /home/weixin/workspace/docker/

vim tsdp-portal.yml

docker-compose -f tsdp-portal.yml up -d

2.2、停止

docker-compose -f tsdp-portal.yml down

2.3、日志

docker-compose -f tsdp-portal.yml logs -f

2.4、tsdp-portal.yml

# tsdp-portal.yml文件
version: '3'
services:tsdp-portal:image: docker.io/adoptopenjdk/openjdk11container_name: tsdp-portalenvironment:- spring.profiles.active=pro- server.port=8080- TZ=Asia/Shanghaiports:- 8080:8080networks:- net-tsdp-portalvolumes:- /home/weixin/workspace/tsdp-portal/:/app/tsdp-portal/entrypoint: ["sh","-c","cd /app/tsdp-portal/ && java -jar tsdp-portal.jar"]#command:#  - /bin/sh#  - -c#  - |#    cd /app/tsdp-portal/#    ... 任意命令
networks:net-tsdp-portal:driver: bridge

3、mysql yml示例

version : '3'
services:swapping:container_name: swapping-composebuild:context: .dockerfile: Dockerfile-swappingports:- "9666:9666"volumes:- .:/vol/developmentdepends_on:- mysqllinks:- "mysql:mysql"restart: alwaysnetworks:- my-networkenvironment:- TZ=Asia/Shanghaimysql:container_name: mysql-composeimage: mysql:5.7ports:- "33061:3306"command: ['--character-set-server=utf8mb4','--collation-server=utf8mb4_unicode_ci','--default-time-zone=+8:00']environment:MYSQL_DATABASE: swappingMYSQL_ROOT_PASSWORD: 398023MYSQL_ROOT_HOST: '%'restart: alwaysnetworks:- my-network
networks:my-network:

4、yml文件属性一览

version : '3'        #docker引擎对应所支持的docker-compose文本格式
services:            #本工程的服务配置列表swapping:            #spring boot的服务名,服务名自定义container_name: swapping-compose    #本spring boot服务之后启动的容器实例的名字,如果指定,按照这个命名容器,如果未指定,容器命名规则是#【[compose文件所在目录]_[服务名]_1】,例如【swappingdockercompose_swapping_1】#如果多启动,也就是docker-compose scale swapping=3 mysql=2的话,就不需要指定容器名称,否则会报错 容器名重复存在的问题build:            #基于Dockerfile文件构建镜像时使用的属性context: .    #代表当前目录,也可以指定绝对路径[/path/test/Dockerfile]或相对路径[../test/Dockerfile],尽量放在当前目录,便于管理dockerfile: Dockerfile-swapping    #指定Dockerfile文件名。如果context指定了文件名,这里就不用本属性了ports:                        #影射端口属性- "9666:9666"                #建议使用字符串格式,指定宿主机端口映射到本容器的端口volumes:                    #挂载属性- .:/vol/development        #挂载路径在compose配置文件中只能指定容器内的目录,而docker run命令可以指定[宿主机目录:容器内目录]的挂载方式。可以使用:ro对容器内目录设置只读,来保护宿主机的文件系统depends_on:                    #本服务启动,需要依赖哪些别的服务  例如这里;mysql服务就会先于swapping服务启动。至于配置多个的话,depends_on内的多个依赖的启动先后顺序未测试过- mysqllinks:                        #与depends_on相对应,上面控制启动顺序,这个控制容器连接问题。- "mysql:mysql"            #值可以是- mysql[- 服务名],也可以是- "mysql:mysql"[- "服务名:别名"]restart: always                #是否随docker服务启动重启networks:                    #加入指定网络- my-network                #自定义的网络名environment:                #environment 和 Dockerfile 中的 ENV 指令一样会把变量一直保存在镜像、容器中,类似 docker run -e 的效果。设置容器的环境变量- TZ=Asia/Shanghai        #这里设置容器的时区为亚洲上海,也就解决了容器通过compose编排启动的 时区问题!!!!解决了容器的时区问题!!!mysql:                            #服务名叫mysql,自定义container_name: mysql-compose    #容器名image: mysql:5.7                #虽然没有使用build,但使用了image,指定基于mysql:5.7镜像为基础镜像来构建镜像。【使用build基于Dockerfile文件构建,Dockerfile文件中也有FROM基于基础镜像】ports:- "33061:3306"command: [                        #使用 command 可以覆盖容器启动后默认执行的命令'--character-set-server=utf8mb4',            #设置数据库表的数据集'--collation-server=utf8mb4_unicode_ci',    #设置数据库表的数据集'--default-time-zone=+8:00'                    #设置mysql数据库的 时区问题!!!! 而不是设置容器的时区问题!!!!]environment:            MYSQL_DATABASE: swapping                             #设置初始的数据库名MYSQL_ROOT_PASSWORD: 398023                        #设置root连接密码MYSQL_ROOT_HOST: '%' restart: alwaysnetworks:- my-network
networks:                        #关于compose中的networks的详细使用https://blog.csdn.net/Kiloveyousmile/article/details/79830810my-network:                    #自定义的网络,会在第一次构建时候创建自定义网络,默认是bridge

5、docker-compose格式对应docker版本

官网: https://docs.docker.com/compose/compose-file/

Compose file format Docker Engine release
3.7 18.06.0+
3.6 18.02.0+
3.5 17.12.0+
3.4 17.09.0+
3.3 17.06.0+
3.2 17.04.0+
3.1 1.13.1+
3.0 1.13.0+
2.4 17.12.0+
2.3 17.06.0+
2.2 1.13.0+
2.1 1.12.0+
2.0 1.10.0+
1.0 1.9.1.+

四、docker

1、运行tomcat

1.1、 拉取tomcat镜像

docker pull tomcat:7

1.2、 启动

docker run -d --privileged=true --restart=always -v /home/crluser/workspaces/dockercat/webapp:/usr/local/tomcat/webapps -v /home/crluser/workspaces/dockercat/data:/data -p 9002:8080 -p 2281:2280 --name cat2 tomcat:7

说明:

/usr/local/tomcat/webapps为容器虚拟目录,里面内容为对应映射到主机目录的内容。

  • privileged:使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。
  • -d:后台运行,可用docker stop/start [容器名][容器id] 停止、启动
  • -v:path1:path2,path1为主机目录,path2为映射到容器的目录。
  • -p:9002:8080, 9002为主机对外端口,8080为容器对外端口。意为将容器的8080端口映射到9002端口
  • –name:容器名称
  • tomcat:7:镜像名称
  • –restart:重启策略:always 一直重启

1.3、进入容器目录

docker exec -it cat bash
  • -i:打开容器的标准输入。
  • -t:告诉docker为容器建立一个命令行终端。
  • bash:告诉docker要在容器里面执行此命令。

2、打包docker为image

# 将容器打包成镜像
docker commit -a "runoob.com" -m "my apache" 容器名称或id 打包的镜像名称:标签
docker commit -a "baec" -m "tomcat8-asgardblockchain-explorer" e4812accd59f abc-explorer:0.1
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

3、Dockerfile

FROM tomcat:8
COPY asgardblockchain-explorer /usr/local/tomcat/webapps
docker build -t abc-explorer:latest .
docker run -d --privileged=true -v /opt/docker/asgardblockchain-explorer/logs2:/usr/local/tomcat/logs -p 8180:8080 --name abc-explorer abc-explorer:0.1

4、docker下运行centos

# 拉取镜像
docker pull centos
# 运行
docker run -itd --name centos_dianping_cat -p 9002:8080 -p 2281:2280 -v /home/crluser/workspaces/dockercentos/home:/home -v /home/crluser/workspaces/dockercentos/data:/data centos
docker run -itd --name centos_dianping_cat -p 9002:8080 -p 2281:2280 centos
# 进入docker容器的控制台
docker exec -it centos_dianping_cat bash

5、在服务器的docker中创建私有仓库

# 1、master主机的docker先从公有仓库下载registry 镜像
docker pull registry
# 2、master主机的docker启动镜像;添加挂载使得本地/root/docker/my_registry用来存放私有仓库的镜像,这样容器重启镜像也不会删除。
docker run -d -p 5000:5000 --restart=always --privileged --name registry-container -v /root/docker/my_registry:/var/lib/registry registry
# 3、master主机上修改每个结点的docker配置文件,用来将docker绑定到私有仓库;如果不配置会出现https错误
vi /lib/systemd/system/docker.service# 添加或修改ExecStart=/usr/bin/dockerd -H fd://  --insecure-registry=192.168.1.168:5000
# 4、重启docker
systemctl daemon-reload
systemctl restart docker

6、docker命令

常用选项说明-d, --detach=false, 指定容器运行于前台还是后台,默认为false-i, --interactive=false, 打开STDIN,用于控制台交互-t, --tty=false, 分配tty设备,该可以支持终端登录,默认为false-u, --user="", 指定容器的用户-a, --attach=[], 登录容器(必须是以docker run -d启动的容器)-w, --workdir="", 指定容器的工作目录-c, --cpu-shares=0, 设置容器CPU权重,在CPU共享场景使用-e, --env=[], 指定环境变量,容器中可以使用该环境变量-m, --memory="", 指定容器的内存上限-P, --publish-all=false, 指定容器暴露的端口-p, --publish=[], 指定容器暴露的端口-h, --hostname="", 指定容器的主机名-v, --volume=[], 给容器挂载存储卷,挂载到容器的某个目录--volumes-from=[], 给容器挂载其他容器上的卷,挂载到容器的某个目录--cap-add=[], 添加权限,权限清单详见:http://linux.die.net/man/7/capabilities--cap-drop=[], 删除权限,权限清单详见:http://linux.die.net/man/7/capabilities--cidfile="", 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法--cpuset="", 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU--device=[], 添加主机设备给容器,相当于设备直通--dns=[], 指定容器的dns服务器--dns-search=[], 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件--entrypoint="", 覆盖image的入口点--env-file=[], 指定环境变量文件,文件格式为每行一个环境变量--expose=[], 指定容器暴露的端口,即修改镜像的暴露端口--link=[], 指定容器间的关联,使用其他容器的IP、env等信息--lxc-conf=[], 指定容器的配置文件,只有在指定--exec-driver=lxc时使用--name="", 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字--net="bridge", 容器网络设置:bridge 使用docker daemon指定的网桥host //容器使用主机的网络container:NAME_or_ID >//使用其他容器的网路,共享IP和PORT等网络资源none 容器使用自己的网络(类似--net=bridge),但是不进行配置--privileged=false, 指定容器是否为特权容器,特权容器拥有所有的capabilities--restart="no", 指定容器停止后的重启策略:no:容器退出时不重启on-failure:容器故障退出(返回值非零)时重启always:容器退出时总是重启--rm=false, 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)--sig-proxy=true, 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理

6.1、常用命令

删除镜像名称包含hello的镜像ID
sudo docker rmi $(sudo docker images | grep "dev-" | awk '{print $3}')
查找镜像名称包含hello的镜像ID
sudo docker images | grep "hello" | awk '{print $3}'
Centos7安装Docker
yum install docker
设置为开机启动
service docker start
chkconfig docker on
查看docker版本
docker version
拉取镜像
docker pull library/hello-world
查看镜像, Docker镜像保存在/var/lib/docker目录下
docker images
运行镜像
docker run hello-world
删除镜像
docker rmi hello-world
删除容器
docker rm container_name/container_id
删除所有停止的容器
docker rm $(docker ps -a -q)
查看正运行容器
docker ps
查看所有容器(已停止、创建、运行)
docker ps -a
启动、停止、重启容器命令:
docker start container_name/container_id
docker stop container_name/container_id
docker restart container_name/container_id
镜像重命名
docker tag IMAGEID  REPOSITORY:TAG
容器重命名
docker rename  old_name new_name
进入容器,后台启动一个容器后,如果想进入容器,可以使用attach命令:
docker attach container_name/container_id
# 或者
docker exec -it container_name /bin/bash
查看当前系统Docker信息
docker info
查看容器信息
docker inspect dockerName
查找镜像,查找Docker Hub上名称含nginx的镜像
docker search nginx
保存镜像为压缩包文件
docker save -o ubuntu_14.04.tar ubuntu:14.04
加载镜像文件
docker load -i ubuntu_14.04.tar

说明:
docker run 只在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器时,只需要使用命令docker start 即可。
只有在容器删除时,镜像才可以删除。

7、启动镜像

# help
# -d 后台
# -p 端口映射, localPort:dockerPort
# -m 或 –-memory:设置内存的使用限额,例如 100M, 2G
# -v 卷映射, localDir:dockerDir
# --name, docker名称
# --restart, 停止后策略
# 最后 javaapp:v1.0 , 镜像名称和版本
docker run -d -p 12310:12301 --name="cm-single-0.7.1" -m 1G -v /opt/chainmaker/chainmaker-single-0.7.1/config:/config chainmaker-single:0.71 bash -c "chainmaker -e wx-org1 -t single-0.7.1 start"docker run -d --name="cm-single-0.7.1-test" --restart=always -v /opt/chainmaker/chainmaker-single-0.7.1/chainmaker-go/config:/usr/config chainmaker-single:0.71 bash -c "while true; do echo hello world; sleep 1;done"

8、日志

# 常用
docker logs -f --tail=100 CONTAINER_ID\NAME
docker logs --since 1579139760000 owg-server# 详情
docker logs [OPTIONS] CONTAINEROptions:--details        显示更多的信息-f, --follow         跟踪实时日志--since string   显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)--tail string    从日志末尾显示多少行日志, 默认是all-t, --timestamps     显示时间戳--until string   显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

docker超强总结,docker这一篇就够了相关推荐

  1. docker入门,看这一篇就够啦

    简介 Docker是一个开源的应用容器引擎,通过容器可以隔离应用程序的运行时环境(程序运行时依赖的各种库和配置),比虚拟机更轻量(虚拟机在操作系统层面进行隔离).docker的另一个优点就是build ...

  2. Docker安装教程(看这篇就够了)

    Docker安装教程 一.CentOS安装Docker 1.卸载(可选) 2.安装docker 3.启动docker 4.配置镜像加速 二.CentOS7安装DockerCompose 1.下载 2. ...

  3. docker mysql 无权限_Docker 中级篇

    公众号关注"杰哥的IT之旅",选择"星标",重磅干货,第一时间送达! 来自:阿里云开发者社区 作者:Fortuneteller 链接:https://devel ...

  4. docker 删除所有镜像_关于 Docker 镜像的操作,看完这篇就够啦 !(下)| 文末福利...

    紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...

  5. Docker入门实战看这篇就够了(最新详细以及踩过的坑)

    Docker入门实战看这篇就够了 前言 初识 是什么 容器与虚拟机 能干什么 去哪玩 安装 先决条件 查看自己的内核 安装所需的软件包(支持devicemapper存储类型) 设置镜像的仓库 设置yu ...

  6. Docker的深入浅出(入门新手篇)

    Docker的深入浅出(入门新手篇) (持续更新中......) 什么是Docker? 这个问题百度的话会有很多标准答案,但是晦涩难懂,鄙人从小语文不好所以在以下内容鄙人会用个人粗俗的语音加通俗的理解 ...

  7. Docker的降维打击是怎么利用天时地利人和的?看这一篇就够了

    Docker的降维打击是怎么利用天时地利人和的?看这一篇就够了 容器的诞生 容器技术的奠基 容器生态的奠基 docker的出现 什么是容器 集装箱 容器 容器编排 容器的诞生 容器技术的奠基 2000 ...

  8. docker容器状态Exited(1)第一篇

    重新挂载容器时,出现问题. 首先,使用docker run .....挂载容器:然后,使用docker ps 查看是否挂载成功.如果成功你就不用看这个文章了,如果没有成功:使用docker ps -a ...

  9. Docker容器回顾之运维篇

    一.背景 接上一篇<Docker复习之部署篇>,本文继续对Docker之日常维护常用操作做回顾总结. 官方文档: https://docs.docker.com/engine/refere ...

最新文章

  1. Google机器人眼里的百度
  2. LAMP架构,纯文本作品
  3. PHP初入--表单元素
  4. 终于开源!基于Overlap的激光雷达全局定位算法!
  5. python 特征选择卡方_4. 机器学习之特征选择-Python代码
  6. iptv网关服务器系统 自己刷,iptv网关服务器镜像系统
  7. 毕设无忧|单片机类毕设论文模板
  8. 鸡兔同笼头吃20脚56c语言,数学课件《鸡兔同笼》
  9. 【一起学习输入法】华宇拼音输入法开源版本解析(1)
  10. java服务端–支付宝APP支付接口
  11. MCSE 2012之应用程序控制策略AppLocker
  12. rpg服务器无限刷金币bug,荆棘谷惊现无限刷金BUG 无脑跑商盆满钵满
  13. #2016京东实习生笔试之生日礼物
  14. 计算机表格大小怎么调整,excel怎么调整表格大小
  15. 六面体体积求解(规则不规则)
  16. des加密算法(des加密算法的密文分组长度)
  17. 魔兽争霸的历史(ZT)第三章
  18. CRM客户管理系统在企业中起到什么作用?
  19. 南京协同计算机信息网络,南京信息工程大学主页平台管理系统 Yu Xue--Home-- 求解大规模复杂优化问题的合作协同进化算法研究...
  20. 2022最新独立版智狐聚合支付系统源码Ver1.0.5.21版

热门文章

  1. CentOS安装scp命令及其scp的使用
  2. 第十八届深圳文博会今日开幕,江苏馆携手卓易紫砂街数字文化惊艳亮相!
  3. Holt_Winters三次平滑指数实现
  4. win api 路径操作函数
  5. Java 微服务架构
  6. 三种安卓模拟器的安装和比较
  7. 如何使用VLOOKUP在Google表格中查找数据
  8. Mysql主从复制和Redis主从复制
  9. 免费在线CAD转PDF怎么批量转换
  10. 搬砖:网络数据包解析