Docker容器引擎

文章目录

  • 一、概述
    • 1. Docker能解决的问题
    • 2. Docker思想
    • 3. Docker为什么这么火?(作用)
    • 4. 底层
    • 5. 官网和文档
    • 6. 基本组成(图解)
    • 7. 核心概念(名词)
    • 10. Docker工作流程
  • 二、安装
    • 1. 环境准备
      • Linux服务器+CentOS7+远程连接工具
      • 环境查看命令
    • 2. 安装步骤
      • 1、卸载旧版本
      • 2、需要的安装包
      • 3、设置镜像的仓库
      • 4、安装Docker引擎
      • 5、启动Docker
      • 6、测试是否启动
      • 7、运行 hello-world 映像来验证是否正确安装了Docker Engine
      • 8、查看运行的镜像
      • 9、阿里云服务器配置镜像加速器
  • 三、卸载
    • 1. 卸载Docker Engine,CLI和Containerd软件包
    • 2. 主机上的映像,容器,卷或自定义配置文件不会自动删除。要删除所有图像,容器和卷
  • 四、命令
    • 1. 帮助命令
      • docker version(显示Docker版本信息)
      • docker info(显示Docker的系统信息 包括镜像和容器的数量)
      • docker --help(帮助命令)
      • docker images --help(显示该命令的帮助信息)
    • 2. 镜像命令
      • docker images(查询容器所有的镜像)
      • docker search(搜索镜像)
      • docker pull(下载镜像)
      • docker rmi(删除镜像)
    • 3. 容器命令
      • docker run(新建容器并启动)
      • (退出容器)
      • docker ps(查看当前正在运行的容器)
      • docker rm (删除容器)
      • (启动和停止容器)
      • docker logs(查看日志)
      • docker top(查看正在运行的容器内部的进程信息)
      • docker inspect(查看镜像的元数据)
      • (进入当前正在运行的容器)
      • (从容器内 拷贝文件到 主机上)
      • (从宿主机 拷贝文件到 容器中)
    • 4. 命令图解
    • 5. 命令实战
      • 安装运行Nginx容器
      • 安装运行Tomcat容器
      • 安装运行MySQL8.0容器
  • 五、镜像
    • 1. 概念
    • 2. 作用
    • 3. 如何得到镜像?
    • 4. 镜像原理
      • UnionFS(联合文件系统)
      • 镜像加载原理
      • 分层原理(Layers)
    • 5. 提交镜像
  • 六、容器数据卷
  • 七、DockerFile
  • 八、IDEA整合Docker
  • 九、Docker网络
  • 十、Docker集群
  • 十一、Docker集群管理
  • 十二、Docker持续化部署

一、概述

1. Docker能解决的问题

统一开发和运维的环境

开发和测试的日常对话:我在我电脑上可以运行~!
一款产品:开发到部署,是两个环境 存在环境的问题?
开发在Windows 发布在Linux…(环境差别很大,而且安装配置麻烦,深有体会~!)

2. Docker思想

  • 集装箱
  • 隔离机制

3. Docker为什么这么火?(作用)

  • 十分轻巧(相比于虚拟机)
    他不是一台完整的带操作系统的电脑,只是最核心的环境,其他系统和外部硬件共用宿主的
  • 应用更快速的交付和部署
    传统:一堆帮助文档,配置环境,安装程序
    Docker:打包(带应用的运行环境)镜像发布、测试,一键运行
  • 更便捷的升级和扩容
    使用了Docker之后,部署应用和搭积木一样
    项目打包为一个镜像,要扩展服务 只需在服务器上运行即可(服务器A、服务器B … …)
  • 更简单的系统运维
    使用了Docker之后,我们开发、测试、运维的环境是高度一致的
  • 更高效的计算机资源利用
    Docker是内核级别的虚拟机,可以在一个物理机上运行很多的容器实例!
    服务器的性能可以被压榨到极致!

4. 底层

基于Go语言开发的

5. 官网和文档

官网地址
文档地址

6. 基本组成(图解)

Docker容器引擎_第1张图片

7. 核心概念(名词)

  • 镜像(image)
    Docker镜像好比一个模板,通过这个模板可以创建容器服务。

Tomcat镜像 --> run --> Tomcat01容器(提供服务)

    通过这个模板可以创建多个容器。

Tomcat镜像 --> run --> Tomcat02容器(提供服务)

  • 容器(container)
    Docker利用容器技术,独立运行一个或一组应用,这些应用是通过镜像来创建的

  • 仓库(repository)

    • 公有仓库 - 默认仓库是国外的
      我们可以 配置 阿里云的Docker仓库(镜像加速)
    • 私有仓库

10. Docker工作流程

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

二、安装

1. 环境准备

  • Linux服务器+CentOS7+远程连接工具

  • 环境查看命令

uname -r

[root@sunmmerwind ~]# uname -r
4.18.0-240.15.1.el8_3.x86_64

cat /etc/os-release

[root@sunmmerwind ~]# uname -r
4.18.0-240.15.1.el8_3.x86_64
[root@sunmmerwind ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="8"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"

2. 安装步骤

1、卸载旧版本

# 直接复制粘贴
yum remove docker \
           docker-client \
           docker-client-latest \
           docker-common \
           docker-latest \
           docker-latest-logrotate \
           docker-logrotate \
           docker-engine

2、需要的安装包

[root@sunmmerwind ~]# 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

4、安装Docker引擎

[root@sunmmerwind ~]# yum install docker-ce docker-ce-cli containerd.io

ce:社区版
ee:企业版(收费)

5、启动Docker

[root@sunmmerwind ~]# systemctl start docker

6、测试是否启动

[root@sunmmerwind ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.6
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        370c289
 Built:             Fri Apr  9 22:44:36 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.6
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       8728dd2
  Built:            Fri Apr  9 22:43:02 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.4
  GitCommit:        05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc:
  Version:          1.0.0-rc93
  GitCommit:        12644e614e25b05da6fd08a38ffa0cfe1903fdec
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

7、运行 hello-world 映像来验证是否正确安装了Docker Engine

[root@sunmmerwind ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete 
Digest: sha256:f2266cbfc127c960fd30e76b7c792dc23b588c0db76233517e1891a4e357d519
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

8、查看运行的镜像

[root@sunmmerwind ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    d1165f221234   6 weeks ago   13.3kB
[root@sunmmerwind ~]# docker ps -a
CONTAINER ID   IMAGE         COMMAND    CREATED              STATUS                          PORTS     NAMES
58715163d8e3   hello-world   "/hello"   About a minute ago   Exited (0) About a minute ago             wonderful_hellman

9、阿里云服务器配置镜像加速器

1)登陆阿里云
2)在弹性计算里面 找到 容器镜像服务
3)免费开通
4)执行下面命令就可以用了

# 创建目录
sudo mkdir -p /etc/docker
# 设置阿里云镜像服务 带最后的EOF
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://noi9j7o6.mirror.aliyuncs.com"]
}
EOF
# 重新加载
sudo systemctl daemon-reload
# 重启Docker
sudo systemctl restart docker

三、卸载

1. 卸载Docker Engine,CLI和Containerd软件包

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

2. 主机上的映像,容器,卷或自定义配置文件不会自动删除。要删除所有图像,容器和卷

rm -rf /var/lib/docker

四、命令

1. 帮助命令

  • docker version(显示Docker版本信息)

Client: Docker Engine - Community
 Version:           19.03.12
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        48a66213fe
 Built:             Mon Jun 22 15:46:54 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.12
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.10
  Git commit:       48a66213fe
  Built:            Mon Jun 22 15:45:28 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
  • docker info(显示Docker的系统信息 包括镜像和容器的数量)

Client: Docker Engine - Community
 Version:           19.03.12
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        48a66213fe
 Built:             Mon Jun 22 15:46:54 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.12
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.10
  Git commit:       48a66213fe
  Built:            Mon Jun 22 15:45:28 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
[root@iZbf2jzc4i64zvZ ~]# ^C
[root@iZbf2jzc4i64zvZ ~]# clear
[root@iZbf2jzc4i64zvZ ~]# docker info
Client:
 Debug Mode: false

Server:
 Containers: 1
  Running: 0
  Paused: 0
  Stopped: 1
 Images: 1
 Server Version: 19.03.12
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
 init version: fec3683
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 3.10.0-1127.10.1.el7.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 1.795GiB
 Name: iZbf2jzc4i64zvZ
 ID: ML25:C7CS:I7GJ:DLJ4:E6ZC:YWOW:VXII:46RU:GUSJ:622O:ZDOG:TXN3
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://noi9j7o6.mirror.aliyuncs.com/
 Live Restore Enabled: false
  • docker --help(帮助命令)

Usage:  docker images [OPTIONS] [REPOSITORY[:TAG]]

List images

Options:
  -a, --all             Show all images (default hides intermediate images)
      --digests         Show digests
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print images using a Go template
      --no-trunc        Don't truncate output
  -q, --quiet           Only show numeric IDs
[root@iZbf2jzc4i64zvZ ~]# docker --help

Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST
                           env var and default context set with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  builder     Manage builds
  config      Manage Docker configs
  container   Manage containers
  context     Manage contexts
  engine      Manage the docker engine
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command.
  • docker images --help(显示该命令的帮助信息)

Usage:  docker images [OPTIONS] [REPOSITORY[:TAG]]

List images

Options:
  -a, --all             Show all images (default hides intermediate images)
      --digests         Show digests
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print images using a Go template
      --no-trunc        Don't truncate output
  -q, --quiet           Only show numeric IDs

2. 镜像命令

镜像类似 我们所说的系统盘 O(∩_∩)O哈哈~

  • docker images(查询容器所有的镜像)

[root@sunmmerwind ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    d1165f221234   6 weeks ago   13.3kB
  • docker search(搜索镜像)

搜索命令

[root@sunmmerwind ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   10768     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   4056      [OK]       
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   792                  [OK]
percona                           Percona Server is a fork of the MySQL relati…   533       [OK]       

过滤搜索

[root@sunmmerwind ~]# docker search mysql --filter=stars=5000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   10768     [OK]    
  • docker pull(下载镜像)

[root@sunmmerwind ~]# docker pull mysql 
Using default tag: latest  #默认下载最新版
latest: Pulling from library/mysql  #下载路径
6ec8c9369e08: Pull complete  #Linux中的联合文件系统(下载过的 不用重复下载了)
177e5de89054: Pull complete 
ab6ccb86eb40: Pull complete 
e1ee78841235: Pull complete 
09cd86ccee56: Pull complete 
78bea0594a44: Pull complete 
caf5f529ae89: Pull complete 
cf0fc09f046d: Pull complete 
4ccd5b05a8f6: Pull complete 
76d29d8de5d4: Pull complete 
8077a91f5d16: Pull complete 
922753e827ec: Pull complete 
Digest: sha256:fb6a6a26111ba75f9e8487db639bc5721d4431beba4cd668a4e922b8f8b14acc  #签名
Status: Downloaded newer image for mysql:latest  #状态:Downloaded 已下载
docker.io/library/mysql:latest  #真实下载地址
【所以docker pull mysql 等价于 docker pull docker.io/library/mysql:latest】
  • docker rmi(删除镜像)

删除全部镜像:docker rmi -f $(docker images -aq) #$(删除的参数)

#因为容器中只有一个了
[root@iZbf2jzc4i64zvZ ~]# docker rmi -f $(docker images -aq)
Untagged: hello-world:latest
Untagged: hello-world@sha256:49a1c8800c94df04e9658809b006fd8a686cab8028d33cfba2cc049724254202
Deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b

根据镜像ID删除镜像: docker rmi -f 镜像ID

[root@iZbf2jzc4i64zvZ ~]# docker rmi -f 8679ced16d20
Untagged: mysql:5.7
Untagged: mysql@sha256:97869b42772dac5b767f4e4692434fbd5e6b86bcb8695d4feafb52b59f
Deleted: sha256:8679ced16d206961b35686895b06cfafefde87ef02b518dfc2133081ebf47cda
Deleted: sha256:355f87dc5125a32cc35898a4dde17fb067585bc0d86704b5a467c0ccc0eea484
Deleted: sha256:8299d5c38042216210125535adb2600e46268a0e2b9ec799d12ea5b770236e79
Deleted: sha256:07311a303b2c7cf2ac6992aaf68e12326fe7255985166939cbab7d18b10e0f47
Deleted: sha256:306c9bc1ce2997d000bb6f1ea4108420d9752df93ce39164b7a2f876b954afc4

一次删除多个镜像:docker rmi -f 镜像ID 镜像ID 镜像ID 镜像ID

不做示例了 ID中间加空格就行了~!

根据镜像的名字删除:docker rmi -f 镜像名字

[root@iZbf2jzc4i64zvZ ~]# docker rmi -f mysql
Untagged: mysql:latest
Untagged: mysql@sha256:fb6a6a26111ba75f9e8487db639bc5721d4431beba4cd668a4e922b8f8b14
Deleted: sha256:e3fcc9e1cc046c92cfcea0d66cdb00fcb7747e87dde96dfc958bd80be37af117
Deleted: sha256:7a1c5c1a40dad78bacb211ec3d7918acdd78a76185fd33a167260c3e51e97fa4
Deleted: sha256:abb5f0f890ba2f327d30b5ca1bbc35584bc6357c8d6f4bdc2e4637cce2ea9a35
Deleted: sha256:919c56fc8230b0ddf8580e0a58d34ae1c5e48069d9b48cc41ae7a1cae82bb60e
Deleted: sha256:962d6891622cf4a7e8932f6c76b2c2f3ab9cecb8aad71d55adacc2aece6b0181
Deleted: sha256:ab26019b1328bff5ea5132b5e3f52b9fd3808e734f1a39141fb9e5da561200e2
Deleted: sha256:06bd523b11319c8177ab2003cb31b296cea22b0201bf8ae987ac300118a0654f
Deleted: sha256:a8681d5c66889e97303be147d30eb8ec4b0bd5bc0e2c774b4d94f52ec23c4649
Deleted: sha256:c28ab987d3964139dcd3852e1c10ef0a425d2705c71a3b68b411460279d8535d
Deleted: sha256:c0fc32d1072662668dd59842d893e5ee125c1958931ae84630132b7bb6c09198
Deleted: sha256:da0ebf91b8bc2d545dbe73cbf9b7c7b25df71033f5057133a445e9c33a36ec7d
Deleted: sha256:483d8f607b803b5e3d3f97adbad3b0e692670f223b2529ecae5d04888c29ad5d
Deleted: sha256:95ef25a3204339de1edf47feaa00f60b5ac157a498964790c58c921494ce7ffd

3. 容器命令

容器类似我们用系统盘 做的新系统~

  • docker run(新建容器并启动)

docker run [可选参数] image
参数说明:

–name=“Name” 设置容器名字
-d 后台运行方式
-it 使用交互方式运行,进入容器查看内容
-p(小屁) 指定容器的端口(-p 8080:8080)
-p (ip:主机端口:容器端口)
-p (主机端口:容器端口)【常用】
-p (容器端口)
容器端口 (不写-p)
-P 随机指定端口

# centos 是 下载的一个镜像
[root@iZbf2jzc4i64zvZ ~]# docker run -it centos /bin/bash
# 换成镜像ID了
[root@755709dbc6b0 /]# 
# centos基础版本,很多命令不完善!ll命令就没有~~~
[root@755709dbc6b0 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

后台启动命令 及 坑~~!!

#命令:docker run -d 镜像名
[root@iZbf2jzc4i64zvZ ~]# docker run -d centos /bin/bash
27be24a0c1dda2815bc2dec8bb6efc09f81c2b6ca7a9b0380a11e6d6ef315a5b
#问题docker ps,发现centos停止了~
[root@iZbf2jzc4i64zvZ ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@iZbf2jzc4i64zvZ ~]# 
#常见的坑:docker容器使用后台运行,就必须要有一个前台的进程,docker发现没有应用,就会自动停止
#还有nginx,容器后台启动后,发现自己没有提供服务,就会立刻停止
  • (退出容器)

  • 容器停止 并 退出容器
exit
  • 容器不停止 退出容器
Ctrl+P+Q(顺序不能错)
  • docker ps(查看当前正在运行的容器)

参数说明:

       # 不加任何参数,只显示当前正在运行的容器
-a     # 查看当前正在运行的容器 + 历史运行过的程序
-n=?   # 显示最近创建的容器(?代表显示几个)
-q   # 显示容器的编号(CONTAINER ID)

[root@iZbf2jzc4i64zvZ ~]# docker ps -a -n=1
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
755709dbc6b0        centos              "/bin/bash"         3 hours ago         Exited (0) 3 hours ago                       pedantic_mccarthy
[root@iZbf2jzc4i64zvZ ~]# docker ps -a -n=2
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
755709dbc6b0        centos              "/bin/bash"         3 hours ago         Exited (0) 3 hours ago                        pedantic_mccarthy
6b5fb686c28d        bf756fb1ae65        "/hello"            35 hours ago        Exited (0) 35 hours ago                       silly_stonebraker
[root@iZbf2jzc4i64zvZ ~]# docker ps -a -n=3
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
755709dbc6b0        centos              "/bin/bash"         3 hours ago         Exited (0) 3 hours ago                        pedantic_mccarthy
6b5fb686c28d        bf756fb1ae65        "/hello"            35 hours ago        Exited (0) 35 hours ago                       silly_stonebraker

只显示容器编号ID

[root@iZbf2jzc4i64zvZ ~]# docker ps -a -q
755709dbc6b0
6b5fb686c28d
[root@iZbf2jzc4i64zvZ ~]# docker ps -aq
755709dbc6b0
6b5fb686c28d
  • docker rm (删除容器)

  • docker rm 容器ID
[root@iZbf2jzc4i64zvZ ~]# docker rm 6b5fb686c28d
6b5fb686c28d
  • 删除指定的容器,无论是否正在运行 -f
[root@iZbf2jzc4i64zvZ ~]# docker rm 87e99063bbbe
Error response from daemon: You cannot remove a running container 87e99063bbbe. 
(在试图移动或强行移动之前,请停止容器)
Stop the container before attempting removal or force remove
[root@iZbf2jzc4i64zvZ ~]# docker rm -f 87e99063bbbe
87e99063bbbe
  • 删除所有的容器
[root@iZbf2jzc4i64zvZ ~]# docker rm  $(docker ps -aq)
de8748047921
755709dbc6b0
  • 删除所有的容器(可通过管道符选择删除 xargs)
[root@iZbf2jzc4i64zvZ ~]# docker ps -a -q|xargs docker rm
e5ad028987ce
  • (启动和停止容器)

  • 启动
docker start 容器ID
  • 重启
docker restart 容器ID
  • 停止
docker stop 容器ID
  • 杀掉
docker kill 容器ID
  • docker logs(查看日志)

参数解释:

-c “”  # 引号里面是一段shell脚本
echo  # 打印
这就解释了为什么这次后台运行没停止

-tf
–tail 10 显示日志条数(如果不加–tail会全部显示)

[root@iZbf2jzc4i64zvZ ~]# docker run -d centos /bin/bash -c "while true;do echo SummerWind;sleep 1;done" # 这段shell脚本,意思是循环打印SummerWind
c5672e9223d29718ff49ac61be7dbc96bdee87d84f451c24f95fa977ac2b442c
[root@iZbf2jzc4i64zvZ ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
c5672e9223d2        centos              "/bin/bash -c 'while猞"   4 seconds ago       Up 3 seconds                            recursing_cartwright

[root@iZbf2jzc4i64zvZ ~]# docker logs -tf --tail 10 c5672e9223d2
2020-07-24T07:15:25.177771117Z SummerWind
2020-07-24T07:15:26.180032231Z SummerWind
2020-07-24T07:15:27.181983254Z SummerWind
2020-07-24T07:15:28.184071541Z SummerWind
2020-07-24T07:15:29.186062819Z SummerWind
  • docker top(查看正在运行的容器内部的进程信息)

docker top 容器ID(这要是正在运行的容器)

[root@iZbf2jzc4i64zvZ ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
b3c259fa54b6        centos              "/bin/bash -c 'while猞"   About a minute ago   Up About a minute                       hardcore_benz
[root@iZbf2jzc4i64zvZ ~]# docker top b3c259fa54b6
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                17631               17615               0                   15:22               ?                   00:00:00            /bin/bash -c while true;do echo SummerWind;sleep 1;done
root                17742               17631               0                   15:23               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
  • docker inspect(查看镜像的元数据)

[root@iZbf2jzc4i64zvZ ~]# docker inspect c5672e9223d2
[
    {
        #容器ID(这是完整的 显示的只是前12位 ~)
        "Id": "c5672e9223d29718ff49ac61be7dbc96bdee87d84f451c24f95fa977ac2b442c",
        "Created": "2020-07-24T07:14:37.838659993Z",
        "Path": "/bin/bash",
        "Args": [
            "-c",
            "while true;do echo SummerWind;sleep 1;done"
        ],
        #容器状态
        "State": {
            "Status": "exited",
            "Running": false,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 0,
            "ExitCode": 137,
            "Error": "",
            "StartedAt": "2020-07-24T07:14:38.085351505Z",
            "FinishedAt": "2020-07-24T07:20:02.584374216Z"
        },
        "Image": "sha256:831691599b88ad6cc2a4abbd0e89661a121aff14cfa289ad840fd3946f274f1f",
        "ResolvConfPath": "/var/lib/docker/containers/c5672e9223d29718ff49ac61be7dbc96bdee87d84f451c24f95fa977ac2b442c/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/c5672e9223d29718ff49ac61be7dbc96bdee87d84f451c24f95fa977ac2b442c/hostname",
        "HostsPath": "/var/lib/docker/containers/c5672e9223d29718ff49ac61be7dbc96bdee87d84f451c24f95fa977ac2b442c/hosts",
        "LogPath": "/var/lib/docker/containers/c5672e9223d29718ff49ac61be7dbc96bdee87d84f451c24f95fa977ac2b442c/c5672e9223d29718ff49ac61be7dbc96bdee87d84f451c24f95fa977ac2b442c-json.log",
        "Name": "/recursing_cartwright",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "Capabilities": null,
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/2526bc57fe2854002359d0a0c9eb536460cf1474c70ad0fdd2e8ea215ef7679d-init/diff:/var/lib/docker/overlay2/ff9cceb791db48b712f90809757294fdaf615cb173345e17455dfca4c330c537/diff",
                "MergedDir": "/var/lib/docker/overlay2/2526bc57fe2854002359d0a0c9eb536460cf1474c70ad0fdd2e8ea215ef7679d/merged",
                "UpperDir": "/var/lib/docker/overlay2/2526bc57fe2854002359d0a0c9eb536460cf1474c70ad0fdd2e8ea215ef7679d/diff",
                "WorkDir": "/var/lib/docker/overlay2/2526bc57fe2854002359d0a0c9eb536460cf1474c70ad0fdd2e8ea215ef7679d/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "c5672e9223d2",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/bash",
                "-c",
                "while true;do echo SummerWind;sleep 1;done"
            ],
            "Image": "centos",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20200611",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "96108bd4f8742d18781c000c3633d5a384c0927d6b6e4fbc2b6a0e41ab729198",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/96108bd4f874",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "e1e9632f31bacd00015077223d5747f0569d855480fc81e0517c2a52bed39fee",
                    "EndpointID": "",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "",
                    "DriverOpts": null
                }
            }
        }
    }
]
  • (进入当前正在运行的容器)

  • docker exec   # 进入容器后开启一个新的终端,可以在里面操作【常用】
  • docker attach  # 进入容器正在执行的终端,不会启动新的进程!
  • (从容器内 拷贝文件到 主机上)

docker cp 容器ID:容器内的目录或文件 主机上的路径

#后台交互运行一个容器
[root@iZbf2jzc4i64zvZ ~]# docker run -it centos /bin/bash
#运行并进入容器
[root@d250d9bba70b /]# [root@iZbf2jzc4i64zvZ ~]# 
#容器的文件
[root@d250d9bba70b /]# ls        
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@d250d9bba70b /]# cd /home/
#进入容器home目录,创建SummerWind.java文件
[root@d250d9bba70b home]# touch SummerWind.java
#显示已经创建
[root@d250d9bba70b home]# ls
SummerWind.java
#退出容器并停止容器
[root@d250d9bba70b home]# exit
exit
#查看运行着的容器 没有
[root@iZbf2jzc4i64zvZ ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
#查看所有运行过的容器 有【容器在 里面的数据就在,不论是否运行都可以拷贝~~!!!】
[root@iZbf2jzc4i64zvZ ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
d250d9bba70b        centos              "/bin/bash"         2 minutes ago       Exited (0) 17 seconds ago                       upbeat_volhard
#拷贝命令:docker cp 容器ID:容器内的目录或文件 主机上的路径
[root@iZbf2jzc4i64zvZ ~]# docker cp d250d9bba70b:/home/SummerWind.java /home
[root@iZbf2jzc4i64zvZ ~]# cd ..
[root@iZbf2jzc4i64zvZ /]# ls
bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@iZbf2jzc4i64zvZ /]# cd /home
#查看主机上的home文件夹下 已经把容器内的文件拷贝到主机上了
[root@iZbf2jzc4i64zvZ home]# ls
SummerWind.java
  • (从宿主机 拷贝文件到 容器中)

docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径

# 命令:
docker cp /MyFile/PAIANG.sql bd15ab4384fd:/tmp/

# 容器中查看:
root@bd15ab4384fd:/# cd /tmp/
root@bd15ab4384fd:/tmp# ll
total 90460
drwxrwxrwt 1 root root     4096 Nov 10 14:04 ./
drwxr-xr-x 1 root root     4096 Nov 10 14:04 ../
drwxrwxrwt 2 root root     4096 Feb 14  2019 .oracle/
-rw-r--r-- 1 root root 92616247 Nov 10 13:54 PAIANG.sql

4. 命令图解

Docker容器引擎_第2张图片

5. 命令实战

  • 安装运行Nginx容器

#下载镜像

#运行Nginx容器(镜像要放在最后)
[root@iZbf2jzc4i64zvZ /]# docker run -d --name MyNginx -p 3344:80 nginx
aab1ba8e191cda24e673ca0f61f19c64a74393a685b35e31a0c5401ab3732ccb
[root@iZbf2jzc4i64zvZ /]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
aab1ba8e191c        nginx               "/docker-entrypoint.猞"   17 seconds ago      Up 15 seconds       0.0.0.0:3344->80/tcp   MyNginx

#本地测试 curl,居然还有这?
[root@iZbf2jzc4i64zvZ /]# curl localhost:3344
<!DOCTYPE html>


Welcome to nginx<span class="token operator">!</span><<span class="token operator">/</span>title>
<style>
    body <span class="token punctuation">{</span>
        width: 35em<span class="token punctuation">;</span>
        margin: 0 auto<span class="token punctuation">;</span>
        font<span class="token operator">-</span>family: Tahoma<span class="token punctuation">,</span> Verdana<span class="token punctuation">,</span> Arial<span class="token punctuation">,</span> sans<span class="token operator">-</span>serif<span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
<<span class="token operator">/</span>style>
<<span class="token operator">/</span>head>
<body>
<h1>Welcome to nginx<span class="token operator">!</span><<span class="token operator">/</span>h1>
<p><span class="token keyword">If</span> you see this page<span class="token punctuation">,</span> the nginx web server is successfully installed and
working<span class="token punctuation">.</span> Further configuration is required<span class="token punctuation">.</span><<span class="token operator">/</span>p>

<p><span class="token keyword">For</span> online documentation and support please refer to
<a href=<span class="token string">"http://nginx.org/"</span>>nginx<span class="token punctuation">.</span>org<<span class="token operator">/</span>a><span class="token punctuation">.</span><br<span class="token operator">/</span>>
Commercial support is available at
<a href=<span class="token string">"http://nginx.com/"</span>>nginx<span class="token punctuation">.</span>com<<span class="token operator">/</span>a><span class="token punctuation">.</span><<span class="token operator">/</span>p>

<p><em>Thank you <span class="token keyword">for</span> <span class="token keyword">using</span> nginx<span class="token punctuation">.</span><<span class="token operator">/</span>em><<span class="token operator">/</span>p>
<<span class="token operator">/</span>body>
<<span class="token operator">/</span>html>
</code></pre> 
  <ul> 
   <li> <h3>安装运行Tomcat容器</h3> </li> 
  </ul> 
  <pre><code class="prism language-powershell"><span class="token comment">#进入Tomcat容器</span>
<span class="token namespace">[root@iZbf2jzc4i64zvZ ~]</span><span class="token comment"># docker exec -it MyTomcat /bin/bash</span>
root@c7cf366b8a40:<span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token comment"># </span>

<span class="token comment">#查看容器目录下的文件</span>
root@c7cf366b8a40:<span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token comment"># ls</span>
BUILDING<span class="token punctuation">.</span>txt  CONTRIBUTING<span class="token punctuation">.</span>md  LICENSE  NOTICE  README<span class="token punctuation">.</span>md  RELEASE<span class="token operator">-</span>NOTES  RUNNING<span class="token punctuation">.</span>txt  bin  conf  lib  logs  native<span class="token operator">-</span>jni<span class="token operator">-</span>lib  temp  webapps  webapps<span class="token punctuation">.</span>dist  work

<span class="token comment">#拷贝webapps.dist目录下所有文件到webapps目录下</span>
root@c7cf366b8a40:<span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token comment"># cp -r webapps.dist/* webapps</span>

<span class="token comment">#去查看 拷贝过来了~!@</span>
root@c7cf366b8a40:<span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token comment"># cd webapps</span>
root@c7cf366b8a40:<span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token operator">/</span>webapps<span class="token comment"># ls</span>
ROOT  docs  examples  host<span class="token operator">-</span>manager  manager
</code></pre> 
  <p><strong>存在的问题:</strong><br>    启动后访问发现是404,去webapps目录下查看是空的,而webpass.dist目录下有,拷贝到webapps目录下 或 修改webapps.dist文件名为webapps</p> 
  <ul> 
   <li> <h3>安装运行MySQL8.0容器</h3> </li> 
  </ul> 
  <pre><code class="prism language-powershell"><span class="token comment"># MySQL8.0镜像拉取</span>
<span class="token namespace">[root@sunmmerwind ~]</span><span class="token comment"># docker pull mysql:8.0</span>
8<span class="token punctuation">.</span>0: Pulling <span class="token keyword">from</span> library<span class="token operator">/</span>mysql
Digest: sha256:04ee7141256e83797ea4a84a4d31b1f1bc10111c8d1bc1879d52729ccd19e20a
Status: Downloaded newer image <span class="token keyword">for</span> mysql:8<span class="token punctuation">.</span>0
docker<span class="token punctuation">.</span>io<span class="token operator">/</span>library<span class="token operator">/</span>mysql:8<span class="token punctuation">.</span>0
<span class="token comment"># 查看拉取镜像</span>
<span class="token namespace">[root@sunmmerwind ~]</span><span class="token comment"># docker images</span>
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
mysql         8<span class="token punctuation">.</span>0       0627ec6901db   8 days ago    556MB
<span class="token comment"># 安装</span>
<span class="token namespace">[root@sunmmerwind conf]</span><span class="token comment"># docker run -d -p 3308:3306 -v /usr/mysql/conf:/etc/mysql/conf.d -v /usr/mysql/data:/var/lib/mysql --name MySQL8.0 -e MYSQL_ROOT_PASSWORD=123456 0627ec6901db</span>
d50c00e7401eb50c8595350fde0e10003046afd8d4007a6255b899a8af9c4d19

</code></pre> 
  <blockquote> 
   <p>安装参数解释:</p> 
   <blockquote> 
    <p>-v :挂载宿主机目录和 docker容器中的目录,前面是宿主机目录,后面是容器内部目录<br> -d :后台运行容器<br> -p :映射容器端口号和宿主机端口号<br> -e :环境参数,MYSQL_ROOT_PASSWORD设置root用户的密码<br> –name:容器名字</p> 
   </blockquote> 
  </blockquote> 
  <pre><code class="prism language-powershell"><span class="token comment"># 查看容器是否启动成功</span>
<span class="token namespace">[root@sunmmerwind conf]</span><span class="token comment"># docker ps</span>
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
d50c00e7401e   0627ec6901db   <span class="token string">"docker-entrypoint.s…"</span>   5 minutes ago   Up 5 minutes   33060<span class="token operator">/</span>tcp<span class="token punctuation">,</span> 0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:3308<span class="token operator">-</span>>3306<span class="token operator">/</span>tcp<span class="token punctuation">,</span> :::3308<span class="token operator">-</span>>3306<span class="token operator">/</span>tcp   MySQL8<span class="token punctuation">.</span>0
</code></pre> 
  <h1>五、镜像</h1> 
  <h2>1. 概念</h2> 
  <blockquote> 
   <p>镜像是一种轻量级、可执行的独立软件包。<br> 用来打包软件运行环境和基于运行环境开发的软件。<br> 它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量及配置文件。</p> 
  </blockquote> 
  <h2>2. 作用</h2> 
  <blockquote> 
   <p>开发的所有应用,直接打包成docker镜像,就可以运行起来~!<br> 方便部署和扩展~</p> 
  </blockquote> 
  <h2>3. 如何得到镜像?</h2> 
  <ul> 
   <li>远程仓库下载</li> 
   <li>朋友拷贝</li> 
   <li>自己制作</li> 
  </ul> 
  <h2>4. 镜像原理</h2> 
  <p><strong>特点:</strong><br>    Docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部!<br>    这一层就是我们通常说的容器层,容器之下的都叫镜像层!</p> 
  <ul> 
   <li> <h3>UnionFS(联合文件系统)</h3> </li> 
  </ul> 
  <blockquote> 
   <p>它可以把多个目录(也叫分支)内容联合挂载到同一个目录下,而目录的物理位置是分开的。<br> Union文件系统是Docker镜像的基础。<br> 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。</p> 
   <blockquote> 
    <p>白话:共用的东西,不会存在两份 相互调用。</p> 
   </blockquote> 
  </blockquote> 
  <ul> 
   <li> <h3>镜像加载原理</h3> </li> 
  </ul> 
  <ul> 
   <li><em><strong>bootfs(boot file system)</strong></em></li> 
  </ul> 
  <blockquote> 
   <p>类似电脑从黑屏到开机 中间的加载过程</p> 
  </blockquote> 
  <ul> 
   <li><em><strong>rootfs(root file system)</strong></em></li> 
  </ul> 
  <blockquote> 
   <p>类似启动后的操作系统<br> 对于精简的OS,rootfs可以很小,只需包含最基本的命令、工具和程序库就可以了。<br> 因为底层直接用主机的内核,自己只需要提供rootfs就可以了。</p> 
  </blockquote> 
  <ul> 
   <li> <h3>分层原理(Layers)</h3> </li> 
  </ul> 
  <h2>5. 提交镜像</h2> 
  <p><em><strong>命令:docker commit -a=“作者” -m=“提交的信息” 容器ID 自定义名:版本号</strong></em></p> 
  <blockquote> 
   <p>用docker images命令就可以看到我们提交的镜像了~!<br> 不是提交到远程,而是提交给本地镜像库,哈哈~!</p> 
  </blockquote> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@iZbf2jzc4i64zvZ ~]</span><span class="token comment"># docker commit -a="CoderWind" -m="add webapps content" c7cf366b8a40 mytomcat:001</span>
sha256:c521385f72166af3e027cd39b10c7b7789df82682755f1a159bc7b949cab94e2
<span class="token namespace">[root@iZbf2jzc4i64zvZ ~]</span><span class="token comment"># docker images</span>
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mytomcat            001                 c521385f7216        5 seconds ago       652MB
tomcat              latest              b4f6a90c69a4        3 days ago          647MB
nginx               latest              8cf1bfb43ff5        4 days ago          132MB
centos              latest              831691599b88        5 weeks ago         215MB
</code></pre> 
  <h1>六、容器数据卷</h1> 
  <h1>七、DockerFile</h1> 
  <h1>八、IDEA整合Docker</h1> 
  <h1>九、Docker网络</h1> 
  <h1>十、Docker集群</h1> 
  <h1>十一、Docker集群管理</h1> 
  <h1>十二、Docker持续化部署</h1> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1643047992657240064"></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">你可能感兴趣的:(Linux,docker)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1942765430917623808.htm"
                           title="Go项目上线部署最佳实践:Docker容器化从入门到进阶" target="_blank">Go项目上线部署最佳实践:Docker容器化从入门到进阶</a>
                        <span class="text-muted">程序员爱钓鱼</span>
<a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>在《Go语言实战指南》的“构建与部署”章节中,Docker容器化部署是现代Go应用发布与运维的重要方式之一。通过将Go应用打包进Docker容器,我们可以实现“构建一次,处处运行”,无论目标服务器操作系统如何,都可以保持一致的运行环境。一、为什么使用Docker容器部署Go应用?Go原生编译出的可执行文件已具备高度可移植性,但在实际部署中仍会面临以下挑战:•不同环境存在依赖不一致•需要运维脚本或部</div>
                    </li>
                    <li><a href="/article/1942761901779906560.htm"
                           title="使用Docker搭建Oracle19c运行环境" target="_blank">使用Docker搭建Oracle19c运行环境</a>
                        <span class="text-muted">luomo0203</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</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/oracle/1.htm">oracle</a>
                        <div>一、拉取镜像(这里是我使用oracle官方的dockerfile构建的镜像)$dockerpullregistry.cn-hangzhou.aliyuncs.com/it-boy/oracle19cUsingdefaulttag:latestlatest:Pullingfromit-boy/oracle19cf09c1d3b7e7b:Pullcompletee21babc95602:Pullcom</div>
                    </li>
                    <li><a href="/article/1942751056509333504.htm"
                           title="【Docker基础】Docker网络模式:Host模式深度解析" target="_blank">【Docker基础】Docker网络模式:Host模式深度解析</a>
                        <span class="text-muted">IT成长日记</span>
<a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8%E6%8A%80%E6%9C%AF%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90%E4%B8%8E%E5%AE%9E%E8%B7%B5/1.htm">容器技术深度解析与实践</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/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%BD%91%E7%BB%9C%E6%A8%A1%E5%BC%8F/1.htm">网络模式</a><a class="tag" taget="_blank" href="/search/Host/1.htm">Host</a>
                        <div>目录1Docker网络模式概述1.1Docker网络模式对比2Host模式核心技术解析2.1网络命名空间共享机制2.2架构原理2.3核心配置参数3Host模式深度剖析3.1网络接口共享机制3.2端口空间共享特性3.3网络性能优势分析4与其他网络模式的对比分析4.1与Bridge模式对比4.2与Container模式对比5典型应用场景5.1高性能网络服务部署5.2网络代理与负载均衡5.3系统级监控与</div>
                    </li>
                    <li><a href="/article/1942750299550707712.htm"
                           title="Linux网络——socket网络通信udp" target="_blank">Linux网络——socket网络通信udp</a>
                        <span class="text-muted">深思慎考</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/udp/1.htm">udp</a>
                        <div>文章目录UDP通信基础UDP的特点Linux下UDP通信核心步骤创建UDP套接字绑定本地地址(可选)发送数据函数:sendto()函数原型参数详解典型使用示例接收数据函数:recvfrom()函数原型参数详解返回值典型使用示例关键设计原因无连接特性网络字节序转换INADDR_ANY的使用缓冲区设计客户端和服务端具体实现客户端服务端UDP通信基础UDP(UserDatagramProtocol,用户</div>
                    </li>
                    <li><a href="/article/1942747274694160384.htm"
                           title="Docker网络模型深度解析|Docker|网络模型|容器化" target="_blank">Docker网络模型深度解析|Docker|网络模型|容器化</a>
                        <span class="text-muted">concisedistinct</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF%E6%A0%88/1.htm">编程开发技术栈</a><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>目录1.Docker网络模型概述1.1Docker网络的基本概念1.2Docker的主要网络模式2.Bridge网络模式2.1Bridge模式的工作原理2.2Bridge模式的网络配置2.3Bridge模式的应用场景3.Host网络模式3.1Host模式的工作原理3.2Host模式的优缺点3.3Host模式的应用场景4.Overlay网络模式4.1Overlay模式的工作原理4.2Overlay模</div>
                    </li>
                    <li><a href="/article/1942746141095424000.htm"
                           title="Docker快速构建Hive测试环境" target="_blank">Docker快速构建Hive测试环境</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/hive/1.htm">hive</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%BC%96%E7%A8%8B/1.htm">编程</a>
                        <div>Docker是一种流行的容器化平台,可以帮助我们快速构建和管理应用程序的环境。在本文中,我们将学习如何使用Docker快速构建Hive测试环境。Hive是一个基于Hadoop的数据仓库基础设施,它提供了一种类似于SQL的查询语言,用于分析和处理大规模数据集。步骤1:安装Docker和DockerCompose首先,我们需要安装Docker和DockerCompose。您可以根据您的操作系统类型,从</div>
                    </li>
                    <li><a href="/article/1942745129903255552.htm"
                           title="Python编程菜鸟教程:从入门到精通的完全指南_python菜鸟教程" target="_blank">Python编程菜鸟教程:从入门到精通的完全指南_python菜鸟教程</a>
                        <span class="text-muted">2401_89285717</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>我们将介绍Python在数据科学、机器学习、Web开发等方面的应用,并带你了解Python社区和生态系统。基础入门Python安装:在官方网站下载安装包,根据不同操作系统进行安装。Mac用户可直接使用Homebrew进行安装Windows用户需下载安装包后进行手动安装Linux用户可使用apt-get或yum进行安装基础语法:Python是一种解释型语言,支持面向对象、函数式和面向过程等多种编程范</div>
                    </li>
                    <li><a href="/article/1942742233123975168.htm"
                           title="Docker快速部署Hive服务" target="_blank">Docker快速部署Hive服务</a>
                        <span class="text-muted">长路 ㅤ   </span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/Docker%E9%85%8D%E7%BD%AE/1.htm">Docker配置</a><a class="tag" taget="_blank" href="/search/Hive%E7%8E%AF%E5%A2%83/1.htm">Hive环境</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E8%BF%9C%E7%A8%8B%E8%B0%83%E8%AF%95/1.htm">远程调试</a>
                        <div>文章目录前言Docker快速配置hive环境资料获取前言博主介绍:✌目前全网粉丝4W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。涵盖技术内容:Java后端、大数据、算法、分布式微服务、中间件、前端、运维等。博主所有博客文件目录索引:博客目录索引(持续更新)CSDN搜索:长路视频平台:b站-Coder长路Docker快速配置hive环境Ap</div>
                    </li>
                    <li><a href="/article/1942735422731907072.htm"
                           title="PHP/Laravel + Vue3 + MySQL组合版本参考" target="_blank">PHP/Laravel + Vue3 + MySQL组合版本参考</a>
                        <span class="text-muted"></span>

                        <div>以下是基于技术栈流行度、稳定性和开发效率综合评估的推荐版本组合1.后端技术栈PHP8.3最新稳定版,支持JIT编译,性能较PHP8.1提升15%+,完美兼容Laravel框架。扩展要求:openssl、pdo_mysql、mbstring(Laravel强制依赖)。Laravel11.x2024年发布,支持PHP8.2-8.3,提供轻量级应用骨架和更快的路由缓存。关键特性:原生支持Docker沙盒</div>
                    </li>
                    <li><a href="/article/1942735296344944640.htm"
                           title="PHP/Laravel + Vue3 + MySQL + Docker 项目搭建全流程指南(Al总结版未测试未编辑)" target="_blank">PHP/Laravel + Vue3 + MySQL + Docker 项目搭建全流程指南(Al总结版未测试未编辑)</a>
                        <span class="text-muted">野生yumeko</span>
<a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/laravel/1.htm">laravel</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                        <div>PHP/Laravel+Vue3+MySQL+Docker项目搭建全流程指南一、环境准备(仅需Docker)安装DockerDesktopWindows/macOS:下载DockerDesktop并安装。Linux:安装docker-ce和docker-compose-plugin。#Ubuntu示例sudoaptupdate&&sudoaptinstalldocker-cedocker-comp</div>
                    </li>
                    <li><a href="/article/1942724452450103296.htm"
                           title="Linux 基础入门操作 第十四章 .U-Boot 编译 1" target="_blank">Linux 基础入门操作 第十四章 .U-Boot 编译 1</a>
                        <span class="text-muted"></span>

                        <div>1U-Bboot编译1.1UBOOT介绍U-Boot,全称UniversalBootLoader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。但是U-Boot不仅仅支持嵌</div>
                    </li>
                    <li><a href="/article/1942720291331436544.htm"
                           title="serviceMesh 学习" target="_blank">serviceMesh 学习</a>
                        <span class="text-muted">一切顺势而行</span>
<a class="tag" taget="_blank" href="/search/service_mesh/1.htm">service_mesh</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>根据您已掌握的Docker、Kubernetes及灰度发布等技能,以下是ServiceMesh需要重点掌握的知识体系,分为核心概念、关键技术、实践场景和进阶能力四部分,助您系统化掌握服务网格:一、ServiceMesh核心概念概念说明与K8s的关联数据平面Sidecar代理(如Envoy),拦截服务间流量通过sidecar-injector自动注入到Pod中控制平面管理Sidecar的组件(如Is</div>
                    </li>
                    <li><a href="/article/1942716887209144320.htm"
                           title="k8sv1.30安装教程基于docker" target="_blank">k8sv1.30安装教程基于docker</a>
                        <span class="text-muted">Esther-Java</span>
<a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</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><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a>
                        <div>一.环境准备基于Ubuntu22.04.5安装每台机器分配4C+8G这里全程使用root用户来操作,可以根据自己的情况使用不同的用户主机名IPkm192.168.31.101kn1192.168.31.102kn2192.168.31.103修改hosts文件vim/etc/hosts192.168.31.101km192.168.31.102kn1192.168.31.103kn2关闭交换分区s</div>
                    </li>
                    <li><a href="/article/1942712471299092480.htm"
                           title="SFTP服务器搭建实战:腾讯云 Linux 上的快速安全文件传输方案" target="_blank">SFTP服务器搭建实战:腾讯云 Linux 上的快速安全文件传输方案</a>
                        <span class="text-muted"></span>

                        <div>更多云服务器知识,尽在hostol.com你有没有遇到这种情况:FTP上传老是失败?内网传输日志经常被拦截?最气的是安全部门说你那套文件传输方式“明文传输,不合规”。那好吧,现在是时候扔掉老掉牙的FTP,来点靠谱的了——SFTP。等等,SFTP是啥?SSH的“升级版”?不,是你服务器通信里那把真正的保险锁。今天就带你5分钟搞定它,尤其是在腾讯云Linux云服务器环境下,手把手实战部署,从基础到加固</div>
                    </li>
                    <li><a href="/article/1942708436219260928.htm"
                           title="【深度学习】大模型GLM-4-9B Chat ,微调与部署(3) TensorRT-LLM、TensorRT量化加速、Triton部署" target="_blank">【深度学习】大模型GLM-4-9B Chat ,微调与部署(3) TensorRT-LLM、TensorRT量化加速、Triton部署</a>
                        <span class="text-muted">XD742971636</span>
<a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">深度学习机器学习</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/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>文章目录获取TensorRT-LLM代码:构建docker镜像并安装TensorRT-LLM:运行docker镜像:安装依赖魔改下部分package代码:量化:构建图:全局参数插件配置常用配置参数测试推理是否可以代码推理CLI推理性能测试小结验证是否严重退化使用NVIDIATriton部署在线推理服务器代码弄下来编译镜像启动容器安装依赖量化构建trtengines图Triton模板说明实操发起Tr</div>
                    </li>
                    <li><a href="/article/1942707675557064704.htm"
                           title="Docker部署前后端项目完整教程" target="_blank">Docker部署前后端项目完整教程</a>
                        <span class="text-muted">z小天才b</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基础概念什么是Docker?核心概念Docker单独部署后端项目2.1准备工作2.2创建后端项目结构2.3编写Dockerfile2.4构建和运行后端容器2.5后端容器管理Docker单独部署前端项目3.1前端项目结构3.2编写前端Dockerfile3.3配置nginx3.4创建.dockerignore文件3.5构建和运行前端容器3.6前端优化技巧DockerCompose介绍</div>
                    </li>
                    <li><a href="/article/1942702001175457792.htm"
                           title="使用 Docker 部署 Spring Boot 项目流程" target="_blank">使用 Docker 部署 Spring Boot 项目流程</a>
                        <span class="text-muted">hoho不爱喝酒</span>
<a class="tag" taget="_blank" href="/search/%E9%9A%8F%E4%BE%BF%E5%86%99%E5%86%99/1.htm">随便写写</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</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/%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><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>文章目录使用Docker部署SpringBoot项目流程1.构建SpringBoot项目使用Maven构建项目:使用Gradle构建项目:2.创建Dockerfile示例Dockerfile:解释:3.构建Docker镜像4.运行Docker容器5.查看容器日志6.管理Docker容器查看正在运行的容器:停止容器:删除容器:删除镜像:7.访问SpringBoot应用总结使用Docker部署Spri</div>
                    </li>
                    <li><a href="/article/1942700740455755776.htm"
                           title="Linux部署MinIO与Spring Boot整合实战指南" target="_blank">Linux部署MinIO与Spring Boot整合实战指南</a>
                        <span class="text-muted">luoqinqin</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</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/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>一、MinIO简介与核心概念MinIO是一款高性能的分布式对象存储服务,兼容AmazonS3API,适用于存储图片、文档等非结构化数据。核心术语:Bucket:存储对象的容器(类似文件夹)Object:存储的基本单元(文件+元数据)AccessKey/SecretKey:身份验证凭证二、Linux环境MinIO部署1.单节点安装#下载二进制文件wgethttps://dl.min.io/serve</div>
                    </li>
                    <li><a href="/article/1942700234656247808.htm"
                           title="linux安装mysql客户端" target="_blank">linux安装mysql客户端</a>
                        <span class="text-muted"></span>

                        <div>有时候我们只想在某个机器上安装mysql客户度,而不是安装整个mysql服务,因为服务已经存在了,而我们又因为某些原因我们不能直接登录到这台服务器上,或者是我们要在其他机器上查询mysql的数据安装mysql客户端yuminstallmysql-y(安装mysql服务我们用的是yuminstall-ymysql-server这个命令)连接目标主机mysqlmysql-h192.168.123.11</div>
                    </li>
                    <li><a href="/article/1942689394351730688.htm"
                           title="pip方式安装MindSpore Ascend版本" target="_blank">pip方式安装MindSpore Ascend版本</a>
                        <span class="text-muted"></span>

                        <div>pip方式安装MindSporeAscend版本参考:https://www.mindspore.cn/install/本文档介绍如何在Ascend环境的Linux系统上,使用pip方式快速安装MindSpore。安装MindSpore与依赖软件下表列出了安装MindSpore所需的系统环境和第三方依赖。软件名称版本作用Ubuntu18.04/CentOS7.6/EulerOS2.8/openEu</div>
                    </li>
                    <li><a href="/article/1942681834408177664.htm"
                           title="Docker后端部署" target="_blank">Docker后端部署</a>
                        <span class="text-muted">cui_hao_nan</span>
<a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF%E6%8A%80%E6%9C%AF%E6%80%BB%E7%BB%93/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/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>1、构建Docker容器首先编写Dockerfile,将后端项目打包为Docker容器镜像。Dockerfile是一个文本配置文件,包含一系列指令,用干自动化构建Docker容器镜像。我们需要在Dockerfile中定义:基础环境(比如预装JDK的Linux系统)有哪些原始文件?(比如项目源代码)如何构建项目?(比如mavenpackage命令打包)如何启动项目?(比如java-jar命令).2、</div>
                    </li>
                    <li><a href="/article/1942669607118630912.htm"
                           title="TCP backlog工作机制" target="_blank">TCP backlog工作机制</a>
                        <span class="text-muted">riverz1227</span>
<a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>Linux中的TCPbacklog:两个队列与丢连接的真相在高并发网络服务场景中,listen()的backlog参数常常被误解,许多TCP连接被悄悄丢弃时,我们甚至毫无察觉。近期在排查一条内核日志TCP:dropopenrequestfrom...时,对此翻阅整理了一些资料,就TCPbacklog在Linux中的工作原理、背后的两个关键队列机制,以及如何高效排查相关连接丢失问题,做些记录01|什</div>
                    </li>
                    <li><a href="/article/1942668094623248384.htm"
                           title="ubuntu20.04自建代码托管平台-Gitlab" target="_blank">ubuntu20.04自建代码托管平台-Gitlab</a>
                        <span class="text-muted">HuangFJ-</span>
<a class="tag" taget="_blank" href="/search/VMware%E8%99%9A%E6%8B%9F%E6%9C%BA/1.htm">VMware虚拟机</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</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/git/1.htm">git</a>
                        <div>介绍由于gitlab需要在linux操作系统部署,因此这篇文章涉及以下关键点1.虚拟机VMware安装ubuntu2.ubuntu修改下载源问题3.openssh、vim、net-tools等插件下载4.ubuntu下载gitlab免费版:5.gitlab相关命令6.使用浏览器访问gitlab7.初始密码/修改密码8.如何新增用户并发送邮件环境ubuntu-20.04.1-desktop-amd6</div>
                    </li>
                    <li><a href="/article/1942665575444574208.htm"
                           title="技术支持工程师" target="_blank">技术支持工程师</a>
                        <span class="text-muted"></span>

                        <div>OS与云桌面一、核心概念解析操作系统(OS)定义:管理硬件资源(CPU、内存、存储等)并为应用程序提供运行环境的系统软件,如Windows、Linux、UOS、银河麒麟等。作用:承担进程调度、文件管理、设备驱动等基础功能,是任何计算设备的“大脑”。云桌面定义:基于云计算技术的虚拟桌面服务,将传统PC的桌面环境(操作系统、应用、数据)集中部署在远端服务器,用户通过终端设备(如瘦客户机、PC、手机)远</div>
                    </li>
                    <li><a href="/article/1942664819991703552.htm"
                           title="ERROR: failed to solve: failed to read dockerfile: open Dockerfile: no such file or directory" target="_blank">ERROR: failed to solve: failed to read dockerfile: open Dockerfile: no such file or directory</a>
                        <span class="text-muted">Upper999</span>
<a class="tag" taget="_blank" href="/search/Docker/1.htm">Docker</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a>
                        <div>1通过Dockerfile方式,生成镜像时报错(如下)[zxx@192~]$dockerbuild-tmy_first_build_image.[+]Building0.1s(1/1)FINISHEDdocker:default=>[internal]loadbuilddefinitionfromDockerfile0.0s=>=>transferringdockerfile:2B0.0sERRO</div>
                    </li>
                    <li><a href="/article/1942662422653366272.htm"
                           title="完全禁用缓存构建docekr镜像,使对镜像代码的变更生效" target="_blank">完全禁用缓存构建docekr镜像,使对镜像代码的变更生效</a>
                        <span class="text-muted">Gq.xxu</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/eureka/1.htm">eureka</a>
                        <div>✅正确解决方案方法一:分步执行(推荐)先禁用缓存构建镜像,再启动服务:先构建镜像(禁用缓存)dockercompose-plangfuse-chinesebuild--no-cache再启动容器dockercompose-plangfuse-chineseup-d方法二:通过up--build隐式构建(无法禁用缓存)若仍需单条命令完成,可用--build触发重新构建,但无法完全禁用缓存(仍可能复用</div>
                    </li>
                    <li><a href="/article/1942661916690280448.htm"
                           title="Docker 和 Kubernetes 入门到精通:运维工程师的实战笔记 (近5万字)" target="_blank">Docker 和 Kubernetes 入门到精通:运维工程师的实战笔记 (近5万字)</a>
                        <span class="text-muted">运维小贺</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</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/kubernetes/1.htm">kubernetes</a><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/kubelet/1.htm">kubelet</a>
                        <div>文章目录1.Docker1.1Docker是什么?1.1.1容器服务原理1.2Docker的三大概念1.2.1镜像1.2.2容器1.2.3仓库1.2.4总结1.3Docker常用命令1.3.1镜像常用命令1.3.2容器常用命令1.4Dockerfile1.4.1commit的局限1.4.2Dockerfile是什么?1.4.3如何使用Dockerfile制作镜像?1.4.4Dockerfile中常</div>
                    </li>
                    <li><a href="/article/1942660405440606208.htm"
                           title="【初阶学习Linux】初识Linux" target="_blank">【初阶学习Linux】初识Linux</a>
                        <span class="text-muted">鳄鱼皮坡</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>1.Linux背景介绍发展史:本门课程学习Linux系统编程,你可能要问Linux从哪里来?它是怎么发展的?在这里简要介绍Linuxs的发展史。要说Linux,还得从UNIX说起。UNIX发展的历史:1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念。1969-1970年,AT&</div>
                    </li>
                    <li><a href="/article/1942657381406142464.htm"
                           title="Ubuntu下搜狗输入法安装记录(解决安装好后仍旧无法输入中文的问题)" target="_blank">Ubuntu下搜狗输入法安装记录(解决安装好后仍旧无法输入中文的问题)</a>
                        <span class="text-muted"></span>

                        <div>主要参考为博客https://blog.csdn.net/fangshuo_light/article/details/123634224以及搜狗官方给到的安装指南https://shurufa.sogou.com/linux/guide遇到问题使用dpkg安装在搜狗官网下载的Linuxdeb安装包sudodpkg-isogoupinyin_4.2.1.145_amd64.deb此时,按照官方的安</div>
                    </li>
                    <li><a href="/article/1942656120061489152.htm"
                           title="【Docker】10 min 快速入门 Docker" target="_blank">【Docker】10 min 快速入门 Docker</a>
                        <span class="text-muted"></span>

                        <div>参考链接:https://www.youtube.com/watch?v=Ozb9mZg7MVMDocker是一个用于构建运行传送应用程序的平台Docker和虚拟机的区别虚拟化技术:将物理资源虚拟化为多个逻辑资源的技术虚拟机:将一台物理服务器虚拟化为多个逻辑服务器,每个逻辑服务器都有自己的操作系统缺点:每台虚拟机都需要占用巨大的资源启动速度很慢Docker使用宿主机的操作系统,启动速度非常快可以在</div>
                    </li>
                                <li><a href="/article/22.htm"
                                       title="redis学习笔记——不仅仅是存取数据" target="_blank">redis学习笔记——不仅仅是存取数据</a>
                                    <span class="text-muted">Everyday都不同</span>
<a class="tag" taget="_blank" href="/search/returnSource/1.htm">returnSource</a><a class="tag" taget="_blank" href="/search/expire%2Fdel/1.htm">expire/del</a><a class="tag" taget="_blank" href="/search/incr%2Flpush/1.htm">incr/lpush</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%88%86%E5%8C%BA/1.htm">数据库分区</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a>
                                    <div>最近项目中用到比较多redis,感觉之前对它一直局限于get/set数据的层面。其实作为一个强大的NoSql数据库产品,如果好好利用它,会带来很多意想不到的效果。(因为我搞java,所以就从jedis的角度来补充一点东西吧。PS:不一定全,只是个人理解,不喜勿喷) 
  
1、关于JedisPool.returnSource(Jedis jeids) 
  
这个方法是从red</div>
                                </li>
                                <li><a href="/article/149.htm"
                                       title="SQL性能优化-持续更新中。。。。。。" target="_blank">SQL性能优化-持续更新中。。。。。。</a>
                                    <span class="text-muted">atongyeye</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>
                                    <div>1 通过ROWID访问表--索引 
你可以采用基于ROWID的访问方式情况,提高访问表的效率, , ROWID包含了表中记录的物理位置信息..ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系. 通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高. 
 
2 共享SQL语句--相同的sql放入缓存 
 
3 选择最有效率的表</div>
                                </li>
                                <li><a href="/article/276.htm"
                                       title="[JAVA语言]JAVA虚拟机对底层硬件的操控还不完善" target="_blank">[JAVA语言]JAVA虚拟机对底层硬件的操控还不完善</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/JAVA%E8%99%9A%E6%8B%9F%E6%9C%BA/1.htm">JAVA虚拟机</a>
                                    <div> 
     如果我们用汇编语言编写一个直接读写CPU寄存器的代码段,然后利用这个代码段去控制被操作系统屏蔽的硬件资源,这对于JVM虚拟机显然是不合法的,对操作系统来讲,这样也是不合法的,但是如果是一个工程项目的确需要这样做,合同已经签了,我们又不能够这样做,怎么办呢? 那么一个精通汇编语言的那种X客,是否在这个时候就会发生某种至关重要的作用呢? 
 
&n</div>
                                </li>
                                <li><a href="/article/403.htm"
                                       title="lvs- real" target="_blank">lvs- real</a>
                                    <span class="text-muted">男人50</span>
<a class="tag" taget="_blank" href="/search/LVS/1.htm">LVS</a>
                                    <div>#!/bin/bash 
# 
# Script to start LVS DR real server. 
# description: LVS DR real server 
# 
#.  /etc/rc.d/init.d/functions 
 
VIP=10.10.6.252 
host='/bin/hostname' 
 
case "$1" in 
sta</div>
                                </li>
                                <li><a href="/article/530.htm"
                                       title="生成公钥和私钥" target="_blank">生成公钥和私钥</a>
                                    <span class="text-muted">oloz</span>
<a class="tag" taget="_blank" href="/search/DSA/1.htm">DSA</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E5%8A%A0%E5%AF%86/1.htm">安全加密</a>
                                    <div>package com.msserver.core.util;

import java.security.KeyPair;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;

public class SecurityUtil {
</div>
                                </li>
                                <li><a href="/article/657.htm"
                                       title="UIView 中加入的cocos2d,背景透明" target="_blank">UIView 中加入的cocos2d,背景透明</a>
                                    <span class="text-muted">374016526</span>
<a class="tag" taget="_blank" href="/search/cocos2d/1.htm">cocos2d</a><a class="tag" taget="_blank" href="/search/glClearColor/1.htm">glClearColor</a>
                                    <div>要点是首先pixelFormat:kEAGLColorFormatRGBA8,必须有alpha层才能透明。然后view设置为透明glView.opaque = NO;[director setOpenGLView:glView];[self.viewController.view setBackgroundColor:[UIColor clearColor]];[self.viewControll</div>
                                </li>
                                <li><a href="/article/784.htm"
                                       title="mysql常用命令" target="_blank">mysql常用命令</a>
                                    <span class="text-muted">香水浓</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>连接数据库 
mysql -u troy -ptroy 
 
备份表 
mysqldump -u troy -ptroy mm_database mm_user_tbl > user.sql 
 
恢复表(与恢复数据库命令相同) 
mysql -u troy -ptroy mm_database < user.sql 
 
备份数据库 
mysqldump -u troy -ptroy</div>
                                </li>
                                <li><a href="/article/911.htm"
                                       title="我的架构经验系列文章 - 后端架构 - 系统层面" target="_blank">我的架构经验系列文章 - 后端架构 - 系统层面</a>
                                    <span class="text-muted">agevs</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a>
                                    <div>系统层面:
高可用性

所谓高可用性也就是通过避免单独故障加上快速故障转移实现一旦某台物理服务器出现故障能实现故障快速恢复。一般来说,可以采用两种方式,如果可以做业务可以做负载均衡则通过负载均衡实现集群,然后针对每一台服务器进行监控,一旦发生故障则从集群中移除;如果业务只能有单点入口那么可以通过实现Standby机加上虚拟IP机制,实现Active机在出现故障之后虚拟IP转移到Standby的快速</div>
                                </li>
                                <li><a href="/article/1038.htm"
                                       title="利用ant进行远程tomcat部署" target="_blank">利用ant进行远程tomcat部署</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a>
                                    <div>在javaEE项目中,需要将工程部署到远程服务器上,如果部署的频率比较高,手动部署的方式就比较麻烦,可以利用Ant工具实现快捷的部署。这篇博文详细介绍了ant配置的步骤(http://www.cnblogs.com/GloriousOnion/archive/2012/12/18/2822817.html),但是在tomcat7以上不适用,需要修改配置,具体如下: 
1.配置tomcat的用户角色</div>
                                </li>
                                <li><a href="/article/1165.htm"
                                       title="获取复利总收入" target="_blank">获取复利总收入</a>
                                    <span class="text-muted">baalwolf</span>
<a class="tag" taget="_blank" href="/search/%E8%8E%B7%E5%8F%96/1.htm">获取</a>
                                    <div>       public static void main(String args[]){ 
        int money=200; 
        int year=1; 
        double rate=0.1; 
&</div>
                                </li>
                                <li><a href="/article/1292.htm"
                                       title="eclipse.ini解释" target="_blank">eclipse.ini解释</a>
                                    <span class="text-muted">BigBird2012</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a>
                                    <div>大多数java开发者使用的都是eclipse,今天感兴趣去eclipse官网搜了一下eclipse.ini的配置,供大家参考,我会把关键的部分给大家用中文解释一下。还是推荐有问题不会直接搜谷歌,看官方文档,这样我们会知道问题的真面目是什么,对问题也有一个全面清晰的认识。 
Overview 
1、Eclipse.ini的作用 
Eclipse startup is controlled by th</div>
                                </li>
                                <li><a href="/article/1419.htm"
                                       title="AngularJS实现分页功能" target="_blank">AngularJS实现分页功能</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E9%A1%B5/1.htm">分页</a>
                                    <div>        对于大多数web应用来说显示项目列表是一种很常见的任务。通常情况下,我们的数据会比较多,无法很好地显示在单个页面中。在这种情况下,我们需要把数据以页的方式来展示,同时带有转到上一页和下一页的功能。既然在整个应用中这是一种很常见的需求,那么把这一功能抽象成一个通用的、可复用的分页(Paginator)服务是很有意义的。 
  &nbs</div>
                                </li>
                                <li><a href="/article/1546.htm"
                                       title="[Maven学习笔记三]Maven archetype" target="_blank">[Maven学习笔记三]Maven archetype</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/ArcheType/1.htm">ArcheType</a>
                                    <div>archetype的英文意思是原型,Maven archetype表示创建Maven模块的模版,比如创建web项目,创建Spring项目等等. 
  
mvn archetype提供了一种命令行交互式创建Maven项目或者模块的方式, 
  
mvn archetype 
  
1.在LearnMaven-ch03目录下,执行命令mvn archetype:gener</div>
                                </li>
                                <li><a href="/article/1673.htm"
                                       title="【Java命令三】jps" target="_blank">【Java命令三】jps</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/Java%E5%91%BD%E4%BB%A4/1.htm">Java命令</a>
                                    <div>jps很简单,用于显示当前运行的Java进程,也可以连接到远程服务器去查看 
  
[hadoop@hadoop bin]$ jps -help
usage: jps [-help]
       jps [-q] [-mlvV] [<hostid>]

Definitions:
    <hostid>:      <hostname>[:</div>
                                </li>
                                <li><a href="/article/1800.htm"
                                       title="ZABBIX2.2 2.4 等各版本之间的兼容性" target="_blank">ZABBIX2.2 2.4 等各版本之间的兼容性</a>
                                    <span class="text-muted">ronin47</span>

                                    <div>zabbix更新很快,从2009年到现在已经更新多个版本,为了使用更多zabbix的新特性,随之而来的便是升级版本,zabbix版本兼容性是必须优先考虑的一点 客户端AGENT兼容 
zabbix1.x到zabbix2.x的所有agent都兼容zabbix server2.4:如果你升级zabbix server,客户端是可以不做任何改变,除非你想使用agent的一些新特性。 Zabbix代理(p</div>
                                </li>
                                <li><a href="/article/1927.htm"
                                       title="unity 3d还是cocos2dx哪个适合游戏?" target="_blank">unity 3d还是cocos2dx哪个适合游戏?</a>
                                    <span class="text-muted">brotherlamp</span>
<a class="tag" taget="_blank" href="/search/unity%E8%87%AA%E5%AD%A6/1.htm">unity自学</a><a class="tag" taget="_blank" href="/search/unity%E6%95%99%E7%A8%8B/1.htm">unity教程</a><a class="tag" taget="_blank" href="/search/unity%E8%A7%86%E9%A2%91/1.htm">unity视频</a><a class="tag" taget="_blank" href="/search/unity%E8%B5%84%E6%96%99/1.htm">unity资料</a><a class="tag" taget="_blank" href="/search/unity/1.htm">unity</a>
                                    <div>unity 3d还是cocos2dx哪个适合游戏? 
问:unity 3d还是cocos2dx哪个适合游戏? 
答:首先目前来看unity视频教程因为是3d引擎,目前对2d支持并不完善,unity 3d 目前做2d普遍两种思路,一种是正交相机,3d画面2d视角,另一种是通过一些插件,动态创建mesh来绘制图形单元目前用的较多的是2d toolkit,ex2d,smooth moves,sm2, 
</div>
                                </li>
                                <li><a href="/article/2054.htm"
                                       title="百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序" target="_blank">百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6/1.htm">百度</a><a class="tag" taget="_blank" href="/search/%E6%8B%9B%E8%81%98/1.htm">招聘</a>
                                    <div>

import java.util.Arrays;

/**
 * 最早是在陈利人老师的微博看到这道题:
 * #面试题#An array with n elements which is K most sorted,就是每个element的初始位置和它最终的排序后的位置的距离不超过常数K
 * 设计一个排序算法。It should be faster than O(n*lgn)。</div>
                                </li>
                                <li><a href="/article/2181.htm"
                                       title="获取checkbox复选框的值" target="_blank">获取checkbox复选框的值</a>
                                    <span class="text-muted">chiangfai</span>
<a class="tag" taget="_blank" href="/search/checkbox/1.htm">checkbox</a>
                                    <div><title>CheckBox</title>
  <script type = "text/javascript">
	doGetVal: function  doGetVal()
	{
		//var fruitName = document.getElementById("apple").value;//根据</div>
                                </li>
                                <li><a href="/article/2308.htm"
                                       title="MySQLdb用户指南" target="_blank">MySQLdb用户指南</a>
                                    <span class="text-muted">chenchao051</span>
<a class="tag" taget="_blank" href="/search/mysqldb/1.htm">mysqldb</a>
                                    <div>原网页被墙,放这里备用。  MySQLdb User's Guide  
Contents 
 
 Introduction 
 Installation 
  _mysql 
   
   MySQL C API translation 
   MySQL C API function mapping 
   Some _mysql examples 
    
  MySQLdb 
   
 </div>
                                </li>
                                <li><a href="/article/2435.htm"
                                       title="HIVE 窗口及分析函数" target="_blank">HIVE 窗口及分析函数</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/%E7%AA%97%E5%8F%A3%E5%87%BD%E6%95%B0/1.htm">窗口函数</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E6%9E%90%E5%87%BD%E6%95%B0/1.htm">分析函数</a>
                                    <div>窗口函数应用场景: 
(1)用于分区排序 
(2)动态Group By 
(3)Top N 
(4)累计计算 
(5)层次查询 
 
一、分析函数 
用于等级、百分点、n分片等。 
函数             说明 
RANK()     &nbs</div>
                                </li>
                                <li><a href="/article/2562.htm"
                                       title="PHP ZipArchive 实现压缩解压Zip文件" target="_blank">PHP ZipArchive 实现压缩解压Zip文件</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/zip/1.htm">zip</a>
                                    <div>  
PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流。这里整理一下常用的示例供参考。 
一、解压缩zip文件        01   02   03   04   05   06   07   08   09   10   11   </div>
                                </li>
                                <li><a href="/article/2689.htm"
                                       title="精彩英语贺词" target="_blank">精彩英语贺词</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E8%8B%B1%E8%AF%AD/1.htm">英语</a>
                                    <div>I'm always here  
            我会一直在这里支持你  
              &nb</div>
                                </li>
                                <li><a href="/article/2816.htm"
                                       title="基于Java注解的Spring的IoC功能" target="_blank">基于Java注解的Spring的IoC功能</a>
                                    <span class="text-muted">e200702084</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/IOC/1.htm">IOC</a><a class="tag" taget="_blank" href="/search/Office/1.htm">Office</a>
                                    <div>                                
  </div>
                                </li>
                                <li><a href="/article/2943.htm"
                                       title="java模拟post请求" target="_blank">java模拟post请求</a>
                                    <span class="text-muted">geeksun</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>一般API接收客户端(比如网页、APP或其他应用服务)的请求,但在测试时需要模拟来自外界的请求,经探索,使用HttpComponentshttpClient可模拟Post提交请求。  此处用HttpComponents的httpclient来完成使命。   
import org.apache.http.HttpEntity ;
import org.apache.http.HttpRespon</div>
                                </li>
                                <li><a href="/article/3070.htm"
                                       title="Swift语法之 ---- ?和!区别" target="_blank">Swift语法之 ---- ?和!区别</a>
                                    <span class="text-muted">hongtoushizi</span>
<a class="tag" taget="_blank" href="/search/%3F/1.htm">?</a><a class="tag" taget="_blank" href="/search/swift/1.htm">swift</a><a class="tag" taget="_blank" href="/search/%21/1.htm">!</a>
                                    <div>转载自: http://blog.sina.com.cn/s/blog_71715bf80102ux3v.html 
  
Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化。如果在使用变量之前不进行初始化就会报错:  
var stringValue : String 
//</div>
                                </li>
                                <li><a href="/article/3197.htm"
                                       title="centos7安装jdk1.7" target="_blank">centos7安装jdk1.7</a>
                                    <span class="text-muted">jisonami</span>
<a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a><a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a>
                                    <div>安装JDK1.7 
步骤1、解压tar包在当前目录 
[root@localhost usr]#tar -xzvf jdk-7u75-linux-x64.tar.gz 
步骤2:配置环境变量 
在etc/profile文件下添加 
export JAVA_HOME=/usr/java/jdk1.7.0_75 
export CLASSPATH=/usr/java/jdk1.7.0_75/lib 
</div>
                                </li>
                                <li><a href="/article/3324.htm"
                                       title="数据源架构模式之数据映射器" target="_blank">数据源架构模式之数据映射器</a>
                                    <span class="text-muted">home198979</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%98%A0%E5%B0%84%E5%99%A8/1.htm">数据映射器</a><a class="tag" taget="_blank" href="/search/datamapper/1.htm">datamapper</a>
                                    <div>前面分别介绍了数据源架构模式之表数据入口、数据源架构模式之行和数据入口数据源架构模式之活动记录,相较于这三种数据源架构模式,数据映射器显得更加“高大上”。 
  
一、概念 
数据映射器(Data Mapper):在保持对象和数据库(以及映射器本身)彼此独立的情况下,在二者之间移动数据的一个映射器层。概念永远都是抽象的,简单的说,数据映射器就是一个负责将数据映射到对象的类数据。 
&nb</div>
                                </li>
                                <li><a href="/article/3451.htm"
                                       title="在Python中使用MYSQL" target="_blank">在Python中使用MYSQL</a>
                                    <span class="text-muted">pda158</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                                    <div>缘由     近期在折腾一个小东西须要抓取网上的页面。然后进行解析。将结果放到 
数据库中。     了解到 
Python在这方面有优势,便选用之。     由于我有台 
server上面安装有 
mysql,自然使用之。在进行数据库的这个操作过程中遇到了不少问题,这里 
记录一下,大家共勉。      
python中mysql的调用      
百度之后能够通过MySQLdb进行数据库操作。</div>
                                </li>
                                <li><a href="/article/3578.htm"
                                       title="单例模式" target="_blank">单例模式</a>
                                    <span class="text-muted">hxl1988_0311</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B/1.htm">单例</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BB%B6/1.htm">单件</a>
                                    <div>package com.sosop.designpattern.singleton;

/*
 * 单件模式:保证一个类必须只有一个实例,并提供全局的访问点
 * 
 * 所以单例模式必须有私有的构造器,没有私有构造器根本不用谈单件
 * 
 * 必须考虑到并发情况下创建了多个实例对象
 * */

/**
 * 虽然有锁,但是只在第一次创建对象的时候加锁,并发时不会存在效率</div>
                                </li>
                                <li><a href="/article/3705.htm"
                                       title="27种迹象显示你应该辞掉程序员的工作" target="_blank">27种迹象显示你应该辞掉程序员的工作</a>
                                    <span class="text-muted">vipshichg</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a>
                                    <div>1、你仍然在等待老板在2010年答应的要提拔你的暗示。 2、你的上级近10年没有开发过任何代码。 3、老板假装懂你说的这些技术,但实际上他完全不知道你在说什么。 4、你干完的项目6个月后才部署到现场服务器上。 5、时不时的,老板在检查你刚刚完成的工作时,要求按新想法重新开发。 6、而最终这个软件只有12个用户。 7、时间全浪费在办公室政治中,而不是用在开发好的软件上。 8、部署前5分钟才开始测试。</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>