本文收录在容器技术学习系列文章总目录

1、概念介绍

1.1 容器

1.1.1 介绍

  容纳其它物品的工具,可以部分或完全封闭,被用于容纳、储存、运输物品。物体可以被放置在容器中,而容器则可以保护内容物。

1.1.2 要使用容器必须需要在内核级支持2中技术

  • namespaces 名称空间
  • Control Group(cgroups) 控制组

(1)为什么centos6 版本不能使用容器?

因为centos6 内核版本是2.6;容器需要一个user的名称空间,直到内核3.8版本才有:

 namespace 系统调用参数  隔离内容  内核版本 
UTS  CLONE_NEWUTS  主机名和域名  2.6.19
IPC   CLONE_NEWIPC 信号量、消息队列和共享内存   2.6.19
PID   CLONE_NEWPID 进程编号   2.6.24
Network   CLONE_NEWNET 网络设备、网络栈、端口等   2.6.29
Mount   CLONE_NEWNS 挂载点(文件系统)   2.4.19
User   CLONE_NEWUSER 用户和用户组   3.8

(2)Control Group(cgroups)

  • blkio:块设备IO
  • cpu:CPU
  • cpuacct:CPU资源使用报告
  • cpuset:多处理平台上的CPU集合
  • devices:设备访问
  • memory:内存用量及报告
  • perf_event:对cgroup中的任务进行统一性能测试
  • net_cls:cgroup中的任务创建的数据报文的类别标识符

1.2 docker

1.2.1 介绍

  • Docker是一个开放源代码软件项目,让应用程序布署在软件货柜下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化自动管理机制
  • Docker利用Linux核心中的资源分离机制,例如cgroups,以及Linux核心名字空间(namespaces,来创建独立的容器(containers。这可以在单一Linux实体下运作,避免启动一个虚拟机造成的额外负担。Linux核心对名字空间的支持完全隔离了工作环境中应用程序的视野,包括进程树、网络、用户ID与挂载文件系统,而核心的cgroup提供资源隔离,包括CPU、存储器、block I/O与网络。从0.9版本起,Dockers在使用抽象虚拟是经由libvirt的LXC与systemd - nspawn提供界面的基础上,开始包括libcontainer库做为以自己的方式开始直接使用由Linux核心提供的虚拟化的设施,
  • 依据行业分析公司“451研究”:“Dockers是有能力打包应用程序及其虚拟容器,可以在任何Linux服务器上运行的依赖性工具,这有助于实现灵活性和便携性,应用程序在任何地方都可以运行,无论是公有云、私有云、单机等。”

1.2.2 docker 运行架构

2、安装启动docker

2.1 安装环境

(1)依赖的基础环境

  • 64 位CPU
  • Linux kernel(内核) 3.10+
  • Linux kernel cgroups and namespaces

(2)查询自己服务器的环境

① 使用的服务器版本

[root@along ~]# cat /etc/redhat-release

CentOS Linux release 7.3.1611 (Core)

② 内核版本

[root@along ~]# uname -r

3.10.0-514.el7.x86_64

③ ip地址

[root@along ~]# hostname -I

192.168.130.101 192.168.10.101

2.2 安装docker

2.2.1 使用官方安装脚本自动安装

实际上就是下载一个安装脚本,再执行安装(不推荐,因为不能选择版本安装)

[root@along ~]# curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

2.2.2 CentOS 7 (使用yum进行安装,推荐)

(1)添加docker-ce 源信息

[root@along ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

(2)修改docker-ce 源

[root@along ~]# sed -i 's@download.docker.com@mirrors.tuna.tsinghua.edu.cn/docker-ce@g' /etc/yum.repos.d/docker-ce.repo

(3)更新并安装 Docker-CE

[root@along ~]# yum makecache fast

[root@along ~]# yum -y install docker-ce   安装的是默认最新版本

(4)安装指定版本的docker

① 查看都有哪些版本

[root@along ~]# yum list docker-ce.x86_64 --showduplicates | sort -r

② 下载指定版本,我这里下载的稳定版本

[root@along ~]# yum -y install docker-ce-17.03.2.ce

③ 安装报错(虚拟机中可能会遇到,如果没有报错请忽略)

Error: Package: docker-ce-18.03.1.ce-1.el7.centos.x86_64 (docker-ce-stable)

Requires: container-selinux >= 2.9

报错原因: docker-ce-selinux 版本过低

解决办法:https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/x86_64/stable/Packages/网站下载对应版本的docker-ce-selinux,安装即可

[root@along ~]# yum -y install https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.3.ce-1.el7.noarch.rpm

④ 再次安装docker 成功

[root@along ~]# yum -y install docker-ce-17.03.2.ce

2.2.2 CentOS 7 (二进制安装,推荐)

到 https://download.docker.com/linux/static/stable/x86_64/ 页面下载自己需要版本的发布包:

这次安装文档版本 docker-18.03.1-ce

(1)下载安装

[root@along ~]# mkdir /data

[root@along ~]# wget -P /data/ https://download.docker.com/linux/static/stable/x86_64/docker-18.03.1-ce.tgz

[root@along ~]# cd /data/

[root@along data]# tar -xvf docker-18.03.1-ce.tgz

(2)配置启动脚本

[root@along ~]# vim /etc/systemd/system/docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.io [Service]
Environment="PATH=/data/docker/:/bin:/sbin:/usr/bin:/usr/sbin"
EnvironmentFile=-/run/flannel/docker
ExecStart=/data/docker/dockerd --log-level=error $DOCKER_NETWORK_OPTIONS
ExecReload=/bin/kill -s HUP $MAINPID
Restart=on-failure
RestartSec=5
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Delegate=yes
KillMode=process [Install]
WantedBy=multi-user.target

(3)配置生效环境变量,方便使用docker命令

[root@along ~]# vim /etc/profile.d/docker.sh

export PATH=/data/docker:$PATH

[root@along ~]# source /etc/profile.d/docker.sh

(4)配置docker命令补齐脚本

[root@along ~]# wget -O /usr/share/bash-completion/completions/docker https://raw.githubusercontent.com/alonghub/Docker/master/Resource/docker

(5)配置dockerfile 语法高亮脚本

[root@along ~]# wget -O /usr/share/vim/vimfiles/doc/dockerfile.txt https://raw.githubusercontent.com/alonghub/Docker/master/Resource/dockerfile.txt
[root@along ~]# wget -O /usr/share/vim/vimfiles/ftdetect/dockerfile.vim https://raw.githubusercontent.com/alonghub/Docker/master/Resource/dockerfile2.vim
[root@along ~]# wget -O /usr/share/vim/vimfiles/syntax/dockerfile.vim https://raw.githubusercontent.com/alonghub/Docker/master/Resource/dockerfile3.vim

2.2.3 Ubuntu 14.04 16.04 (使用apt-get进行安装)

(1)安装最新版本

# step 1: 安装必要的一些系统工具

sudo apt-get update

sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

# step 2: 安装GPG证书

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# Step 3: 写入软件源信息

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

# Step 4: 更新并安装 Docker-CE

sudo apt-get -y update

sudo apt-get -y install docker-ce

(2)安装指定版本的Docker-CE:

# Step 1: 查找Docker-CE的版本:

# apt-cache madison docker-ce

#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages

#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages

# Step 2: 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.1~ce-0~ubuntu-xenial)

# sudo apt-get -y install docker-ce=[VERSION]

2.3 启动docker

2.3.1 配置docker镜像加速

多种加速方式:

  • docker cn
  • 阿里云加速器
  • 中国科技大学
  • ... ...

(1)docker cn 加速

[root@along ~]# mkdir -p /etc/docker

[root@along ~]# sudo tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": ["https://registry.docker-cn.com"]

}

EOF

(2)阿里云加速器

① 注册阿里云账号,专用加速器地址获得路径:

https://cr.console.aliyun.com/#/accelerator

② 添加加速器到配置文件

[root@along ~]# sudo tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]

}

EOF

③ 阿里云页面有操作步骤

 

2.3.2 配置清空防火墙规则

[root@along ~]# systemctl stop firewalld && systemctl disable firewalld

[root@along ~]# /usr/sbin/iptables -F && /usr/sbin/iptables -X && /usr/sbin/iptables -F -t nat && /usr/sbin/iptables -X -t nat

[root@along ~]# /usr/sbin/iptables -P FORWARD ACCEPT

2.3.3 启动docker服务

① 重载docker启动配置

[root@along ~]# systemctl daemon-reload

② 将docker设为开机自启

[root@along ~]# systemctl start docker.service

③ 启动docker服务

[root@along ~]# systemctl enable docker.service

④ 查看docker版本

[root@along ~]# docker version

Client:
Version: 17.03.2-ce
API version: 1.27
Go version: go1.7.5
Git commit: f5ec1e2
Built: Tue Jun 27 02:21:36 2017
OS/Arch: linux/amd64 Server:
Version: 17.03.2-ce
API version: 1.27 (minimum version 1.12)
Go version: go1.7.5
Git commit: f5ec1e2
Built: Tue Jun 27 02:21:36 2017
OS/Arch: linux/amd64
Experimental: false

3、docker 基础命令操作

3.1 镜像操作

3.1.1 搜索官方仓库镜像

[root@along ~]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 10659 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 1497 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 671 [OK]

搜索结果解释:

参数

说明

NAME

镜像名称

DESCRIPTION

镜像说明

STARS

点赞数量

OFFICIAL

是否是官方的

AUTOMATED

是否是自动构建的

3.1.2 拉取镜像

(1)根据镜像名称(tag指定版本)拉取镜像

[root@along ~]# docker pull nginx:1.14-alpine
1.14-alpine: Pulling from library/nginx
cd784148e348: Pull complete
12b08f7ef616: Pull complete
65071a4e699c: Pull complete
9936647427be: Pull complete
Digest: sha256:e3f77f7f4a6bb5e7820e013fa60b96602b34f5704e796cfd94b561ae73adcf96
Status: Downloaded newer image for nginx:1.14-alpine
[root@along ~]# docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
b4a6e23922dd: Pull complete
Digest: sha256:8ccbac733d19c0dd4d70b4f0c1e12245b5fa3ad24758a11035ee505c629c0796
Status: Downloaded newer image for busybox:latest

注:alpine 版本:构建容器小镜像的发型版本

(2)查看当前主机镜像列表

[root@along ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 758ec7f3a1ee 7 days ago 1.15 MB
nginx 1.14-alpine c5b6f731fbc0 13 days ago 17.7 MB

3.1.3 导出镜像

[root@along ~]# docker image save busybox > docker-busybox.tar.gz
[root@along ~]# ls docker-busybox.tar.gz
docker-busybox.tar.gz
[root@along ~]# docker image save -o /mnt/busybox_nginx.tar.gz busybox:latest nginx:1.14-alpine
[root@along ~]# ls /mnt/busybox_nginx.tar.gz
/mnt/busybox_nginx.tar.gz

注:

  • -o:指定导出镜像的位置;
  • 可以同时导出多个镜像;为一个文件;
  • 指定.tar.gz 可以导出并压缩。

 

3.1.4 删除镜像

[root@along ~]# docker image rm busybox
Untagged: busybox:latest
Untagged: busybox@sha256:8ccbac733d19c0dd4d70b4f0c1e12245b5fa3ad24758a11035ee505c629c0796
Deleted: sha256:758ec7f3a1ee85f8f08399b55641bfb13e8c1109287ddc5e22b68c3d653152ee
Deleted: sha256:23bc2b70b2014dec0ac22f27bb93e9babd08cdd6f1115d0c955b9ff22b382f5a
[root@along ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.14-alpine c5b6f731fbc0 13 days ago 17.7 MB

3.1.5 导入镜像

[root@along ~]# docker image load -i docker-busybox.tar.gz
23bc2b70b201: Loading layer 1.37 MB/1.37 MB
Loaded image: busybox:latest
[root@along ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 758ec7f3a1ee 7 days ago 1.15 MB
nginx 1.14-alpine c5b6f731fbc0 13 days ago 17.7 MB

3.1.6 查看镜像的详细信息

[root@docker01 ~]# docker image inspect centos

3.2 容器操作

3.2.1 启动容器

方法1(不推荐):

  先创建一个容器:docker create 镜像名

  再启动容器:docker start 容器名

方法2:docker run 镜像名

(1)格式

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

(2)options 常用命令选项

  • -t :打开一个终端,像使用交换机一样使用容器
  • -i:交互式访问
  • --name:容器名字
  • --network:指定网络
  • --rm:容器一停,自动删除
  • -d:剥离与当前终端的关系;否则会一直占据着终端
  • -p:端口映射,将容器内服务的端口映射在宿主机的指定端口
    • -p <container port>
    • -p <hostport>:<container port>
    • -p <hostip>:<hostport>:<container port>

(3)示例:运行一个容器

[root@along ~]# docker run --name web1 -d -p 8888:80 nginx:1.14-alpine
ced78e522fd747635e9af01bc20882094e3b55ce50b9ae248962e8e8eeb89774
[root@along ~]# docker port web1 查询docker端口映射
80/tcp -> 0.0.0.0:8888
[root@along ~]# docker run --name b1 -it busybox /bin/sh 在运行容器时,交互式进入容器
/ # ls /
bin dev etc home proc root sys tmp usr var
/ # exit 退出

(4)查询容器运行状态命令

[root@along ~]# docker ps / docker container ls  两个命令是一样的效果

  -a:查询所有的容器

注:容器内的第一个进程必须一直处于运行的状态,否则这个容器,就会处于退出状态!

[root@along ~]# docker ps   只显示运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ced78e522fd7 nginx:1.14-alpine "nginx -g 'daemon ..." 5 minutes ago Up 5 minutes 0.0.0.0:8888->80/tcp web1
[root@along ~]# docker ps -a 查询所有容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bcbf3d772a65 nginx:1.14-alpine "nginx -g 'daemon ..." 3 minutes ago Up 3 minutes 0.0.0.0:8888->80/tcp web1
9621f704b756 busybox "/bin/sh" 3 minutes ago Exited (0) 3 minutes ago b1

3.2.2 停止运行的容器

docker stop  关闭运行的容器

docker kill   杀死运行的容器

  -s:指定信号,和kill 用法一样;-9 强制停止容器

[root@along ~]# docker kill web1
web1
[root@along ~]# docker ps 只显示运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@along ~]# docker ps -a 查询所有容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bcbf3d772a65 nginx:1.14-alpine "nginx -g 'daemon ..." 5 minutes ago Exited (137) 1 second ago web1
9621f704b756 busybox "/bin/sh" 5 minutes ago Exited (0) 5 minutes ago b1

3.2.3 激活关闭的容器

docker start

(1)格式

Usage: docker start [OPTIONS] CONTAINER [CONTAINER...]

(2)Options:

  • -a:附加到当前终端
  • -i:交互式

(3)示例

[root@along ~]# docker start web1
web1
[root@along ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ced78e522fd7 nginx:1.14-alpine "nginx -g 'daemon ..." 9 minutes ago Up 8 seconds 0.0.0.0:8888->80/tcp web1

3.2.4 查看容器的详细信息

[root@along ~]# docker inspect web1
[root@along ~]# docker inspect web1 |grep "IPAddress" 比如我查询到容器的ip
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
[root@along ~]# curl 172.17.0.2 通过容器的IP,在宿主机上访问服务
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
[root@along ~]# curl 127.0.0.1:8888 映射到宿主机的端口是8888
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>

3.2.5 删除容器

[root@along ~]# docker kill web1  先关闭容器,再删除容器
b1
[root@along ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@along ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bcbf3d772a65 nginx:1.14-alpine "nginx -g 'daemon ..." 6 minutes ago Exited (137) 2 seconds ago web1
9621f704b756 busybox "/bin/sh" 6 minutes ago Exited (0) 6 minutes ago b1
[root@along ~]# docker rm web1
web1
[root@along ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9621f704b756 busybox "/bin/sh" 6 minutes ago Exited (0) 6 minutes ago b1
[root@along ~]# docker rm -f `docker ps -a -q` 删除所有容器,-f 强制删除
9621f704b756
[root@along ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

3.2.6 对运行的容器执行指定命令exec

[root@along ~]# docker exec / docker container exec

(1)格式

Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

(2)options 选项

  • -d:在后台运行命令
  • -e:设置环境变量
  • -i:交互式
  • -t:打开一个终端
  • -u:用户名或UID

(3)示例

[root@along ~]# docker run --name web1 -d nginx:1.14-alpine
81f336e878c0fb3187596f2acd12705d94f532978a8ad37c9f8ae33cc39bfb61
① 交互式进入容器
[root@along ~]# docker exec -it web1 /bin/sh
/ # ls /
bin etc lib mnt root sbin sys usr
dev home media proc run srv tmp var
/ # exit
② 查询ip
[root@along ~]# docker exec web1 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
43: eth0@if44: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.2/16 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe11:2/64 scope link
valid_lft forever preferred_lft forever

3.2.7 查询容器内部日志

[root@along ~]# curl 172.17.0.2
[root@along ~]# docker logs web1
172.17.0.1 - - [03/Jan/2019:09:00:42 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"

3.2.8 一图总结对容器的操作命令

Docker系列03—Docker 基础入门的更多相关文章

  1. Docker系列03—Docker 存储卷

    一.存储卷介绍 1.1 背景 Docker 的 AFUS 分层文件系统 docker镜像由多个只读层叠加而成,启动容器时,docker会加载只读镜像层并在镜像栈顶部加一个读写层: 如果运行的容器修改了 ...

  2. Docker系列01—Docker 基础入门

    一.初识Docker和容器 1.1 什么是docker 容纳其他物品的工具,可以部分或完全封闭,被用于容纳.存储.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. 容器? 容器就是在隔离的环 ...

  3. Docker系列一之基础快速入门企业实战

    1.1什么是LXC LXC为Linux Container的简写.Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚 ...

  4. Docker系列之.NET Core入门(三)

    前言 在Docker生态系统中除了上一节所讲解的基本概念,还有其他专业术语,本文我们将一笔带过,同时会开始陆续进入到在.NET Core中使用Docker. 专业术语 Docker Engine(Do ...

  5. 简明教程 | Docker篇 · 其一:基础入门

    了解Docker Docker是什么 Docker是指容器化技术,用于支持创建和使用 Linux 容器,同时Docker也是软件容器平台. 什么是容器(container) 容器是主机上与其他进程隔离 ...

  6. Docker系列之Docker镜像(读书笔记)

    一.基本概念 Docker包括三个基本概念镜像.容器.仓库. Docker镜像:就是一个只读的模板.例如:一个镜像可以包含一个完整的ubuntu操作系统环境,里面仅安装了Apache或其他应用程序.用 ...

  7. Docker系列05—Docker 存储卷详解

    本文收录在容器技术学习系列文章总目录 1.存储卷介绍 1.1 背景 (1)docker 的 AFUS 分层文件系统 docker镜像由多个只读层叠加面成,启动容器时,docker会加载只读镜像层并在镜 ...

  8. docker 系列之 docker安装

    Docker支持以下的CentOS版本 CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提条件 目前,CentOS 仅发行版本中的内核支持 Docker. ...

  9. Docker系列二: docker常用命令总结

    https://docs.docker.com/reference/  官方命令总结地址 容器生命周期管理 1.docker run 创建一个新的容器并运行一个命令 docker run [optio ...

随机推荐

  1. SDN网络虚拟化中有效协调的映射算法

    来自论文An efficient and coordinated mapping algorithm in virtualized SDN networks,来自期刊<信息与电子工程前沿> ...

  2. 七牛云音频转码准备工作之如何创建音视频处理私有队列pipeline

    如何创建音视频处理私有队列 最近更新时间:2017-08-28 15:54:45 在七牛进行音视频处理,推荐使用私有队列(pipeline). 创建私有队列方法如下: 第一步 登录七牛开发者平台 ht ...

  3. Visual Studio2012 添加服务引用时,生成基于任务操作不可用原因

    今天在添加服务引用时,发现 单选按钮 ”生成基于任务操作“不可用,原因项目选择的.net frame是3.5,调整为.net 4.5或.net4.6即可. 原因:.net4.5以下的环境不支持.

  4. Autograd:自动微分

    Autograd 1.深度学习的算法本质上是通过反向传播求导数,Pytorch的Autograd模块实现了此功能:在Tensor上的所有操作,Autograd都能为他们自动提供微分,避免手动计算导数的 ...

  5. 连接Redis_五种数据格式

    前面我们已经准备成功开启Redis服务,其端口号为6379,接下来我们就看看如何使用C#语言来操作Redis.就如MongoDB一样,要操作Redis服务,自然就需要下载C#的客户端,这里通过Nuge ...

  6. 无需sendmail:巧用LD_PRELOAD突破disable_functions

    *本文原创作者:yangyangwithgnu,本文属FreeBuf原创奖励计划,未经许可禁止转载 摘要:千辛万苦拿到的 webshell 居然无法执行系统命令,怀疑服务端 disable_funct ...

  7. git mvn 使用

    git 更换远程仓库地址: stps:先删除远程仓库地址,然后再添加 [git remote rm origin] 删除现有远程仓库 [git remote add origin url]添加新远程仓 ...

  8. 将本地jar包打包到本地仓库和上传到私服

    1.本地jar打包到本地仓库 mvn install:install-file -Dfile=jar包完整地址或相对地址 -DgroupId=自定义的groupID -DartifactId=自定义的 ...

  9. 《JavaScript DOM编程艺术》学习笔记(一)

    这本书是我听说学习前端基础入门书籍,于是就开始看了,大概是从5月10号开始看的吧,一直看到现在,差不多要看完了,书是挺厚的...286页,不过比起JAVASCRIPT权威指南来说还是差多了,权威指南才 ...

  10. FCC(ES6写法) Friendly Date Ranges

    把常见的日期格式如:YYYY-MM-DD 转换成一种更易读的格式. 易读格式应该是用月份名称代替月份数字,用序数词代替数字来表示天 (1st 代替 1). 包含当前年份和相同月份的时候,makeFri ...