安装Docker
环境查看
# 系统内核在3.10以上
[root@bogon /]# uname -r
4.18.0-193.el8.x86_64
[root@bogon /]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"
安装
# 1、 卸载旧的版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 2、 需要的安装包
yum install -y yum-utils
# 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 # 推荐阿里云的
# 更新yum软件包索引
yum makecache timer
# 4、 安装docker相关
yum install docker-ce docker-ce-cli containerd.io --nobest
# 5、 启动docker
systemctl start docker
# 6、 验证安装
docker version
# 7、 hello-world
docker run hello-world
# 8、 查看下载的hello-world镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 12 months ago 13.3kB
卸载docker
# 1、 卸载资源
yum remove docker-ce docker-ce-cli containerd.io
# 2、 删除资源
rm -rf /var/lib/docker
# /var/lib/docker docker的默认路径
阿里云镜像加速
1、登录阿里云,搜索容器镜像服务
2、选择镜像加速器,CentOS
3、配置使用
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://7sf95hif.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
底层原理
Docker是怎么工作的?
Docker是一个client-server结构的系统,Docker的守护进程运行在主机上,通过socket从客户端访问!
DockerServer接收到Docker-Client的指令,就会执行这个命令!
Docker为什么比VM快?
1、Docker比虚拟机更少的抽象层
2、 Docker利用的是宿主机的内核,VM需要的是Guest OS
所以说,新建一个容器的时候,Docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导,虚拟机是加载Guest OS,分钟级别的,而Docker是利用宿主机的操作系统,省略了这个复杂的过程!
Docker的常用命令
帮助命令
docker version #docker版本信息
docker info #显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help #万能命令
镜像命令
docker images 查看所有本地的主机上的镜像
[root@bogon /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 12 months ago 13.3kB
# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小
# 可选项
-a, --all # 列出所有镜像
-q, --quiet # 只显示镜像的id
docker search 搜索镜像
[root@bogon /]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10380 [OK]
mariadb MariaDB is a community-developed fork of MyS… 3848 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 758 [OK]
# 可选项,通过收藏来过滤
--filter=STARS=3000 #搜索镜像收藏大于3000的
docker pull 下载镜像
# 下载镜像 docker pull 镜像名[:tag]
[root@bogon /]# docker pull mysql
Using default tag: latest # 如果不写tag,默认就是latest
latest: Pulling from library/mysql
a076a628af6f: Pull complete # 分层下载:docker image的核心 联合文件系统
f6c208f3f991: Pull complete
88a9455a9165: Pull complete
406c9b8427c6: Pull complete
7c88599c0b25: Pull complete
25b5c6debdaf: Pull complete
43a5816f1617: Pull complete
1a8c919e89bf: Pull complete
9f3cf4bd1a07: Pull complete
80539cea118d: Pull complete
201b3cad54ce: Pull complete
944ba37e1c06: Pull complete
Digest: sha256:feada149cb8ff54eade1336da7c1d080c4a1c7ed82b5e320efb5beebed85ae8c # 签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # 真实地址
# 等价于它
docker pull mysql
docker pull docker.io/library/mysql:latest
# 指定版本下载
[root@bogon /]# docker pull mysql:8.0.23
8.0.23: Pulling from library/mysql
Digest: sha256:feada149cb8ff54eade1336da7c1d080c4a1c7ed82b5e320efb5beebed85ae8c
Status: Downloaded newer image for mysql:8.0.23
docker.io/library/mysql:8.0.23
docker rmi 删除镜像
[root@bogon /]# docker rmi -f 容器id # 删除指定的容器
[root@bogon /]# docker rmi -f 容器id 容器id # 删除多个容器
[root@bogon /]# docker rmi -f $(docker images -aq) # 删除全部的容器
容器命令
说明:有了镜像才能创建容器
docker pull centos
新建容器并启动
docker run [可选参数] image
# 参数说明
--name="Name" 容器名字 tomcat01 tomcat02 用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-p 随机指定端口
# 测试 启动并进入容器
[root@bogon /]# docker run -it centos /bin/bash
[root@16eeb44e66e3 /]# ls # 查看容器内的CentOS
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
# 从容器中退出容器
[root@16eeb44e66e3 /]# exit
exit
[root@bogon /]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
列出所有的运行容器
# 列出当前正在运行的容器
[root@bogon /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 列出当前以及历史运行的容器
[root@bogon /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
16eeb44e66e3 centos "/bin/bash" 3 minutes ago Exited (0) About a minute ago optimistic_sinoussi
c281b6c6af36 bf756fb1ae65 "/hello" About an hour ago Exited (0) About an hour ago objective_swirles
# 列出最近创建的容器
[root@bogon /]# docker ps -a -n=1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
16eeb44e66e3 centos "/bin/bash" 5 minutes ago Exited (0) 3 minutes ago optimistic_sinoussi
# 只显示容器的编号
[root@bogon /]# docker ps -aq -n=1
16eeb44e66e3
退出容器
exit #直接容器停止并退出
Ctrl + p + q # 容器不停止并退出
删除容器
docker rm 容器id # 删除指定的容器,不能删除正在运行的容器,强制删除 rm -f
docker rm -f -f $(docker ps -aq) # 删除所有的容器
docker ps -a -q|xargs docker rm # 删除所有的容器
启动和停止容器的操作
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id # 强制停止
常用的其他命令
后台启动容器
# 命令 docker run -d 镜像名
[root@bogon /]# docker run -d centos
#docker ps 发现容器停止了
# 常见的问题,docker 容器使用后台运行 就必须有一个前台进程,docker发现没有应用,就会自动停止
# nginx,容器启动后,发现自己没有提供服务,就会立刻停止,所有就没有程序了
查看日志
# 显示日志
-tf # 显示全部的日志
-tail num # 显示日志条数
docker logs -f -t --tail 10 容器id
查看容器中的进程信息 ps
# 命令 docker top 容器id
查看镜像的元数据
docker inspect 容器id
进入当前正在运行的容器
# 对于后台运行的容器
# 命令
docker exec -it 容器id bash
# 方式二
docker attach 容器id
# 区别
# docker exec # 进入容器后开启一个新的终端,可以在里面操作
# docker attach # 进入容器正在执行的终端
从容器内拷贝到主机上
docker cp 容器id:容器内文件路径 目的主机路径
# 测试
root@bogon /]# docker attach ed760c1ad213
[root@ed760c1ad213 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@ed760c1ad213 /]# cd /home/
[root@ed760c1ad213 home]# touch test.java
[root@ed760c1ad213 home]# ls
test.java
[root@ed760c1ad213 home]# exit
exit
[root@bogon /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@bogon /]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
# 将文件拷贝到主机上
[root@bogon /]# docker cp ed760c1ad213:/home/test.java /home
[root@bogon /]# cd /home/
[root@bogon home]# ls
test.java
MySQL的安装
# 拉取镜像
docker pull mysql
# 启动mysql服务
docker run -di --name=docker_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
Nginx安装
# 拉取镜像
docker pull nginx
# 启动nginx服务
docker run -di --name=mynginx -p 80:80 nginx
Tomcat安装
# 拉取镜像
docker pull tomcat:9.0
# 启动tomcat
docker run -d -p 3355:8080 --name tomcat01 tomcat:9.0
# 进去tomcat容器
docker exec -it tomcat01 /bin/bash
# 复制webapps.dist文件到webapps
cp -r webapps.dist/* webapps
Redis安装
# 拉取镜像
docker pull redis
# 启动
docker run -it --name myredis -p 6379:6379 redis
elasticsearch和kibana安装
# 拉取镜像
docker pull elasticsearch:7.10.1
# 设置网络
docker network create somenetwork
# 启动
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.10.1
# 推荐下面这种,不需要设置网络
docker run -d --name essearch -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms300m -Xmx300m" -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.10.1
# docker stats
# 查看docker容器的内存状况
# 关闭elasticsearch,太耗内存,-e 进行环境配置修改
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.10.1
# 测试
[root@bogon ~]# curl localhost:9200
{
"name" : "204ec59e1ea7",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "OyDCKV3eSS26iH2ADJ31Ww",
"version" : {
"number" : "7.10.1",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "1c34507e66d7db1211f66f3513706fdf548736aa",
"build_date" : "2020-12-05T01:00:33.671820Z",
"build_snapshot" : false,
"lucene_version" : "8.7.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
# 安装kibana
docker run -d --name kibana --net somenetwork -p 5601:5601 kibana:7.10.1
# 进入容器,修改config目录下的kibana.yml
# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://192.168.233.129:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
# 退出
exit
# 重启服务
docker restart 容器id
可视化
- portainer
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
什么是portainer?
Docker图形化界面管理工具!提供一个后台面板给我们操作!
测试
浏览器输入:192.168.233.129:8088
commit镜像
docker commit 提交容器成为一个新的副本
# 命令
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]
# 测试
# 1、启动tomcat镜像
ocker run -d -p 3355:8080 --name tomcat tomcat:9.0
# 2、进入tomcat修改webapps文件
docker exec -it tomcat /bin/bash
cp -r webapps.dist/* webapps
# 3、退出
exit
# 4、提交修改过的tomcat
docker commit -a="gx" -m="add webapps app" e8c6c6c3f7e0 tomcat01:1.0.0
卷技术
# 连接数据库
# -v 卷挂载
docker run -d -p 33306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql
# 实现数据持久化
具名和匿名挂载
-v 容器内路径 # 匿名挂载
docker run -d -P --name nginx01 -v /etc/nginx nginx
-v 卷名:容器内路径 # 具名挂载 所有docker的卷没有指定路径都存放在 /var/lib/docker/volumes/卷名/_data
docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx
-v /宿主机路径:容器内路径 # 指定路径挂载
docker run -d -P --name nginx01 -v /home/nginx/data:/etc/nginx nginx
ro readonly # 只读
rw readwrite # 读写
docker run -d -P --name nginx01 -v /etc/nginx:ro nginx
数据卷容器
实现容器间的数据共享
# 通过 --volumes-from 实现卷绑定挂载,实现数据同步
docker run -it --name dicker01 centos
docker run -it --name docker02 --volumes-from docker01 centos
DockerFile
Dockerfile用于构建docker镜像的文件!命令参数脚本!
构建步骤:
基础知识
1、每个关键字(指令)都必须是大写
2、执行顺序由上到下
3、# 表示注释
4、每个指令都会创建一个新的镜像层,并提交!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l7IjMo7v-1625841492188)(C:\Users\郭旭\AppData\Roaming\Typora\typora-user-images\image-20210121164748631.png)]
DockerFile是面向开发的,我们要发布项目,就需要制作镜像,就需要编写dockerfile文件,Docker镜像逐渐成为企业交付的标准。
DockerFile:构建镜像的初始化文件,源代码。
DockerImages:通过DockerFile构建生成的容器,最终发布和运行的产品。
Docker容器:容器就是镜像运行起来的服务器。
DockerFile的指令
FROM # 基础镜像,一切的开始
MANTAINER # 镜像作者(姓名+邮箱)
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤中添加tomcat镜像,这个tomcat压缩包就是添加内容
WORKDIR # 镜像的挂载目录
VOLUME # 挂载的目录位置
EXPOSE # 指定暴露端口
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代,如果替代之后不是命令,会报错的
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加执行命令
ONBUILD # 当构建一个被继承的DockerFile,这个时候就会运行ONBUILD 的指令,触发指令。
COPY # 类似AD的,将我们的镜像拷贝到镜像中
WNV # 构建的时候设置环境变量
创建一个自己的CentOS
# 1、编写DockerFile文件
[root@bogon dockerfile]# cat mydockerfile-centos
FROM centos
MAINTAINER gx<2233247258@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash
# 2、通过该文件创建镜像
docker build -f 文件路径 -t 镜像名称:[TAG]
docker build -f mydockerfile-centos -t mycentos:0.1 .
# 中间可能出现
Errors during downloading metadata for repository 'appstream':
- Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=container [Could not resolve host: mirrorlist.centos.org]
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=container [Could not resolve host: mirrorlist.centos.org]
# 停止防火墙
systemctl stop firewalld
# 重启docker服务
systemctl restart docker
# 测试运行
[root@bogon dockerfile]# clear
[root@bogon dockerfile]# docker run -it mycentos:0.1
[root@2f0ed3101a96 local]# pwd
/usr/local
[root@2f0ed3101a96 local]# ls
bin etc games include lib lib64 libexec sbin share src
[root@2f0ed3101a96 local]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.3 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:03 txqueuelen 0 (Ethernet)
RX packets 8 bytes 656 (656.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@2f0ed3101a96 local]# vim tesr
[root@2f0ed3101a96 local]# ls
bin etc games include lib lib64 libexec sbin share src
# 查看镜像如何生成
docker history 镜像id或者镜像名:[TAG]
集成jdk的Tomcat
# 准备文件
[root@bogon tomcat]# ll
总用量 188532
-rw-r--r--. 1 root root 11442169 1月 22 01:50 apache-tomcat-9.0.41.tar.gz
-rw-r--r--. 1 root root 181608904 1月 22 01:46 jdk-11.0.9_linux-x64_bin.tar.gz
# 编写DockerFile文件,官方命名Dockerfile ,build会自动
# 新建镜像以centos为基础模板
FROM centos
MAINTAINET gx<2233247258@qq.com>
# 将readme文件添加进去
COPY readme.txt /usr/local/readme.txt
# 将jdk11和tomcat9.0压缩文件复制到镜像中,自动解压tar文件
ADD jdk-11.0.9_linux-x64_bin.tar.gz /usr/local/
ADD apache-tomcat-9.0.41.tar.gz /usr/local/
# 安装vim指令
RUN yum -y install vim
# 设置文件路径和工作路径
ENV MYPATH /usr/local
WORKDIR $MYPATH
# 设置环境变量
ENV JAVA_HOME /usr/local/jdk-11.0.9
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.41
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.41
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
# 暴露端口
EXPOSE 8080
# 自启动
CMD /usr/local/apache-tomcat-9.0.41/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.41/bin/logs/catalina.out
# 3、构建镜像
docker build -t diytomcat
# 4、启动镜像
docker run -d -p 9090:8080 --name gxtomcat -v /home/gx/build/tomcat//test:/usr/local/apache-tomcat-9.0.41/webapps/test -v /home/gx/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.41/logs diytomcat
# 发布项目(由于进行了卷挂载,在本地即可发布)
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
</web-app>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
Hello World!<br/>
<%
out.println("你的 IP 地址 " + request.getRemoteAddr());
%>
</body>
</html>
# 项目发布成功
Docker网络
自定义网络
查看所有的docker网络
# docker network ls
NETWORK ID NAME DRIVER SCOPE
ac70e6f38716 bridge bridge local
78cda27c6a77 host host local
e2b82e502866 none null local
a9bf053a1786 somenetwork bridge local
网络模式
bridge:桥接(docker默认)
none:不配置网络
host:和宿主机共享网络
container:容器网络连通(局限太多)
测试:
# 默认添加--net bridge
docker run -d -P --name tomcat01 --net bridge tomcat
# 自定义一个网络
[root@bogon ~]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
7b4a7bed6084f2f738dc36171f286a87fa3ca35b8118cc7ee833907ced4fbd65
[root@bogon ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
7b4a7bed6084 mynet bridge local
# 查看
[root@bogon ~]# docker network inspect mynet
[
{
"Name": "mynet",
"Id": "7b4a7bed6084f2f738dc36171f286a87fa3ca35b8118cc7ee833907ced4fbd65",
"Created": "2021-01-22T17:46:46.681395472+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "192.168.0.0/16",
"Gateway": "192.168.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
# 运行容器在自定义的网络上
docker run -d -P --name tomcat-net-01 --net mynet tomcat
打通网络
# docker network connet [OPTIONS] NETWORK CONTAINER
# docker network connet mynet tomcat01
# 就是把tomcat01放在mynet网络下
river": “bridge”,
“EnableIPv6”: false,
“IPAM”: {
“Driver”: “default”,
“Options”: {},
“Config”: [
{
“Subnet”: “192.168.0.0/16”,
“Gateway”: “192.168.0.1”
}
]
},
“Internal”: false,
“Attachable”: false,
“Ingress”: false,
“ConfigFrom”: {
“Network”: “”
},
“ConfigOnly”: false,
“Containers”: {},
“Options”: {},
“Labels”: {}
}
]
运行容器在自定义的网络上
docker run -d -P --name tomcat-net-01 --net mynet tomcat
**打通网络**
```shell
# docker network connet [OPTIONS] NETWORK CONTAINER
# docker network connet mynet tomcat01
# 就是把tomcat01放在mynet网络下