Docker基础01--入门总结--(狂神说docker学习笔记)

文章目录

        • Docker学习笔记合集(持续更新)
        • 学习目录
    • 1.Docker概述
      • Docker为什么出现?
    • 2.Docker的历史
      • 聊聊Docker
    • 3.Docker的作用
        • 应用更快速的交付和部署
        • 更便捷的升级和扩缩容
        • 更简单的系统运维
        • 更高效的计算资源利用
    • 4.Docker的基本组成
        • 镜像(image):
        • 容器(container):
        • 仓库(repository):
    • 5.Dockers的安装
    • 6.Docker的卸载
    • 7.配置阿里云镜像加速
    • 8. Docker容器运行流程
    • 9. 底层原理
    • 10. Docker的常用命令
      • 10.1 基础命令
      • 10.2 镜像命令
      • 10.3 容器命令
      • 10.4 其他常用命令
    • 11. 常用容器部署
      • 11.1 Nginx部署
      • 11.2 Tomcat部署
      • 11.3 ElasticSearch部署
    • 12.Docker镜像详解
      • 12.1 什么是镜像
      • 12.2 Docker镜像加载原理
      • 12.3 分层理解
      • 12.4 提交镜像

Docker学习笔记合集(持续更新)

linux入门–服务器购买—宝塔部署环境说明
Nginx简单入门–学习笔记狂神说
Docker基础01–入门总结–(狂神说docker学习笔记)
Docker基础02–Docker容器数据卷详解–(狂神说docker学习笔记)
Docker基础03–Dockerfile详解与镜像发布–(狂神说docker学习笔记)
Docker基础04–Docker网络–(狂神说docker学习笔记)
Docker进阶01–Docker Compose–(狂神说docker学习笔记)

Docker知识点翻阅手册–Docker常用命令、Dockererfile、Compose、网络等整理合集
Docker实战:Mysql、Nginx、web的Docker化部署(安装、自定义镜像、compose管理容器、自定义网络、部署问题及解决)

学习目录

Docker概述
Docker安装
Docker命令–镜像命令 容器命令 操作命令
Docker镜像!
容器数据卷!
DockerFile
Docker网络原理
IDEA整合Docker
Docker Compose
Docker Swarm
CI\CD Jenkins

1.Docker概述

Docker为什么出现?

一款产品:开发–上线 两套环境!应用环境,应用配置!

开发 — 运维 问题:我在我的电脑上可以运行!版本更新,导致服务不可用!对于运维来说,考验就非常大!

环境配置是十分的麻烦,每一个机器都要部署环境(集群Redis、ES、Hadoop…)

发布一个项目(jar+(Redis、MySQL、jdk、ES))项目能不能都带上环境安装打包!

之前在服务器配置一个应用的环境 Redis、MySQL、jdk、ES、Hadoop,配置越麻烦了,不能够跨平台

windows,最后发布到linux!

传统:开发jar,运维来做

现在:开发打包部署上线,一套流程做完

java - apk --发布(应用商店 ) --张三使用apk --安装即可用!

java - jar(环境) —打包项目带上环境(镜像) --(Docker仓库:商店) —下载我们发布的镜像 --直接运行即可!

Docker给以上的问题,提出了解决方案!

img

Docker的思想就来自于集装箱!

JRE — 多个应用(端口冲突)—原来都是交叉的!

隔离:Docker核心思想!打包装箱!每个箱子之间是互相隔离的。

水果、生化武器

Docker通过隔离机制,可以将服务器利用到机制!

本质:所有的技术都是因为出现了一些问题,我们需要去解决,才去学习!

2.Docker的历史

2010年,几个搞IT的年轻人,在美国成立了一家公司 dotCloud

做一些pass的云计算服务!LXC有关的容器技术!

他们将自己的技术(容器化技术)命名 就是 Docker!

Docker刚刚诞生的时候,没有引起行业的注意!

2013年开源–开发源代码!

2014年4月9日,Docker1.0发布!

Docker为什么这么火?十分的轻巧!

在容器技术出来之前,我们都是使用虚拟机技术!

虚拟机:在window中装一个Vmware,通过这个软件我们可以虚拟出来一台或多台电脑!笨重!

虚拟机也是属于虚拟化技术,Docker容器技术,也是一种虚拟化技术!

vm,linux centos原生镜像(一个电脑!) 隔离,需要开启多个虚拟机! 几个G  几分钟
docker,隔离,镜像(最核心的环境 4m  + jdk +mysql)十分小巧,运行镜像即可! 几个M KB 秒级

到现在,所有开发人员都必须要回Docker!

聊聊Docker

Docker是基于Go语言开发的!开源项目!

Docker基础01--入门总结--(狂神说docker学习笔记)_第1张图片

  • 官网

  • 官方文档Docker文档是超详细的

  • 仓库地址

3.Docker的作用

之前的虚拟机技术

Docker基础01--入门总结--(狂神说docker学习笔记)_第2张图片

虚拟机技术缺点:

1.资源占用很多

2.冗余步骤多

3.启动很慢!

容器化技术

容器化技术不是模拟的一个完整的操作系统

Docker基础01--入门总结--(狂神说docker学习笔记)_第3张图片

比较Docker和虚拟机技术的不同:

  • 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件

  • 容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以轻便了

  • 每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响

DevOps(开发、运维)

应用更快速的交付和部署

传统:一堆帮助文档,安装程序

Docker:打包镜像、发布测试、一键运行

更便捷的升级和扩缩容

使用了Docker之后,我们部署应用就和搭积木一样!

(SpringBoot 1.5 Redis 5 tomcat8)打包成一个镜像,扩展 服务器A!服务器B

更简单的系统运维

在容器化之后,我们的开发,测试环境都是高度一致的。

更高效的计算资源利用

Docker是 内核级别的虚拟化,可以在一个物理机上可以运行很多的容器实例!服务器的性能可以被压榨到极致!

4.Docker的基本组成

Docker的基本组成图如下:

Docker基础01--入门总结--(狂神说docker学习笔记)_第4张图片

说明:

镜像(image):

docker镜像好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像===》run==》tomcat01容器(提供服务器)通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)

容器(container):

Docker利用容器技术没独立运行一个或者一个组应用,通过镜像来创建的。

启动、停止、删除,基本命令

仓库(repository):

Docker基础01--入门总结--(狂神说docker学习笔记)_第5张图片

5.Dockers的安装

查看系统的内核:

uname -r

系统内核版本为3.10.0

[root@zecan ~]# uname -r
3.10.0-1062.18.1.el7.x86_64

查看系统配置

cat /etc/os-release

[root@zecan ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

Docker的安装步骤:
(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  #国外的地址
    
    # 设置阿里云的Docker镜像仓库
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  #阿里云的地址

(4)更新yum软件包索引

yum makecache fast

(5)安装docker相关的配置

docker-ce 是社区版,docker-ee 企业版

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

出现了completed即安装成功。

(6)启动Docker

systemctl start docker
# 查看当前版本号,是否启动成功
docker version
# 设置开机自启动
systemctl enable docker

结果:

Docker基础01--入门总结--(狂神说docker学习笔记)_第6张图片

下载hello-world镜像进行测试

Docker基础01--入门总结--(狂神说docker学习笔记)_第7张图片

查看下载的hello world镜像

[root@zecan ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    feb5d9fea6a5   7 weeks ago   13.3kB

6.Docker的卸载

# 1. 卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
# 2. 删除资源  . /var/lib/docker是docker的默认工作路径
rm -rf /var/lib/docker

7.配置阿里云镜像加速

1)进入阿里云官网,搜索容器镜像服务
Docker基础01--入门总结--(狂神说docker学习笔记)_第8张图片
(2)依次执行官方的这四条命令

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://axvfsf7e.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

8. Docker容器运行流程

启动一个容器,Docker的运行流程如下图:

Docker基础01--入门总结--(狂神说docker学习笔记)_第9张图片

9. 底层原理

Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socker从客户端访问!Docker Server接收到Docker-Client的指令,就会执行这个指令!

Docker基础01--入门总结--(狂神说docker学习笔记)_第10张图片

Docker为什么比VM Ware快?

1、Docker比虚拟机更少的抽象层

2、docker利用宿主机的内核,VM需要的是Guest OS

Docker基础01--入门总结--(狂神说docker学习笔记)_第11张图片

Docker新建一个容器的时候,不需要像虚拟机一样重新加载一个操作系统内核,直接利用宿主机的操作系统,而虚拟机是需要加载Guest OS。Docker和VM的对比如下:

Docker基础01--入门总结--(狂神说docker学习笔记)_第12张图片

注:现GuestOS已全部适用

[

](https://blog.csdn.net/huangjhai/article/details/118854733)

10. Docker的常用命令

10.1 基础命令

docker version   # 显示dicker的版本信息
docker info      # 显示docker的系统信息,包括镜像和容器的数量
docker 命令  --help # 帮助命令

命令的帮助文档地址:https://docs.docker.com/engine/reference/commandline/docker/

10.2 镜像命令

1.docker images 查看本地主机的所有镜像

[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    bf756fb1ae65   11 months ago   13.3kB

#解释:
1.REPOSITORY  镜像的仓库源

2.TAG  镜像的标签

3.IMAGE ID 镜像的id

4.CREATED 镜像的创建时间

5.SIZE 镜像的大小


# 可选参数

-a/--all 列出所有镜像

-q/--quiet 只显示镜像的id

2.docker search 搜索镜像

[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   10308     [OK]
mariadb                           MariaDB is a community-developed fork of MyS…   3819      [OK]
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   754                  [OK]
percona                           Percona Server is a fork of the MySQL relati…   517       [OK]
centos/mysql-57-centos7           MySQL 5.7 SQL database server                   86
mysql/mysql-cluster               Experimental MySQL Cluster Docker images. Cr…   79
centurylink/mysql                 Image containing mysql. Optimized to be link…   60                   [OK]


#可选参数

Search the Docker Hub for images

Options:
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print search using a Go template
      --limit int       Max number of search results (default 25)
      --no-trunc        Don't truncate output
      
      
#搜索收藏数大于3000的镜像
[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker search mysql --filter=STARS=3000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   10308     [OK]
mariadb   MariaDB is a community-developed fordockerk of MyS…   3819      [OK]

3.docker pull 镜像名[:tag] 下载镜像

[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker pull mysql
Using default tag: latest            #如果不写tag默认就是latest
latest: Pulling from library/mysql
6ec7b7d162b2: Pull complete          #分层下载,docker image的核心-联合文件系统
fedd960d3481: Pull complete
7ab947313861: Pull complete
64f92f19e638: Pull complete
3e80b17bff96: Pull complete
014e976799f9: Pull complete
59ae84fee1b3: Pull complete
ffe10de703ea: Pull complete
657af6d90c83: Pull complete
98bfb480322c: Pull complete
6aa3859c4789: Pull complete
1ed875d851ef: Pull complete
Digest: sha256:78800e6d3f1b230e35275145e657b82c3fb02a27b2d8e76aac2f5e90c1c30873 #签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest  #下载来源的真实地址  #docker pull mysql等价于docker pull docker.io/library/mysql:latest

指定版本下载

[root@zecan ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
b380bbd43752: Already exists 
f23cbf2ecc5d: Already exists 
30cfc6c29c0a: Already exists 
b38609286cbe: Already exists 
8211d9e66cd6: Already exists 
2313f9eeca4a: Already exists 
7eb487d00da0: Already exists 
a71aacf913e7: Pull complete 
393153c555df: Pull complete 
06628e2290d7: Pull complete 
ff2ab8dac9ac: Pull complete 
Digest: sha256:2db8bfd2656b51ded5d938abcded8d32ec6181a9eae8dfc7ddf87a656ef97e97
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

4.docker rmi 删除镜像

#1.删除指定的镜像id
[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker rmi -f  镜像id
#2.删除多个镜像id
[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker rmi -f  镜像id 镜像id 镜像id
#3.删除全部的镜像id
[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker rmi -f  $(docker images -aq)

10.3 容器命令

说明:有了镜像才可以创建容器

docker pull centos

新建容器并启动

docker run [可选参数] image

#参数说明
--name="名字"          指定容器名字  tomcat01 tomcat02,用来区分容器
-d                     后台方式运行
-it                    使用交互方式运行,进入容器查看内容
-p                     指定容器的端口 -p 8080:8080
(
   -p ip:主机端口:容器端口  配置主机端口映射到容器端口
   -p 主机端口:容器端口
   -p 容器端口
)
-P                     随机指定端口(大写的P)

#测试,并启动
[root@zecan ~]# docker run -it centos /bin/bash
[root@b3ac7a30eb8a /]# ls   #查看容器内地centos,基础版本,很多命令都是不完善的!
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

#从容器退回主机
[root@b3ac7a30eb8a /]# exit
exit
[root@zecan /]# ls
bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  patch  proc  root  run  sbin  srv  sys  tmp  usr  var  www

列出所有的运行的容器

# docker ps 命令
		# 列出当前正在运行的容器
-a  # 列出当前正在运行的容器+带出历史运行过的容器
-n=# 显示最近创建的容器
-q # 只显示容器的编号

[root@zecan /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@zecan /]# docker ps -a
CONTAINER ID   IMAGE         COMMAND       CREATED          STATUS                      PORTS     NAMES
b3ac7a30eb8a   centos        "/bin/bash"   5 minutes ago    Exited (0) 4 minutes ago              optimistic_heyrovsky
332d452d5337   hello-world   "/hello"      31 minutes ago   Exited (0) 31 minutes ago             sleepy_mendel
72d42c07133b   hello-world   "/hello"      15 hours ago     Exited (0) 15 hours ago               pensive_germain
[root@zecan /]# 

删除容器

docker rm 容器id                 #删除指定的容器,不能删除正在运行的容器,强制删除使用 rm -f
docker rm -f $(docker ps -aq)   #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有的容器

启动和停止容器

docker start 容器id          #启动容器
docker restart 容器id        #重启容器
docker stop 容器id           #停止当前运行的容器
docker kill 容器id           #强制停止当前容器

10.4 其他常用命令

后台启动容器

#命令 docker run -d 镜像名!
[root@zecan /]# docker run -d centos

#问题docker ps,发现centos停止了

#常见的坑,docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
#nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

1.查看日志

[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker logs --help

Usage:  docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

Options:
      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
  -n, --tail string    Number of lines to show from the end of the logs (default "all")
  -t, --timestamps     Show timestamps
      --until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)

常用:
docker logs -tf 容器id
docker logs --tail number 容器id #num为要显示的日志条数


#docker容器后台运行,必须要有一个前台的进程,否则会自动停止
#编写shell脚本循环执行,使得centos容器保持运行状态
[root@zecan /]# docker run -d centos /bin/sh -c "while true;do echo hi;sleep 5;done"
88947e8d3cf0fa5bdbd6e0577e77b74b8a53bf4dd6685bd00130829a8c7f2250
[root@zecan /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
88947e8d3cf0   centos    "/bin/sh -c 'while t…"   40 seconds ago   Up 39 seconds             loving_tesla
[root@zecan /]# docker logs -tf --tail 10 88947e8d3cf0
2021-11-16T02:39:04.210788277Z hi
2021-11-16T02:39:09.212892789Z hi
2021-11-16T02:39:14.214927123Z hi
2021-11-16T02:39:19.217185096Z hi
2021-11-16T02:39:24.219168601Z hi
2021-11-16T02:39:29.221417267Z hi
2021-11-16T02:39:34.223160841Z hi
2021-11-16T02:39:39.225251841Z hi
2021-11-16T02:39:44.227213547Z hi
2021-11-16T02:39:49.229377746Z hi
2021-11-16T02:39:54.231320967Z hi

2.查看容器中进程信息

[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker top c703b5b1911f
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                11156               11135               0                   11:31               ?                   00:00:00            /bin/sh -c while true;do echo hi;sleep 5;done
root                11886               11156               0                   11:43               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 5

3.查看容器的元数据

[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker inspect 容器id

4.进入当前正在运行的容器

因为通常我们的容器都是使用后台方式来运行的,有时需要进入容器修改配置

方式一:

[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker exec -it c703b5b1911f /bin/bash
[root@c703b5b1911f /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@c703b5b1911f /]# ps -ef      
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 03:31 ?        00:00:00 /bin/sh -c while true;do echo hi;sleep 5;done
root       279     0  0 03:54 pts/0    00:00:00 /bin/bash
root       315     1  0 03:56 ?        00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 5
root       316   279  0 03:56 pts/0    00:00:00 ps -ef

方式二:

[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker attach c703b5b1911f

docker exec 进入容器后开启一个新的终端,可以在里面操作

docker attach 进入容器正在执行的终端,不会启动新的进程

拷贝容器的文件到主机中

docker cp 容器id:容器内路径 目的主机路径

#启动容器
[root@zecan /]# docker run -it centos /bin/bash
[root@a84d4273434f /]# 
[root@a84d4273434f /]# [root@zecan /]# 
[root@zecan /]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
a84d4273434f   centos    "/bin/bash"   2 minutes ago   Up 2 minutes             great_sammet

#进入dockers容器内部
[root@zecan /]# docker attach a84d4273434f
[root@a84d4273434f /]# cd  /home
[root@a84d4273434f home]# touch zecan.txt
[root@a84d4273434f home]# ls
zecan.txt
[root@a84d4273434f home]# exit
exit
[root@zecan /]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                      PORTS     NAMES
a84d4273434f   centos    "/bin/bash"   3 minutes ago   Exited (0) 12 seconds ago             great_sammet

# 将文件拷贝出来到主机上
[root@zecan /]# docker cp a84d4273434f:/home/zecan.txt /home
[root@zecan /]# cd /home
[root@zecan home]# ls
redis  www  zecan.txt

# 拷贝是一个手动过程,未来我们使用 -v 卷的技术,可以实现,自动同步

命令小节的图解如下:

Docker基础01--入门总结--(狂神说docker学习笔记)_第13张图片

可以把常用命令放进来

11. 常用容器部署

11.1 Nginx部署

(1)搜索并下载镜像

[root@zecan home]# docker search nginx
NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                              Official build of Nginx.                        14207     [OK]       
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   1932                 [OK]
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   797                  [OK]
linuxserver/nginx                  An Nginx container, brought to you by LinuxS…   137                  
jc21/nginx-proxy-manager           Docker container for managing Nginx proxy ho…   123                  
tiangolo/nginx-rtmp                Docker image with Nginx using the nginx-rtmp…   107                  [OK]

[root@zecan home]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
7d63c13d9b9b: Pull complete 
15641ef07d80: Pull complete 
392f7fc44052: Pull complete 
8765c7b04ad8: Pull complete 
8ddffa52b5c7: Pull complete 
353f1054328a: Pull complete 
Digest: sha256:dfef797ddddfc01645503cef9036369f03ae920cac82d344d58b637ee861fda1
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@zecan home]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    04661cdce581   6 days ago     141MB
mysql         latest    ecac195d15af   4 weeks ago    516MB
hello-world   latest    feb5d9fea6a5   7 weeks ago    13.3kB
centos        latest    5d0da3dc9764   2 months ago   231MB

可以到dockerhub官网查看Nginx的详细版本信息 :https://hub.docker.com/_/nginx

(2)运行测试

-d 后台运行
--name 给容器命名
-p 3344:80 将宿主机的端口3344映射到该容器的80端口 

[root@zecan home]# docker run -d --name nginx01 -p 3344:80 nginx 
b4ce6a638ddcf76ad1eb85fe9735a39174860e984bc4cea94beb0dd9ac614d47
[root@zecan home]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                  NAMES
b4ce6a638ddc   nginx     "/docker-entrypoint.…"   7 seconds ago   Up 6 seconds   0.0.0.0:3344->80/tcp   nginx01

端口暴露的概念:

Docker基础01--入门总结--(狂神说docker学习笔记)_第14张图片

外网\

思考问题:我们每次改动nginx配置文件,都需要进入容器内部?十分麻烦,要是可以在容器外部提供一个映射路径,达到在容器修改文件名,容器内部就可以自动修改? - v 数据卷技术!

(3)配置文件
进入容器,自定义配置文件

[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker exec -it nginx01 /bin/bash
root@20c896637ff5:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@20c896637ff5:/# cd /etc/nginx
root@20c896637ff5:/etc/nginx# ls
conf.d	fastcgi_params	koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params	uwsgi_params  win-utf
root@20c896637ff5:/# cd /etc/nginx
root@20c896637ff5:/etc/nginx# ls
conf.d	fastcgi_params	koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params	uwsgi_params  win-utf

(4)访问测试
本地主机访问测试,curl命令发起请求,如果使用阿里云服务器需要设置安全组。

[root@zecan home]# curl localhost:3344



Welcome to nginx!</ti 
<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>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/e263a4739ebb4777a2ed9c8a40d8f79e.png" target="_blank"><img src="http://img.e-com-net.com/image/info8/e263a4739ebb4777a2ed9c8a40d8f79e.png" alt="Docker基础01--入门总结--(狂神说docker学习笔记)_第15张图片" width="466" height="205" style="border:1px solid black;"></a></p> 
  <h3>11.2 Tomcat部署</h3> 
  <pre><code class="prism language-dockerfile"># 官网的使用  用完即删
docker run -it  --rm  tomcat:9.0
</code></pre> 
  <p><strong>(1)下载并运行</strong></p> 
  <pre><code>docker pull tomcat
docker run -d -p 3355:8080 --name tomcat01 tomcat
</code></pre> 
  <p><strong>(2)访问测试</strong></p> 
  <p><strong>没有问题</strong></p> 
  <p><a href="http://img.e-com-net.com/image/info8/599927d9eeba4ca5917d1fed417b4ac1.png" target="_blank"><img src="http://img.e-com-net.com/image/info8/599927d9eeba4ca5917d1fed417b4ac1.png" alt="Docker基础01--入门总结--(狂神说docker学习笔记)_第16张图片" width="420" height="164" style="border:1px solid black;"></a></p> 
  <p><strong>(3)进入容器</strong></p> 
  <p>docker exec -it tomcat01 /bin/bash</p> 
  <p>1.容器中的命令是少了</p> 
  <p>2.阿里云镜像默认下载的是最小的镜像,保证最小的运行环境。</p> 
  <pre><code class="prism language-dockerfile">[root@zecan home]# docker exec -it tomcat01 /bin/bash
root@7115b1d34558:/usr/local/tomcat# ls
BUILDING.txt	 LICENSE  README.md	 RUNNING.txt  conf  logs	    temp     webapps.dist
CONTRIBUTING.md  NOTICE   RELEASE-NOTES  bin	      lib   native-jni-lib  webapps  work
root@7115b1d34558:/usr/local/tomcat# cd webapps
root@7115b1d34558:/usr/local/tomcat/webapps# ls
root@7115b1d34558:/usr/local/tomcat/webapps# cd..
bash: cd..: command not found
root@7115b1d34558:/usr/local/tomcat/webapps# cd  ..
root@7115b1d34558:/usr/local/tomcat# cd webapps.dist
root@7115b1d34558:/usr/local/tomcat/webapps.dist# ls
ROOT  docs  examples  host-manager  manager
root@7115b1d34558:/usr/local/tomcat/webapps# cd  ..
root@7115b1d34558:/usr/local/tomcat# cp -r webapps.dist/*  webapps
root@7115b1d34558:/usr/local/tomcat# cd webapps
root@7115b1d34558:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/2aed2b4acb25489b86dd8cf34e7ba6c6.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/2aed2b4acb25489b86dd8cf34e7ba6c6.jpg" alt="Docker基础01--入门总结--(狂神说docker学习笔记)_第17张图片" width="650" height="597" style="border:1px solid black;"></a></p> 
  <p>思考问题:我们以后都要部署项目,如果每次都要进入而哦那个其是不是十分麻烦?我要是可以在容器外部提供一个映射路径,webapps,在外部放置项目,就自动同步到内部就好了!</p> 
  <h3>11.3 ElasticSearch部署</h3> 
  <ul> 
   <li> <p>es 暴露的端口很多!</p> </li> 
   <li> <p>es 十分的耗内存</p> </li> 
   <li> <p>es 的数据一般需要放置到安全目录!挂载</p> </li> 
  </ul> 
  <pre><code class="prism language-dockerfile"># 启动 
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2

# 启动了 linux就卡死了 docker  stats 查看 cpu的状态

# es是十分耗内存的,1.xG 1核2G

# 测试一下es是否成功
[root@zecan ~]# curl localhost:9200
{
  "name" : "ebccbbe4becc",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "voYT7LkXQhqtoz8PcDmUbg",
  "version" : {
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
</code></pre> 
  <p><strong># 增加内存的限制</strong></p> 
  <pre><code class="prism language-dockerfile">#x修改配置文件 -e 环境配置修改
docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms128m -Xmx512m"  elasticsearch:7.6.2

添加 ’-e ES_JAVA_OPTS="-Xms128m -Xmx512m" ‘ 配置ElasticSearch的虚拟机占用的内存大小。
docker stats 查看资源占用情况
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/f819465f0d804234a011a6c74b4841bc.png" target="_blank"><img src="http://img.e-com-net.com/image/info8/f819465f0d804234a011a6c74b4841bc.png" alt="img" width="764" height="74"></a></p> 
  <p>作业:使用kibanna连接es?思考网络如何才能来连接过去。</p> 
  <p><a href="http://img.e-com-net.com/image/info8/c4d18e1fa2e145a7a35cae271a5d3820.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/c4d18e1fa2e145a7a35cae271a5d3820.jpg" alt="Docker基础01--入门总结--(狂神说docker学习笔记)_第18张图片" width="611" height="307" style="border:1px solid black;"></a></p> 
  <ol> 
   <li>图形化管理工具Portaniner安装<br> Portaniner是Docker的图形化管理工具,类似的工具还有Rancher(学到CI/CD再用)<br> 下载运行Portaniner镜像并运行,设置本机映射端口为8088<br> docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer<br> -v 挂载</li> 
  </ol> 
  <p>访问测试:外网(阿里云开通外网)<br> 安装教程:https://blog.csdn.net/weixin_44421461/article/details/109475411<br> 第一次登录设置admin用户的密码</p> 
  <p>我们建造的是单机版,直接选择Local,点击连接<br> 如果是阿里云服务器记得设置安全组,选择连接本地的Docker,整体界面预览如下图:</p> 
  <h2>12.Docker镜像详解</h2> 
  <h3>12.1 什么是镜像</h3> 
  <p>镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需要的所有内容,包括代码,运行时(一个程序在运行或者在被执行的依赖)、库,环境变量和配置文件。</p> 
  <p>所有的应用,直接打包docker镜像,就可以直接跑起来<br> 镜像来源有三:<br> ● 仓库下载<br> ● 拷贝<br> ● 自己创造镜像</p> 
  <h3>12.2 Docker镜像加载原理</h3> 
  <p>Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统是UnionFS联合文件系统。</p> 
  <h3>12.3 分层理解</h3> 
  <p>查看镜像分层的方式可以通过docker image inspect+镜像 命令!</p> 
  <pre><code class="prism language-shell"><span class="token string">"RootFS"</span><span class="token builtin class-name">:</span> <span class="token punctuation">{</span>
<span class="token string">"Type"</span><span class="token builtin class-name">:</span> <span class="token string">"layers"</span>,
<span class="token string">"Layers"</span><span class="token builtin class-name">:</span> <span class="token punctuation">[</span>
<span class="token string">"sha256:e8b689711f21f9301c40bf2131ce1a1905c3aa09def1de5ec43cf0adf652576e"</span>,
<span class="token string">"sha256:b43651130521eb89ffc3234909373dc42557557b3a6609b9fed183abaa0c4085"</span>,
<span class="token string">"sha256:8b9770153666c1eef1bc685abfc407242d31e34f180ad0e36aff1a7feaeb3d9c"</span>,
<span class="token string">"sha256:6b01cc47a390133785a4dd0d161de0cb333fe72e541d1618829353410c4facef"</span>,
<span class="token string">"sha256:0bd13b42de4de0a0d0cc3f1f162cd0d4b8cb4ee20cbea7302164fdc6894955fd"</span>,
<span class="token string">"sha256:146262eb38412d6eb44be1710bfe0f05d3493831f82b1c2be8dc8d9558c9f033"</span>
<span class="token punctuation">]</span>
</code></pre> 
  <h3>12.4 提交镜像</h3> 
  <p>使用docker commit 命令提交容器成为一个新的版本</p> 
  <p>docker commit -m=“提交的描述信息” -a=“作者” 容器id 目标镜像名:[TAG]</p> 
  <p>由于默认的Tomcat镜像的webapps文件夹中没有任何内容,需要从webapps.dist中拷贝文件到webapps文件夹。下面自行制作镜像:就是从webapps.dist中拷贝文件到webapps文件夹下,并提交该镜像作为一个新的镜像。使得该镜像默认的webapps文件夹下就有文件。具体命令如下:<br> #1.复制文件夹</p> 
  <pre><code class="prism language-shell"><span class="token punctuation">[</span>root@zecan  ~<span class="token punctuation">]</span><span class="token comment"># docker ps </span>
CONTAINER ID   IMAGE     COMMAND             CREATED         STATUS         PORTS                    NAMES
0f8ea2f53e32   tomcat    <span class="token string">"catalina.sh run"</span>   <span class="token number">2</span> minutes ago   Up <span class="token number">2</span> minutes   <span class="token number">0.0</span>.0.0:8080-<span class="token operator">></span><span class="token number">8080</span>/tcp   sharp_diffie
<span class="token punctuation">[</span>root@zecan  ~<span class="token punctuation">]</span><span class="token comment"># docker exec -it 0f8ea2f53e32 /bin/bash </span>
root@0f8ea2f53e32:/usr/local/tomcat<span class="token comment"># ls</span>
BUILDING.txt	 LICENSE  README.md	 RUNNING.txt  conf  logs	    temp     webapps.dist
CONTRIBUTING.md  NOTICE   RELEASE-NOTES  bin	      lib   native-jni-lib  webapps  work
root@0f8ea2f53e32:/usr/local/tomcat<span class="token comment"># cp -r webapps.dist/* webapps</span>
root@0f8ea2f53e32:/usr/local/tomcat<span class="token comment"># cd webapps</span>
root@0f8ea2f53e32:/usr/local/tomcat/webapps<span class="token comment"># ls</span>
ROOT  docs  examples  host-manager  manager
root@0f8ea2f53e32:/usr/local/tomcat/webapps<span class="token comment">#</span>
</code></pre> 
  <p>#2.提交镜像作为一个新的镜像</p> 
  <pre><code class="prism language-shell"><span class="token punctuation">[</span>root@zecan  ~<span class="token punctuation">]</span><span class="token comment"># docker commit -a="zecan" -m="add webapps app" 0f8ea2f53e32 tomcat02:1.0 </span>
sha256:ad1fdd24828b785a5d4abcb980d19178e1c30123b4ce588c4225a0fbfaf4ad40
<span class="token punctuation">[</span>root@zecan  ~<span class="token punctuation">]</span><span class="token comment"># docker images </span>
REPOSITORY            TAG       IMAGE ID       CREATED          SIZE
tomcat02              <span class="token number">1.0</span>       ad1fdd24828b   <span class="token number">15</span> seconds ago   684MB
tomcat                latest    5db6fed793e9   <span class="token number">12</span> hours ago     680MB
nginx                 latest    04661cdce581   <span class="token number">6</span> days ago       141MB
mysql                 latest    ecac195d15af   <span class="token number">4</span> weeks ago      516MB
redis                 latest    7faaec683238   <span class="token number">4</span> weeks ago      113MB
hello-world           latest    feb5d9fea6a5   <span class="token number">7</span> weeks ago      <span class="token number">13</span>.3kB
centos                latest    5d0da3dc9764   <span class="token number">2</span> months ago     231MB
portainer/portainer   latest    580c0e4e98b0   <span class="token number">8</span> months ago     <span class="token number">79</span>.1MB
elasticsearch         <span class="token number">7.6</span>.2     f29a1ee41030   <span class="token number">20</span> months ago    791MB
</code></pre> 
  <p>#3.运行容器</p> 
  <pre><code class="prism language-shell"><span class="token punctuation">[</span>root@iZwz99sm8v95sckz8bd2c4Z ~<span class="token punctuation">]</span><span class="token comment"># docker run -it mytomcat:1.0 /bin/bash</span>
root@1645774d4605:/usr/local/tomcat<span class="token comment"># cd webapps</span>
root@1645774d4605:/usr/local/tomcat/webapps<span class="token comment"># ls</span>
ROOT  docs  examples  host-manager  manager
wz99sm8v95sckz8bd2c4Z ~<span class="token punctuation">]</span><span class="token comment"># docker images</span>
REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
mytomcat              <span class="token number">1.0</span>       f189aac861de   <span class="token number">7</span> seconds ago   653MB
mysql                 <span class="token number">5.7</span>       f07dfa83b528   <span class="token number">6</span> days ago      448MB
tomcat                latest    feba8d001e3f   <span class="token number">10</span> days ago     649MB
nginx                 latest    ae2feff98a0c   <span class="token number">12</span> days ago     133MB
centos                latest    300e315adb2f   <span class="token number">2</span> weeks ago     209MB
portainer/portainer   latest    62771b0b9b09   <span class="token number">5</span> months ago    <span class="token number">79</span>.1MB
elasticsearch         <span class="token number">7.6</span>.2     f29a1ee41030   <span class="token number">9</span> months ago    791MB
</code></pre> 
  <p>学习过程搜索:<br> docker run容器的时候/bin/bash到底在表达什么<br> Linux下“/”和“~”的区别<br> 端口冲突(Address already in use)解决方法<br> linux如何查看端口占用情况</p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1524300473711001600"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(运维,#,Docker,运维,docker,docker-compose,运维开发,dockerfile)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1829429979969056768.htm"
                           title="10分钟学会Docker的安装和使用" target="_blank">10分钟学会Docker的安装和使用</a>
                        <span class="text-muted">明月醉窗台</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E6%A8%A1%E5%9E%8B%E9%83%A8%E7%BD%B2/1.htm">模型部署</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>文章目录1Docker简介2Docker安装2.1Windows安装2.2Linux安装2.2.1CentOS安装2.2.2Ubuntu安装2.3验证安装是否成功3Docker镜像(DockerImages)3.1镜像简介3.2镜像操作常用指令4Docker容器4.1容器简介4.2容器操作常用指令5DIY一个自己的Pytorch镜像6容器数据卷6.1问题描述6.2使用数据卷6.3具名挂载和匿名挂载</div>
                    </li>
                    <li><a href="/article/1829426321772605440.htm"
                           title="Springboot + MongoDB 存储文件:上传文件及附属信息,文件保存到GridFS数据库,使用流式传输获取文件 可存储geojson、图片、视频等大型文件" target="_blank">Springboot + MongoDB 存储文件:上传文件及附属信息,文件保存到GridFS数据库,使用流式传输获取文件 可存储geojson、图片、视频等大型文件</a>
                        <span class="text-muted">ZhongruiRao</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a>
                        <div>项目背景Springboot2.6+MongoDB存储大型geojson数据因为部分文件需要随系统保存,直接存储本地路径会导致系统迁移、Docker运行等出现问题,内网系统不能使用外部OSS,内部单独搭建OSS也难以维护,于是采用MongoDB的GridFS存储文件获取时使用流式传输获取示例包含导入、删除后端代码Controller@PostMapping("/import")@RequiresP</div>
                    </li>
                    <li><a href="/article/1829419140356599808.htm"
                           title="helm学习第三篇--结合 springboot 单做" target="_blank">helm学习第三篇--结合 springboot 单做</a>
                        <span class="text-muted">Wade_Crab</span>
<a class="tag" taget="_blank" href="/search/java-rocketmq/1.htm">java-rocketmq</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a>
                        <div>创建一个springboot项目放到里面去—开山立派要将你的SpringBoot项目代码与Redis、MySQL和RocketMQ组合到同一个HelmChart中,你可以按照以下步骤进行操作:1.准备SpringBoot项目确保你的SpringBoot项目已经打包为Docker镜像。如果还没有创建Docker镜像,可以在SpringBoot项目的根目录下创建一个Dockerfile,并使用以下内容</div>
                    </li>
                    <li><a href="/article/1829392291861721088.htm"
                           title="Docker安装" target="_blank">Docker安装</a>
                        <span class="text-muted">什么都干的派森</span>
<a class="tag" taget="_blank" href="/search/Docker/1.htm">Docker</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a>
                        <div>文章目录一、国内daocloud一键安装命令1.安装2.启动二、yum安装1.安装2.修改docker数据目录+换源一、国内daocloud一键安装命令1.安装使用国内daocloud一键安装命令curl-sSLhttps://get.daocloud.io/docker|sh2.启动sudosystemctlstartdocker.serviceps:由于是国内的一键安装脚本,所以国内镜像源也自</div>
                    </li>
                    <li><a href="/article/1829384889305231360.htm"
                           title="zabbix添加端口监控" target="_blank">zabbix添加端口监控</a>
                        <span class="text-muted">一只刚刚开始吃猫粮的运维狗</span>

                        <div>日常运维中不仅仅有URL监控,服务监控,往往在服务的运行还伴随有端口的监控,下面就来介绍zabbix如何添加端口监控在相应主机中选择监控项,并添加监控项图片.png1.添加一个名称2.健值选择添加选择net.tcp.listen[port]图片.png3.将[port]里面的端口改成你要监控的端口即可4.一般添加完端口的监控项没有什么意义,能实现监控还需要添加一个触发器,这样在端口或服务出现问题的</div>
                    </li>
                    <li><a href="/article/1829375274010112000.htm"
                           title="docker与宿主机之间拷贝文件" target="_blank">docker与宿主机之间拷贝文件</a>
                        <span class="text-muted">hzw0510</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>要在Docker容器和宿主机之间拷贝文件,你可以使用以下命令:从宿主机拷贝到容器dockercp:示例:将宿主机上的file.txt拷贝到容器/app目录中:dockercpfile.txtmycontainer:/app/从容器拷贝到宿主机</div>
                    </li>
                    <li><a href="/article/1829333543772319744.htm"
                           title="Ansible运维" target="_blank">Ansible运维</a>
                        <span class="text-muted">条纹布鲁斯</span>
<a class="tag" taget="_blank" href="/search/ansible/1.htm">ansible</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>配置主机主机名IP地址角色Control10.0.17.200控制节点(manager)Node110.0.17.201控制节点(test)Node210.0.17.202控制节点(proxy)Node310.0.17.203控制节点(web1)Node410.0.17.204控制节点(web2)Node510.0.17.205控制节点(database)ubuntu最小化安装源:https://</div>
                    </li>
                    <li><a href="/article/1829333290419580928.htm"
                           title="Docker网络模型深度解析" target="_blank">Docker网络模型深度解析</a>
                        <span class="text-muted">109702008</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>Docker网络模型是Docker容器化技术的重要组成部分,它通过不同的网络驱动来实现容器间及容器与外部环境的通信。深入理解Docker网络模型有助于更好地管理和优化容器化应用。下面我们将详细探讨Docker的主要网络模式及其实现机制。1.Docker网络驱动概述Docker提供了多种网络驱动,用于满足不同的网络需求。主要的网络驱动包括:-Bridge(桥接网络)-Host(主机网络)-None-</div>
                    </li>
                    <li><a href="/article/1829325101850521600.htm"
                           title="docker内安装并激活conda" target="_blank">docker内安装并激活conda</a>
                        <span class="text-muted">你好,此用户已存在</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/conda/1.htm">conda</a>
                        <div>dockerfile文件#installconda#下载并安装MinicondaRUNwgethttps://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh-Ominiconda.sh\&&bashminiconda.sh-b-p/opt/conda\&&rmminiconda.sh#创建并激活Conda环境RUN/opt</div>
                    </li>
                    <li><a href="/article/1829324975509696512.htm"
                           title="(docker) 进入容器安装miniconda3,使用conda配置训练环境" target="_blank">(docker) 进入容器安装miniconda3,使用conda配置训练环境</a>
                        <span class="text-muted">YEAH-Han</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/conda/1.htm">conda</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>1.下载MinicondaMiniconda—Anacondadocumentation2.环境配置完成安装后,进行环境配置问题:主要解决miniconda无法在终端执行sourceactivate激活进入miniconda环境,出现报错-bash:activate:Nosuchfile/解决方案:1.修改~/.bashrcsudovi~/.bashrc2.添加以下内容exportPATH=/ro</div>
                    </li>
                    <li><a href="/article/1829324723297808384.htm"
                           title="Docker 安装Miniconda" target="_blank">Docker 安装Miniconda</a>
                        <span class="text-muted">奋进在AI路上的小李</span>
<a class="tag" taget="_blank" href="/search/%E5%85%AC%E5%8F%B8%E5%AE%9E%E4%B9%A0/1.htm">公司实习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>下载Miniconda下载地址执行sh命令完成Miniconda的安装中间输入yes完成安装后,执行链接中的命令完成环境配置创建自己conda环境,需要配置清华镜像安装对应的pytorch,Pytorch的下载地址</div>
                    </li>
                    <li><a href="/article/1829322327196790784.htm"
                           title="Docker安装与使用 | conda环境配置 | 附常用命令" target="_blank">Docker安装与使用 | conda环境配置 | 附常用命令</a>
                        <span class="text-muted">全日制学生混</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/conda/1.htm">conda</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>这里写自定义目录标题Docker安装Docker使用打包conda环境制作镜像运行镜像容器监视常用一些可能出现的问题Docker安装#创建一个文件夹用于中转文件mkdir-p~/3dparty/dockercd~/3dparty/docker#进去选择docker一键安装即可wgethttp://fishros.com/install-Ofishros.sh&&shfishros.sh#把当前用户</div>
                    </li>
                    <li><a href="/article/1829322327746244608.htm"
                           title="「Apollo」直接在docker内部安装miniconda失败" target="_blank">「Apollo」直接在docker内部安装miniconda失败</a>
                        <span class="text-muted">Liiipseoroinis</span>
<a class="tag" taget="_blank" href="/search/Apollo/1.htm">Apollo</a><a class="tag" taget="_blank" href="/search/Ubuntu/1.htm">Ubuntu</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>ATTENTION:因为公司原因,该条blog展示的解决方法可能仅适用于本人,作为debug记录背景安装失败的步骤:从conda官网下载了安装conda的sh文件Miniconda3-py37_4.11.0-Linux-x86_64.sh直接在docker内部执行sudo./Miniconda3-py37_4.11.0-Linux-x86_64.sh;其中安装路径写的是docker内部的路径,并且</div>
                    </li>
                    <li><a href="/article/1829320310483152896.htm"
                           title="docker内安装miniconda" target="_blank">docker内安装miniconda</a>
                        <span class="text-muted">门前大橋下丶</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>下载minicondahttps://repo.anaconda.com/miniconda/进入容器进行安装#运行安装脚本以安装Miniconda/bin/bashMiniconda3-py38_22.11.1-1-Linux-aarch64.sh-b-p/opt/conda#将Conda添加到PATHexportPATH=/opt/conda/bin:$PATHcondainitbashexe</div>
                    </li>
                    <li><a href="/article/1829275569846579200.htm"
                           title="Linux基础软件-lvm" target="_blank">Linux基础软件-lvm</a>
                        <span class="text-muted">dessler</span>
<a class="tag" taget="_blank" href="/search/Linux%E8%BF%9B%E9%98%B6/1.htm">Linux进阶</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Linux%E5%9F%BA%E7%A1%80%E8%BD%AF%E4%BB%B6/1.htm">Linux基础软件</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。Linux进阶部分又分了很多小的部分,我们刚讲完了Linux日常运维。讲的那些东西都算是系统自带的,但是Linux作为一个服务器操作系统,肯定是要安装运行软件来满足我们的业务需要,本章基础软件部分,将从下面几个部分来讲解:Linux基础软件-软件安装Linux基础软件-yum(</div>
                    </li>
                    <li><a href="/article/1829264351559774208.htm"
                           title="Elastic Search常用命令" target="_blank">Elastic Search常用命令</a>
                        <span class="text-muted">胖毁青春,瘦解百病</span>
<a class="tag" taget="_blank" href="/search/ES/1.htm">ES</a><a class="tag" taget="_blank" href="/search/es/1.htm">es</a>
                        <div>1测试环境信息ElasticSearch服务器:192.168.0.100用户:docker启停:dockerstart/stop/restartelasticsearchKibana控制台:http://192.168.0.100:5601/app/kibana#/dev_tools/console2基本概念Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与</div>
                    </li>
                    <li><a href="/article/1829259436338802688.htm"
                           title="dockerfile 微服务 私有仓库" target="_blank">dockerfile 微服务 私有仓库</a>
                        <span class="text-muted">small white poplar</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>commit的局限用于制作简单的镜像但是碰到需要设置环境变量默认启动命令指定开放哪些端口就会显得笨拙所以dockerfile是一种更强大的镜像制作方式,编写类似脚本的dockerfile文件,通过该文件制作镜像镜像编排Dockerfile语法CMD中的执行指令放入前台运行需要通过rpm-ql包|grepbao.service看里面的启动命令语法指令语法说明FROM基础镜像RUN制作镜像时执行的命令</div>
                    </li>
                    <li><a href="/article/1829258174843154432.htm"
                           title="dockerfile拉取私库镜像_从私有仓库拉取镜像" target="_blank">dockerfile拉取私库镜像_从私有仓库拉取镜像</a>
                        <span class="text-muted">weixin_39566593</span>

                        <div>从私有仓库拉取镜像浏览0扫码分享2019-10-2717:16:54origin_last_modified:2019-06-0606:18(#14740)译文原文英文原文版权声明:本文为码农文档原创译文,遵循CC4.0BY-NC-SA版权协议,转载请附上原文出处链接和本声明。公告:如果您也想加入翻译队伍,或者您有相关中文文档想要贡献给大家,请联系coderdocument@163.com,谢谢!</div>
                    </li>
                    <li><a href="/article/1829249097865981952.htm"
                           title="云端技术驾驭DAY07——Dockerfile详解、容器镜像制作、私有仓库" target="_blank">云端技术驾驭DAY07——Dockerfile详解、容器镜像制作、私有仓库</a>
                        <span class="text-muted">川川野马</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E7%AB%AF%E6%8A%80%E6%9C%AF%E9%A9%BE%E9%A9%AD%E4%B9%8B%E8%B7%AF/1.htm">云端技术驾驭之路</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a>
                        <div>往期回顾:云端技术驾驭DAY01——云计算底层技术奥秘、云服务器磁盘技术、虚拟化管理、公有云概述云端技术驾驭DAY02——华为云管理、云主机管理、跳板机配置、制作私有镜像模板云端技术驾驭DAY03——云主机网站部署、web集群部署、Elasticsearch安装云端技术驾驭DAY04——Logstash安装部署及插件模块云端技术驾驭DAY06——容器技术概述、镜像与容器管理、定制简单镜像、容器内安</div>
                    </li>
                    <li><a href="/article/1829231194978480128.htm"
                           title="K8S磁盘与Sleuth 引发的redis经常丢失链接等怪异问题。" target="_blank">K8S磁盘与Sleuth 引发的redis经常丢失链接等怪异问题。</a>
                        <span class="text-muted">appearappear</span>
<a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a>
                        <div>描述Docker容器挂载磁盘记录Springboot的日志,挂载磁盘性能很低,导致java应用响应缓慢增加SpringCloud的sleuth,标记出某次请求的日志,查看哪里耗时增加。问题1出现了,redis时不时丢失链接,使用redis客户端访问正常问题2看日志看不出明显耗时日志,使用skyWalking查看,日志之间都有规律的耗时相对较长问题原因问题1:sleuth与redis兼容性出现了问题</div>
                    </li>
                    <li><a href="/article/1829225902060433408.htm"
                           title="Ubuntu 上一键部署 MySQL 服务器" target="_blank">Ubuntu 上一键部署 MySQL 服务器</a>
                        <span class="text-muted">shelby_loo</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>各位朋友,今天我就在阿贝云的免费云服务器上,来一键部署一个MySQL数据库服务。阿贝云的免费云服务器配备了不错的硬件配置—1核CPU、1G内存、10G硬盘和5M带宽,对于我这种需要灵活测试环境的家伙来说,这可是再合适不过了。这样一个免费的云服务器,性能也不赖,用起来超级方便,简直是太棒了!首先,我们来简单了解下要用到的Docker和MySQL软件。Docker是一个开源的容器引擎,使用Docker</div>
                    </li>
                    <li><a href="/article/1829225397695377408.htm"
                           title="Docker镜像拉取失败解决方案" target="_blank">Docker镜像拉取失败解决方案</a>
                        <span class="text-muted">Hoxy.R</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>文章目录问题及分析解决方案1.先排查DNS2.修改源3.代理配置4.重启docker服务问题解决问题及分析今天我用docker拉取镜像的时候报错errorpullingimageconfiguration:downloadfailedafterattempts=6:dialtcpxxx.xx.xxx.xx:xxx:i/otimeout连接超时大概率以下两个问题1.DNS配置有误2.镜像源配置问题3</div>
                    </li>
                    <li><a href="/article/1829221204444147712.htm"
                           title="精进日记|累" target="_blank">精进日记|累</a>
                        <span class="text-muted">精进精进再精进</span>

                        <div>r2第十六天-20171114精进收获清单1.23点按时熄灯,才能早起!2.早起先做最重要的事,不要做计划3.【今日待办】神圣不可侵犯,每天基于今日待办办事,每天完成锻炼后第一件事就是规划今日待办一、累今天早上一去公司就被猪队友运维同事搞了线上问题给缠住了,一上午都在解决问题和查原因,晚上才有时间写了复盘邮件,搞到23点才回家。真心累!二、2017精进目标雅思6炸:12月之前通过六块腹肌:第一步体</div>
                    </li>
                    <li><a href="/article/1829219593504256000.htm"
                           title="scrapy学习笔记0828-下" target="_blank">scrapy学习笔记0828-下</a>
                        <span class="text-muted">github_czy</span>
<a class="tag" taget="_blank" href="/search/scrapy/1.htm">scrapy</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>1.爬取动态页面我们遇见的大多数网站不大可能会是单纯的静态网站,实际中更常见的是JavaScript通过HTTP请求跟网站动态交互获取数据(AJAX),然后使用数据更新HTML页面。爬取此类动态网页需要先执行页面中的JavaScript代码渲染页面,再进行爬取。在这里我们采用scrapy官方推荐的Splash渲染引擎,我们需要通过docker来安装splash并使其运行起来,这里就暂时不展开,安装</div>
                    </li>
                    <li><a href="/article/1829219467159236608.htm"
                           title="docker安装AWVS15(网络拉取失败,提供百度云镜像下载)" target="_blank">docker安装AWVS15(网络拉取失败,提供百度云镜像下载)</a>
                        <span class="text-muted">红酒味蛋糕_</span>
<a class="tag" taget="_blank" href="/search/%E5%8F%A5%E8%8A%92%E5%AE%89%E5%85%A8%E5%AE%9E%E9%AA%8C%E5%AE%A4-%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">句芒安全实验室-网络安全</a><a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8%E5%B7%A5%E5%85%B7/1.htm">web安全工具</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E5%B7%A5%E5%85%B7/1.htm">安全工具</a><a class="tag" taget="_blank" href="/search/%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/1.htm">渗透测试</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a>
                        <div>一.背景准备在服务器上安装AWVS15用于扫描,直接拉取一直提示网络错误,刚好本地上有容器,就直接将本地的AWVS容器打包上传了,顺带上传到百度云来避免今后直接拉取网络出错的情况。考虑到其他师傅可能也会遇到相似问题,记录分享一下。二.使用步骤1.网络存在问题,如上图我遇到的情况因为我本地的镜像是是xrsec/awvs所以就以此镜像为例1.1通过百度云下载镜像链接:https://pan.baidu</div>
                    </li>
                    <li><a href="/article/1829217829698760704.htm"
                           title="线上考试系统---虚拟化技术部署" target="_blank">线上考试系统---虚拟化技术部署</a>
                        <span class="text-muted">琉璃一梦</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97%E5%AD%A6%E4%B9%A0/1.htm">云计算学习</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a>
                        <div>部署前端服务器1.将资源上传到服务器scp-rdist/root@192.168.1.50:~2.在服务器上创建基础容器[root@docker0~]#dockerrun-it--namec0centos:latest/bin/bash[root@c1092b8c9ce5/]#[root@docker0~]#[root@docker0~]#dockerattachc03.在容器中修改yum源[ro</div>
                    </li>
                    <li><a href="/article/1829201433187151872.htm"
                           title="区块链的搭建与运维4" target="_blank">区块链的搭建与运维4</a>
                        <span class="text-muted">什么都想学。</span>
<a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>区块链的搭建与运维4任务一:区块链产品需求分析与方案设计本任务需要依据项目背景完成需求分析与方案设计,具体要求如下:按照新能源系统的需求规定,用户可以通过本系统实现能源管理与交易、新能源资产管理与交易、用户管理等功能。本系统软件部分可划分为浏览器页面、服务器端。用户通过浏览器访问相关页面,输入业务请求,发送到服务器端,调用业务系统接口处理后,把业务处理应答发送给客户端用户。由于在后续设计中,对各功</div>
                    </li>
                    <li><a href="/article/1829178368747204608.htm"
                           title="云计算day35" target="_blank">云计算day35</a>
                        <span class="text-muted">巭氼</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a>
                        <div>⼀、Docker-compose定义1.dockercompose是docker官⽅的开源项⽬,负责实现对docker容器集群的快速编排(容器,依赖,⽹络,挂载。。)2.compose是docker公司推出的⼀个⼯具软件,可以管理多个docker容器组成的应⽤3.需要定义⼀个YAML格式的配置⽂件docker-compose.yml,写好多个容器之间的调⽤关系4.使⽤compose的步骤、5.1.</div>
                    </li>
                    <li><a href="/article/1829178242511237120.htm"
                           title="云计算day33" target="_blank">云计算day33</a>
                        <span class="text-muted">巭氼</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a>
                        <div>在Dockerfile中定义所需要执⾏的指令,使⽤dockerbuild创建镜像,过程中会按照dockerfile所定义的内容进⾏打开临时性容器,把dockerfile中命令全部执⾏完成,就得到了⼀个容器应⽤镜像,每⼀⾏命令都会出现容器,都会使⽤dockercommit进⾏提交⼀个临时性的镜像注意执⾏的命令越多,镜像体积越⼤,所以需要优化镜像Dockerfile关键字1.FORM指定基础镜像为该镜</div>
                    </li>
                    <li><a href="/article/1829174585669545984.htm"
                           title="云计算day32" target="_blank">云计算day32</a>
                        <span class="text-muted">巭氼</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a>
                        <div>docker容器==》k8s编排=〉openstack存储监控⽇志以及其他的内容回顾1.环境的安装catoverlay>br_netfilter>EOFoverllaybr_netfiltercatnet.bridge.bridge-nf-call-iptables=1>net.bridge.bridge-nf-call-ip6tables=1>net.ipv4.ip_forward=1>EOF#</div>
                    </li>
                                <li><a href="/article/8.htm"
                                       title="LeetCode[Math] - #66 Plus One" target="_blank">LeetCode[Math] - #66 Plus One</a>
                                    <span class="text-muted">Cwind</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/LeetCode/1.htm">LeetCode</a><a class="tag" taget="_blank" href="/search/%E9%A2%98%E8%A7%A3/1.htm">题解</a><a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a><a class="tag" taget="_blank" href="/search/Math/1.htm">Math</a>
                                    <div>原题链接:#66 Plus One 
  
要求: 
给定一个用数字数组表示的非负整数,如num1 = {1, 2, 3, 9}, num2 = {9, 9}等,给这个数加上1。 
注意: 
1. 数字的较高位存在数组的头上,即num1表示数字1239 
2. 每一位(数组中的每个元素)的取值范围为0~9 
  
难度:简单 
  
分析: 
题目比较简单,只须从数组</div>
                                </li>
                                <li><a href="/article/135.htm"
                                       title="JQuery中$.ajax()方法参数详解" target="_blank">JQuery中$.ajax()方法参数详解</a>
                                    <span class="text-muted">AILIKES</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jsonp/1.htm">jsonp</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a>
                                    <div>url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。 
type: 要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和    delete也可以使用,但仅部分浏览器支持。 
timeout: 要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局</div>
                                </li>
                                <li><a href="/article/262.htm"
                                       title="JConsole & JVisualVM远程监视Webphere服务器JVM" target="_blank">JConsole & JVisualVM远程监视Webphere服务器JVM</a>
                                    <span class="text-muted">Kai_Ge</span>
<a class="tag" taget="_blank" href="/search/JVisualVM/1.htm">JVisualVM</a><a class="tag" taget="_blank" href="/search/JConsole/1.htm">JConsole</a><a class="tag" taget="_blank" href="/search/Webphere/1.htm">Webphere</a>
                                    <div>    JConsole是JDK里自带的一个工具,可以监测Java程序运行时所有对象的申请、释放等动作,将内存管理的所有信息进行统计、分析、可视化。我们可以根据这些信息判断程序是否有内存泄漏问题。 
  使用JConsole工具来分析WAS的JVM问题,需要进行相关的配置。 
  首先我们看WAS服务器端的配置. 
  1、登录was控制台https://10.4.119.18</div>
                                </li>
                                <li><a href="/article/389.htm"
                                       title="自定义annotation" target="_blank">自定义annotation</a>
                                    <span class="text-muted">120153216</span>
<a class="tag" taget="_blank" href="/search/annotation/1.htm">annotation</a>
                                    <div>Java annotation 自定义注释@interface的用法  一、什么是注释  
 
    说起注释,得先提一提什么是元数据(metadata)。所谓元数据就是数据的数据。也就是说,元数据是描述数据的。就象数据表中的字段一样,每个字段描述了这个字段下的数据的含义。而J2SE5.0中提供的注释就是java源代码的元数据,也就是说注释是描述java源</div>
                                </li>
                                <li><a href="/article/516.htm"
                                       title="CentOS 5/6.X 使用 EPEL YUM源" target="_blank">CentOS 5/6.X 使用 EPEL YUM源</a>
                                    <span class="text-muted">2002wmj</span>
<a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a>
                                    <div>CentOS 6.X 安装使用EPEL YUM源1. 查看操作系统版本[root@node1 ~]# uname -a Linux node1.test.com 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux [root@node1 ~]#</div>
                                </li>
                                <li><a href="/article/643.htm"
                                       title="在SQLSERVER中查找缺失和无用的索引SQL" target="_blank">在SQLSERVER中查找缺失和无用的索引SQL</a>
                                    <span class="text-muted">357029540</span>
<a class="tag" taget="_blank" href="/search/SQL+Server/1.htm">SQL Server</a>
                                    <div>--缺失的索引 
SELECT  avg_total_user_cost * avg_user_impact * ( user_scans + user_seeks ) AS PossibleImprovement ,  
        last_user_seek ,  
  </div>
                                </li>
                                <li><a href="/article/770.htm"
                                       title="Spring3 MVC 笔记(二) —json+rest优化" target="_blank">Spring3 MVC 笔记(二) —json+rest优化</a>
                                    <span class="text-muted">7454103</span>
<a class="tag" taget="_blank" href="/search/Spring3+MVC/1.htm">Spring3 MVC</a>
                                    <div>接上次的 spring mvc 注解的一些详细信息! 
                         其实也是一些个人的学习笔记  呵呵! 
 
</div>
                                </li>
                                <li><a href="/article/897.htm"
                                       title="替换“\”的时候报错Unexpected internal error near index 1 \ ^" target="_blank">替换“\”的时候报错Unexpected internal error near index 1 \ ^</a>
                                    <span class="text-muted">adminjun</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E2%80%9C%5C%E6%9B%BF%E6%8D%A2%E2%80%9D/1.htm">“\替换”</a>
                                    <div>发现还是有些东西没有刻子脑子里,,过段时间就没什么概念了,所以贴出来...以免再忘... 
  
在拆分字符串时遇到通过 \ 来拆分,可是用所以想通过转义 \\ 来拆分的时候会报异常 
   
 
 public class Main {   
    
     /*</div>
                                </li>
                                <li><a href="/article/1024.htm"
                                       title="POJ 1035 Spell checker(哈希表)" target="_blank">POJ 1035 Spell checker(哈希表)</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/%E6%9A%B4%E5%8A%9B%E6%B1%82%E8%A7%A3--%E5%93%88%E5%B8%8C%E8%A1%A8/1.htm">暴力求解--哈希表</a>
                                    <div>/*
题意:输入字典,然后输入单词,判断字典中是否出现过该单词,或者是否进行删除、添加、替换操作,如果是,则输出对应的字典中的单词
要求按照输入时候的排名输出

题解:建立两个哈希表。一个存储字典和输入字典中单词的排名,一个进行最后输出的判重
*/

#include <iostream>
//#define 
using namespace std;
const int HASH =</div>
                                </li>
                                <li><a href="/article/1151.htm"
                                       title="通过原型实现javascript Array的去重、最大值和最小值" target="_blank">通过原型实现javascript Array的去重、最大值和最小值</a>
                                    <span class="text-muted">ayaoxinchao</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/array/1.htm">array</a><a class="tag" taget="_blank" href="/search/prototype/1.htm">prototype</a>
                                    <div>用原型函数(prototype)可以定义一些很方便的自定义函数,实现各种自定义功能。本次主要是实现了Array的去重、获取最大值和最小值。 
实现代码如下: 
  
<script type="text/javascript">
	Array.prototype.unique = function() {
		var a = {};
		var le</div>
                                </li>
                                <li><a href="/article/1278.htm"
                                       title="UIWebView实现https双向认证请求" target="_blank">UIWebView实现https双向认证请求</a>
                                    <span class="text-muted">bewithme</span>
<a class="tag" taget="_blank" href="/search/UIWebView/1.htm">UIWebView</a><a class="tag" taget="_blank" href="/search/https/1.htm">https</a><a class="tag" taget="_blank" href="/search/Objective-C/1.htm">Objective-C</a>
                                    <div>  
        什么是HTTPS双向认证我已在先前的博文 ASIHTTPRequest实现https双向认证请求 
中有讲述,不理解的读者可以先复习一下。本文是用UIWebView来实现对需要客户端证书验证的服务请求,网上有些文章中有涉及到此内容,但都只言片语,没有讲完全,更没有完整的代码,让人困扰不已。但是此知</div>
                                </li>
                                <li><a href="/article/1405.htm"
                                       title="NoSQL数据库之Redis数据库管理(Redis高级应用之事务处理、持久化操作、pub_sub、虚拟内存)" target="_blank">NoSQL数据库之Redis数据库管理(Redis高级应用之事务处理、持久化操作、pub_sub、虚拟内存)</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/NoSQL/1.htm">NoSQL</a>
                                    <div>3.事务处理 
        Redis对事务的支持目前不比较简单。Redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。当一个client在一个连接中发出multi命令时,这个连接会进入一个事务上下文,该连接后续的命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中</div>
                                </li>
                                <li><a href="/article/1532.htm"
                                       title="各数据库分页sql备忘" target="_blank">各数据库分页sql备忘</a>
                                    <span class="text-muted">bingyingao</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E9%A1%B5/1.htm">分页</a>
                                    <div>ORACLE 
 
下面这个效率很低 
SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM IPAY_RCD_FS_RETURN order by id desc) A ) WHERE RN <20; 
 
下面这个效率很高 
SELECT A.*, ROWNUM RN FROM (SELECT * FROM IPAY_RCD_</div>
                                </li>
                                <li><a href="/article/1659.htm"
                                       title="【Scala七】Scala核心一:函数" target="_blank">【Scala七】Scala核心一:函数</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a>
                                    <div>1. 如果函数体只有一行代码,则可以不用写{},比如 
def print(x: Int) = println(x) 
一行上的多条语句用分号隔开,则只有第一句属于方法体,例如 
  
def printWithValue(x: Int) : String= println(x); "ABC" 
  
上面的代码报错,因为,printWithValue的方法</div>
                                </li>
                                <li><a href="/article/1786.htm"
                                       title="了解GHC的factorial编译过程" target="_blank">了解GHC的factorial编译过程</a>
                                    <span class="text-muted">bookjovi</span>
<a class="tag" taget="_blank" href="/search/haskell/1.htm">haskell</a>
                                    <div>GHC相对其他主流语言的编译器或解释器还是比较复杂的,一部分原因是haskell本身的设计就不易于实现compiler,如lazy特性,static typed,类型推导等。 
关于GHC的内部实现有篇文章说的挺好,这里,文中在RTS一节中详细说了haskell的concurrent实现,里面提到了green thread,如果熟悉Go语言的话就会发现,ghc的concurrent实现和Go有点类</div>
                                </li>
                                <li><a href="/article/1913.htm"
                                       title="Java-Collections Framework学习与总结-LinkedHashMap" target="_blank">Java-Collections Framework学习与总结-LinkedHashMap</a>
                                    <span class="text-muted">BrokenDreams</span>
<a class="tag" taget="_blank" href="/search/LinkedHashMap/1.htm">LinkedHashMap</a>
                                    <div>        前面总结了java.util.HashMap,了解了其内部由散列表实现,每个桶内是一个单向链表。那有没有双向链表的实现呢?双向链表的实现会具备什么特性呢?来看一下HashMap的一个子类——java.util.LinkedHashMap。 
      </div>
                                </li>
                                <li><a href="/article/2040.htm"
                                       title="读《研磨设计模式》-代码笔记-抽象工厂模式-Abstract Factory" target="_blank">读《研磨设计模式》-代码笔记-抽象工厂模式-Abstract Factory</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/abstract/1.htm">abstract</a>
                                    <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ 
 
 


package design.pattern;

/*
 * Abstract Factory Pattern
 * 抽象工厂模式的目的是:
 * 通过在抽象工厂里面定义一组产品接口,方便地切换“产品簇”
 * 这些接口是相关或者相依赖的</div>
                                </li>
                                <li><a href="/article/2167.htm"
                                       title="压暗面部高光" target="_blank">压暗面部高光</a>
                                    <span class="text-muted">cherishLC</span>
<a class="tag" taget="_blank" href="/search/PS/1.htm">PS</a>
                                    <div>方法一、压暗高光&重新着色 
当皮肤很油又使用闪光灯时,很容易在面部形成高光区域。 
下面讲一下我今天处理高光区域的心得: 
皮肤可以分为纹理和色彩两个属性。其中纹理主要由亮度通道(Lab模式的L通道)决定,色彩则由a、b通道确定。 
处理思路为在保持高光区域纹理的情况下,对高光区域着色。具体步骤为:降低高光区域的整体的亮度,再进行着色。 
如果想简化步骤,可以只进行着色(参看下面的步骤1</div>
                                </li>
                                <li><a href="/article/2294.htm"
                                       title="Java VisualVM监控远程JVM" target="_blank">Java VisualVM监控远程JVM</a>
                                    <span class="text-muted">crabdave</span>
<a class="tag" taget="_blank" href="/search/visualvm/1.htm">visualvm</a>
                                    <div>Java VisualVM监控远程JVM  
  
JDK1.6开始自带的VisualVM就是不错的监控工具. 
这个工具就在JAVA_HOME\bin\目录下的jvisualvm.exe, 双击这个文件就能看到界面 
  
通过JMX连接远程机器, 需要经过下面的配置: 
1. 修改远程机器JDK配置文件 (我这里远程机器是linux). 
   </div>
                                </li>
                                <li><a href="/article/2421.htm"
                                       title="Saiku去掉登录模块" target="_blank">Saiku去掉登录模块</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/saiku/1.htm">saiku</a><a class="tag" taget="_blank" href="/search/%E7%99%BB%E5%BD%95/1.htm">登录</a><a class="tag" taget="_blank" href="/search/olap/1.htm">olap</a><a class="tag" taget="_blank" href="/search/BI/1.htm">BI</a>
                                    <div> 
1、修改applicationContext-saiku-webapp.xml 
 
<security:intercept-url pattern="/rest/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />  
<security:intercept-url pattern=&qu</div>
                                </li>
                                <li><a href="/article/2548.htm"
                                       title="浅析 Flex中的Focus" target="_blank">浅析 Flex中的Focus</a>
                                    <span class="text-muted">dsjt</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/Flex/1.htm">Flex</a><a class="tag" taget="_blank" href="/search/Flash/1.htm">Flash</a>
                                    <div>关键字:focus、 setFocus、 IFocusManager、KeyboardEvent 
 焦点、设置焦点、获得焦点、键盘事件 
 
 
 一、无焦点的困扰——组件监听不到键盘事件 
原因:只有获得焦点的组件(确切说是InteractiveObject)才能监听到键盘事件的目标阶段;键盘事件(flash.events.KeyboardEvent)参与冒泡阶段,所以焦点组件的父项(以及它爸</div>
                                </li>
                                <li><a href="/article/2675.htm"
                                       title="Yii全局函数使用" target="_blank">Yii全局函数使用</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a>
                                    <div>由于YII致力于完美的整合第三方库,它并没有定义任何全局函数。yii中的每一个应用都需要全类别和对象范围。例如,Yii::app()->user;Yii::app()->params['name'];等等。我们可以自行设定全局函数,使得代码看起来更加简洁易用。(原文地址) 
我们可以保存在globals.php在protected目录下。然后,在入口脚本index.php的,我们包括在</div>
                                </li>
                                <li><a href="/article/2802.htm"
                                       title="设计模式之单例模式二(解决无序写入的问题)" target="_blank">设计模式之单例模式二(解决无序写入的问题)</a>
                                    <span class="text-muted">come_for_dream</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F/1.htm">单例模式</a><a class="tag" taget="_blank" href="/search/volatile/1.htm">volatile</a><a class="tag" taget="_blank" href="/search/%E4%B9%B1%E5%BA%8F%E6%89%A7%E8%A1%8C/1.htm">乱序执行</a><a class="tag" taget="_blank" href="/search/%E5%8F%8C%E9%87%8D%E6%A3%80%E9%AA%8C%E9%94%81/1.htm">双重检验锁</a>
                                    <div>                在上篇文章中我们使用了双重检验锁的方式避免懒汉式单例模式下由于多线程造成的实例被多次创建的问题,但是因为由于JVM为了使得处理器内部的运算单元能充分利用,处理器可能会对输入代码进行乱序执行(Out Of Order Execute)优化,处理器会在计算之后将乱序执行的结果进行重组,保证该</div>
                                </li>
                                <li><a href="/article/2929.htm"
                                       title="程序员从初级到高级的蜕变" target="_blank">程序员从初级到高级的蜕变</a>
                                    <span class="text-muted">gcq511120594</span>
<a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a>
                                    <div>软件开发是一个奇怪的行业,市场远远供不应求。这是一个已经存在多年的问题,而且随着时间的流逝,愈演愈烈。 
我们严重缺乏能够满足需求的人才。这个行业相当年轻。大多数软件项目是失败的。几乎所有的项目都会超出预算。我们解决问题的最佳指导方针可以归结为——“用一些通用方法去解决问题,当然这些方法常常不管用,于是,唯一能做的就是不断地尝试,逐个看看是否奏效”。 
现在我们把淫浸代码时间超过3年的开发人员称为</div>
                                </li>
                                <li><a href="/article/3056.htm"
                                       title="Reverse Linked List" target="_blank">Reverse Linked List</a>
                                    <span class="text-muted">hcx2013</span>
<a class="tag" taget="_blank" href="/search/list/1.htm">list</a>
                                    <div>Reverse a singly linked list. 
  
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
p</div>
                                </li>
                                <li><a href="/article/3183.htm"
                                       title="Spring4.1新特性——数据库集成测试" target="_blank">Spring4.1新特性——数据库集成测试</a>
                                    <span class="text-muted">jinnianshilongnian</span>
<a class="tag" taget="_blank" href="/search/spring+4.1/1.htm">spring 4.1</a>
                                    <div>目录 
Spring4.1新特性——综述 
Spring4.1新特性——Spring核心部分及其他 
Spring4.1新特性——Spring缓存框架增强 
Spring4.1新特性——异步调用和事件机制的异常处理 
Spring4.1新特性——数据库集成测试脚本初始化 
Spring4.1新特性——Spring MVC增强 
Spring4.1新特性——页面自动化测试框架Spring MVC T</div>
                                </li>
                                <li><a href="/article/3310.htm"
                                       title="C# Ajax上传图片同时生成微缩图(附Demo)" target="_blank">C# Ajax上传图片同时生成微缩图(附Demo)</a>
                                    <span class="text-muted">liyonghui160com</span>

                                    <div>  
  
1.Ajax无刷新上传图片,详情请阅我的这篇文章。(jquery + c# ashx) 
        2.C#位图处理  System.Drawing。 
        3.最新demo支持IE7,IE8,Fir</div>
                                </li>
                                <li><a href="/article/3437.htm"
                                       title="Java list三种遍历方法性能比较" target="_blank">Java list三种遍历方法性能比较</a>
                                    <span class="text-muted">pda158</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便测试各种遍历方法的性能,测试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象,测试代码例如以下: 
package com.hisense.tiger.list;
import java.util.ArrayList;
import java.util.Iterator;</div>
                                </li>
                                <li><a href="/article/3564.htm"
                                       title="300个涵盖IT各方面的免费资源(上)——商业与市场篇" target="_blank">300个涵盖IT各方面的免费资源(上)——商业与市场篇</a>
                                    <span class="text-muted">shoothao</span>
<a class="tag" taget="_blank" href="/search/seo/1.htm">seo</a><a class="tag" taget="_blank" href="/search/%E5%95%86%E4%B8%9A%E4%B8%8E%E5%B8%82%E5%9C%BA/1.htm">商业与市场</a><a class="tag" taget="_blank" href="/search/IT%E8%B5%84%E6%BA%90/1.htm">IT资源</a><a class="tag" taget="_blank" href="/search/%E5%85%8D%E8%B4%B9%E8%B5%84%E6%BA%90/1.htm">免费资源</a>
                                    <div> 
 A.网站模板+logo+服务器主机+发票生成 
 
 
  HTML5 UP:响应式的HTML5和CSS3网站模板。 
  Bootswatch:免费的Bootstrap主题。 
  Templated:收集了845个免费的CSS和HTML5网站模板。 
  Wordpress.org|Wordpress.com:可免费创建你的新网站。 
  Strikingly:关注领域中免费无限的移动优</div>
                                </li>
                                <li><a href="/article/3691.htm"
                                       title="localStorage、sessionStorage" target="_blank">localStorage、sessionStorage</a>
                                    <span class="text-muted">uule</span>
<a class="tag" taget="_blank" href="/search/localStorage/1.htm">localStorage</a>
                                    <div>W3School 例子 
  
HTML5 提供了两种在客户端存储数据的新方法: 
localStorage - 没有时间限制的数据存储 
sessionStorage - 针对一个 session 的数据存储 
  
之前,这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>