diff --git a/README.md b/README.md index 13f4975..2934c51 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,54 @@ # OS -## [linux 教程](docs/linux/README.md) +## 内容 -## [shell 教程](docs/shell.md) +### [Linux](docs/linux/README.md) -## [python 教程](docs/python.md) +- [查看 Linux 命令帮助信息](docs/linux/01.查看Linux命令帮助信息.md) - 关键词:`help`, `whatis`, `info`, `which`, `whereis`, `man` +- [Linux 文件目录管理](docs/linux/02.Linux文件目录管理.md) - 关键词:`cd`, `ls`, `pwd`, `mkdir`, `rmdir`, `tree`, `touch`, `ln`, `rename`, `stat`, `file`, `chmod`, `chown`, `locate`, `find`, `cp`, `mv`, `rm` +- [Linux 文件内容查看命令](docs/linux/03.Linux文件内容查看编辑.md) - 关键词:`cat`, `head`, `tail`, `more`, `less` +- [Linux 文件压缩与解压命令](docs/linux/Linux文件压缩与解压命令.md) - 关键词:`tar`, `gzip`, `zip`, `unzip` +- [Linux 用户管理命令](docs/linux/Linux用户管理命令.md) - 关键词:`groupadd`, `groupdel`, `groupmod`, `useradd`, `userdel`, `usermod`, `passwd`, `su`, `sudo` +- [Linux 系统管理命令](docs/linux/Linux系统管理命令.md) - 关键词:`reboot`, `exit`, `shutdown`, `date`, `mount`, `umount` +- [Linux 性能管理命令](docs/linux/Linux性能管理命令.md) - 关键词:`df`, `du`, `top`, `free`, `iotop` +- [Linux 进程管理命令](docs/linux/Linux进程管理命令.md) - 关键词:`ps`, `kill`, `systemctl`, `service`, `crontab` +- [Linux 网络应用命令](docs/linux/Linux网络应用命令.md) - 关键词:`curl`, `wget`, `telnet`, `ip`, `hostname`, `ifconfig`, `route`, `ssh`, `ssh-keygen`, `iptables` +- [Linux 网络测试命令](docs/linux/Linux网络测试命令.md) - 关键词:`host`, `nslookup`, `nc`/`netcat`, `dig`, `ping`, `traceroute`, `netstat` +- [yum 命令](docs/linux/yum.md) +- [linux 监控](docs/linux/linux监控.md) +- [samba 使用详解](docs/linux/samba使用详解.md) +- [命令行的艺术(转载)](docs/linux/命令行的艺术.md) -## [vim 教程](docs/vim/README.md) +### [Shell](docs/shell.md) -## [git 教程](docs/git/README.md) +### [Python](docs/python.md) -## [docker 教程](docs/docker/README.md) +### [Vim](docs/vim/README.md) + +### [Git](docs/git/README.md) + +- [快速指南(quickstart)](docs/git/git-quickstart.md) + +#### git 基础篇(basics) + +- [安装(installation)](docs/git/basics/git-installation.md) +- [配置(configuration)](docs/git/basics/git-configuration.md) + +#### git 进阶篇(advanced) + +- [git-flow 工作流](docs/git/advanced/git-flow.md) + +#### git 附录(appendix) + +- [常见问题(faq)](docs/git/appendix/git-faq.md) +- [命令(command)](docs/git/appendix/git-command.md) +- [资源(resource)](docs/git/appendix/git-resource.md) + +### [Docker](docs/docker/README.md) + +### Windows + +- [Windows 工具](docs/windows/Windows工具.md) ## 部署 @@ -20,19 +58,19 @@ ### 常见软件安装配置详述 -> *`CODES`:安装配置脚本,按照说明安装使用即可。* +> _`CODES`:安装配置脚本,按照说明安装使用即可。_ > -> *`DOCS`: 安装配置文档,说明安装的方法以及一些注意事项。* +> _`DOCS`: 安装配置文档,说明安装的方法以及一些注意事项。_ -* JDK 安装和配置:| [CODES](codes/deploy/tool/jdk) | [DOCS](docs/deploy/tool/jdk/install-jdk.md) | -* Jenkins 安装和配置:| [CODES](codes/deploy/tool/jenkins) | [DOCS](docs/deploy/tool/mongodb/install-jenkins.md) | -* Kafka 安装和配置:| [CODES](codes/deploy/tool/kafka) | [DOCS](docs/deploy/tool/kafka/install-kafka.md) | -* Maven 安装和配置:| [CODES](codes/deploy/tool/maven) | [DOCS](docs/deploy/tool/maven/install-maven.md) | -* Mongodb 安装和配置:| [CODES](codes/deploy/tool/mongodb) | [DOCS](docs/deploy/tool/mongodb/install-mongodb.md) | -* Nginx 安装和配置:| [CODES](codes/deploy/tool/nginx) | [DOCS](docs/deploy/tool/nginx/install-nginx.md) | -* Nodejs 安装和配置:| [CODES](codes/deploy/tool/nodejs) | [DOCS](docs/deploy/tool/nodejs/install-nodejs.md) | -* Redis 安装和配置:| [CODES](codes/deploy/tool/redis) | [DOCS](docs/deploy/tool/redis/install-redis.md) | -* RocketMQ 安装和配置:| [CODES](codes/deploy/tool/rocketmq) | [DOCS](docs/deploy/tool/rocketmq/install-rocketmq.md) | -* Tomcat 安装和配置:| [CODES](codes/deploy/tool/tomcat) | [DOCS](docs/deploy/tool/tomcat/install-tomcat.md) | -* Zookeeper 安装和配置:| [CODES](codes/deploy/tool/zookeeper) | [DOCS](docs/deploy/tool/zookeeper/install-zookeeper.md) | -* Svn 安装和配置:| [DOCS](docs/deploy/tool/svn/install-svn.md) | +- JDK 安装和配置:| [CODES](codes/deploy/tool/jdk) | [DOCS](docs/deploy/tool/jdk/install-jdk.md) | +- Jenkins 安装和配置:| [CODES](codes/deploy/tool/jenkins) | [DOCS](docs/deploy/tool/mongodb/install-jenkins.md) | +- Kafka 安装和配置:| [CODES](codes/deploy/tool/kafka) | [DOCS](docs/deploy/tool/kafka/install-kafka.md) | +- Maven 安装和配置:| [CODES](codes/deploy/tool/maven) | [DOCS](docs/deploy/tool/maven/install-maven.md) | +- Mongodb 安装和配置:| [CODES](codes/deploy/tool/mongodb) | [DOCS](docs/deploy/tool/mongodb/install-mongodb.md) | +- Nginx 安装和配置:| [CODES](codes/deploy/tool/nginx) | [DOCS](docs/deploy/tool/nginx/install-nginx.md) | +- Nodejs 安装和配置:| [CODES](codes/deploy/tool/nodejs) | [DOCS](docs/deploy/tool/nodejs/install-nodejs.md) | +- Redis 安装和配置:| [CODES](codes/deploy/tool/redis) | [DOCS](docs/deploy/tool/redis/install-redis.md) | +- RocketMQ 安装和配置:| [CODES](codes/deploy/tool/rocketmq) | [DOCS](docs/deploy/tool/rocketmq/install-rocketmq.md) | +- Tomcat 安装和配置:| [CODES](codes/deploy/tool/tomcat) | [DOCS](docs/deploy/tool/tomcat/install-tomcat.md) | +- Zookeeper 安装和配置:| [CODES](codes/deploy/tool/zookeeper) | [DOCS](docs/deploy/tool/zookeeper/install-zookeeper.md) | +- Svn 安装和配置:| [DOCS](docs/deploy/tool/svn/install-svn.md) | diff --git a/docs/deploy/linux基本配置.md b/docs/deploy/linux基本配置.md new file mode 100644 index 0000000..fd2ecb1 --- /dev/null +++ b/docs/deploy/linux基本配置.md @@ -0,0 +1,16 @@ + +### 设置 Linux 启动模式 + +1. 停机(记得不要把 initdefault 配置为 0,因为这样会使 Linux 不能启动) +2. 单用户模式,就像 Win9X 下的安全模式 +3. 多用户,但是没有 NFS +4. 完全多用户模式,准则的运行级 +5. 通常不用,在一些特殊情况下可以用它来做一些事情 +6. X11,即进到 X-Window 系统 +7. 重新启动 (记得不要把 initdefault 配置为 6,因为这样会使 Linux 不断地重新启动) + +设置方法: + +```sh +$ sed -i 's/id:5:initdefault:/id:3:initdefault:/' /etc/inittab +``` \ No newline at end of file diff --git a/docs/deploy/tool/mysql/install-mysql.md b/docs/deploy/tool/mysql/install-mysql.md new file mode 100644 index 0000000..b166456 --- /dev/null +++ b/docs/deploy/tool/mysql/install-mysql.md @@ -0,0 +1,121 @@ +# Mysql 安装 + +系统环境:Centos7 + +## 安装配置 + +通过 rpm 包安装 + +centos 的 yum 源中默认是没有 mysql 的,所以我们需要先去官网下载 mysql 的 repo 源并安装。 + +### 安装 mysql yum 源 + +官方下载地址:https://dev.mysql.com/downloads/repo/yum/ + +(1)下载 yum 源 + +```sh +$ wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm +``` + +(2)安装 yum repo 文件并更新 yum 缓存 + +```sh +$ rpm -ivh mysql80-community-release-el7-1.noarch.rpm +``` + +执行结果: + +会在 /etc/yum.repos.d/ 目录下生成两个 repo 文件 + +```sh +ls | grep mysql +mysql-community.repo +mysql-community-source.repo +``` + +更新 yum: + +``` +yum clean all +yum makecache +``` + +(3)查看 rpm 安装状态 + +```sh +$ yum repolist enabled | grep mysql.* +mysql-connectors-community/x86_64 MySQL Connectors Community 65 +mysql-tools-community/x86_64 MySQL Tools Community 69 +mysql80-community/x86_64 MySQL 8.0 Community Server 33 +``` + +### 安装 mysql 服务器 + +```sh +$ yum install mysql-community-server +``` + +### 启动 mysql 服务 + +```sh +# 启动 mysql 服务 +$ systemctl start mysqld.service + +# 查看运行状态 +$ systemctl status mysqld.service + +# 开机启动 +$ systemctl enable mysqld +$ systemctl daemon-reload +``` + +### 初始化数据库密码 + +查看一下初始密码 + +```sh +$ grep "password" /var/log/mysqld.log +2018-09-30T03:13:41.727736Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: %:lt+srWu4k1 +``` + +执行命令: + +```sh +mysql -uroot -p +``` + +输入临时密码,进入 mysql + +```sh +ALTER user 'root'@'localhost' IDENTIFIED BY 'Tw#123456'; +``` + +注:密码强度默认为中等,大小写字母、数字、特殊符号,只有修改成功后才能修改配置再设置更简单的密码 + +### 配置远程访问 + +``` +GRANT ALL ON *.* TO 'root'@'localhost'; +FLUSH PRIVILEGES; +``` + +### 跳过登录认证 + +``` +vim /etc/my.cnf +``` + +在 [mysqld] 下面加上 skip-grant-tables + +作用是登录时跳过登录认证,换句话说就是 root 什么密码都可以登录进去。 + +执行 `service mysqld restart`,重启 mysql + +## 参考资料 + +https://www.cnblogs.com/xiaopotian/p/8196464.html +https://www.cnblogs.com/bigbrotherer/p/7241845.html +https://blog.csdn.net/managementandjava/article/details/80039650 +http://www.manongjc.com/article/6996.html +https://www.cnblogs.com/xyabk/p/8967990.html \ No newline at end of file diff --git a/docs/docker/basics/docker-install.md b/docs/docker/basics/docker-install.md index 4ba25b5..21daf6e 100644 --- a/docs/docker/basics/docker-install.md +++ b/docs/docker/basics/docker-install.md @@ -1,29 +1,74 @@ # Docker 安装 -本教程基于 `Docker 1.13.1`。 +> 本教程基于 `Docker 1.37`。 +> +> Docker 有两种可安装版本: +> +> - [Community Edition (CE)](https://www.docker.com/community-edition/),即 Docker 社区版,适合学习。 +> - [Enterprise Edition (EE)](https://www.docker.com/enterprise-edition),即 Docker 企业版,适合企业级开发使用。 -Docker 有两种可安装版本: + -* [Community Edition (CE)](https://www.docker.com/community-edition/),即 Docker 社区版,适合学习。 -* [Enterprise Edition (EE)](https://www.docker.com/enterprise-edition),即 Docker 企业版,适合企业级开发使用。 +- [Windows 下安装 Docker](#windows-下安装-docker) +- [安装参考](#安装参考) + + + +## Windows 下安装 Docker + +安装 Docker Toolbox 步骤: + +(1)双击运行安装包 + +![](http://oyz7npk35.bkt.clouddn.com/images/20180920180926103056.png) + +(2)点击需要安装的程序,建议全安装 + +![](http://oyz7npk35.bkt.clouddn.com/images/20180920180926103147.png) + +(3)安装附加选项,建议选择前三个 + +![](http://oyz7npk35.bkt.clouddn.com/images/20180920180926103213.png) + +(4)安装结果 + +![](http://oyz7npk35.bkt.clouddn.com/images/20180920180926102959.png) + +### 可能遇到的问题 + +问题 1 - bash.exe 找不到 + +![](http://oyz7npk35.bkt.clouddn.com/images/20180920180926104526.png) + +打开快捷方式的属性窗口,在目标栏设置如下: + +``` +"C:\Program Files\Git\bin\bash.exe" --login -i "D:\Tools\DockerToolbox\start.sh" +``` + +![](http://oyz7npk35.bkt.clouddn.com/images/20180920180926105007.png) + +问题 2 - Hyper-V 冲突 + +![](http://oyz7npk35.bkt.clouddn.com/images/20180920180926105357.png) ## 安装参考 **Enterprise Edition (EE)** -* https://docs.docker.com/install/windows/docker-ee/ -* https://docs.docker.com/install/linux/docker-ee/ubuntu/ -* https://docs.docker.com/install/linux/docker-ee/rhel/ -* https://docs.docker.com/install/linux/docker-ee/centos/ -* https://docs.docker.com/install/linux/docker-ee/oracle/ -* https://docs.docker.com/install/linux/docker-ee/suse/ +- https://docs.docker.com/install/windows/docker-ee/ +- https://docs.docker.com/install/linux/docker-ee/ubuntu/ +- https://docs.docker.com/install/linux/docker-ee/rhel/ +- https://docs.docker.com/install/linux/docker-ee/centos/ +- https://docs.docker.com/install/linux/docker-ee/oracle/ +- https://docs.docker.com/install/linux/docker-ee/suse/ **Community Edition (CE)** -* https://docs.docker.com/docker-for-mac/install/ -* https://docs.docker.com/docker-for-windows/install/ -* https://docs.docker.com/install/linux/docker-ce/ubuntu/ -* https://docs.docker.com/install/linux/docker-ce/debian/ -* https://docs.docker.com/install/linux/docker-ce/centos/ -* https://docs.docker.com/install/linux/docker-ce/fedora/ -* https://docs.docker.com/install/linux/docker-ce/binaries/ \ No newline at end of file +- https://docs.docker.com/docker-for-mac/install/ +- https://docs.docker.com/docker-for-windows/install/ +- https://docs.docker.com/install/linux/docker-ce/ubuntu/ +- https://docs.docker.com/install/linux/docker-ce/debian/ +- https://docs.docker.com/install/linux/docker-ce/centos/ +- https://docs.docker.com/install/linux/docker-ce/fedora/ +- https://docs.docker.com/install/linux/docker-ce/binaries/ diff --git a/docs/docker/docker-quickstart.md b/docs/docker/docker-quickstart.md index 1ce21be..888731e 100644 --- a/docs/docker/docker-quickstart.md +++ b/docs/docker/docker-quickstart.md @@ -1,243 +1,124 @@ - +# Docker -- [Docker 快速指南](#docker-%E5%BF%AB%E9%80%9F%E6%8C%87%E5%8D%97) - - [Orientation](#orientation) - - [概念](#%E6%A6%82%E5%BF%B5) - - [Docker 的优点](#docker-%E7%9A%84%E4%BC%98%E7%82%B9) - - [容器和镜像](#%E5%AE%B9%E5%99%A8%E5%92%8C%E9%95%9C%E5%83%8F) - - [容器和虚拟机](#%E5%AE%B9%E5%99%A8%E5%92%8C%E8%99%9A%E6%8B%9F%E6%9C%BA) - - [Containers](#containers) - - [Dockerfile](#dockerfile) - - [创建并运行一个镜像](#%E5%88%9B%E5%BB%BA%E5%B9%B6%E8%BF%90%E8%A1%8C%E4%B8%80%E4%B8%AA%E9%95%9C%E5%83%8F) - - [共享镜像](#%E5%85%B1%E4%BA%AB%E9%95%9C%E5%83%8F) - - [Services](#services) - - [Swarms](#swarms) - - [Stacks](#stacks) - - [Deploy](#deploy) - - [常用命令行](#%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4%E8%A1%8C) - - [资料](#%E8%B5%84%E6%96%99) + + +- [镜像(Images)](#镜像images) +- [容器(Container)](#容器container) +- [网络(Networks)](#网络networks) +- [仓管中心和仓库(Registry & Repository)](#仓管中心和仓库registry--repository) +- [Dockerfile](#dockerfile) +- [卷标(Volumes)](#卷标volumes) -# Docker 快速指南 +## 镜像(Images) -## Orientation +- [`docker image ls`](https://github.com/yeasy/docker_practice/blob/master/image/list.md) - 查看所有镜像。 +- [`docker image rm`](https://github.com/yeasy/docker_practice/blob/master/image/rm.md) - 删除本地镜像。 +- `docker import` - 从压缩文件中创建镜像。 +- `docker export` - 导出既有容器。 +- `docker build` - 从 Dockerfile 创建镜像。 +- `docker commit` - 为容器创建镜像,如果容器正在运行则会临时暂停。 +- `docker rmi` - 删除镜像。 +- `docker load` - 通过 STDIN 从压缩包加载镜像,包括镜像和标签(images and tags) (0.7 起). +- `docker save` - 通过 STDOUT 保存镜像到压缩包,包括所有的父层,标签和版本(parent layers, tags & versions) (0.7 起). +- `docker history` - 查看镜像历史记录。 +- `docker tag` - 给镜像命名打标(tags) (本地或者仓库)。 -### 概念 +## 容器(Container) -Docker 是一个让开发者或系统管理员使用容器来**开发**、**部署**和**运行**应用的平台。 +### 生命周期 -#### 容器和镜像 +- `docker create` - 创建一个容器但是不启动。 +- `docker rename` - 允许重命名容器。 +- `docker run` - 在同一个操作中创建并启动一个容器。 +- `docker rm` - 删除容器。 +- `docker update` - 更新容器的资源限制。 -镜像是一个可执行的包,这个包中含有运行一个应用所需要的一切:代码、运行环境、库、环境变量、配置文件。 +### 启动和停止 -容器是一个镜像的实例。镜像和容器的关系就好像面向对象语言中类和对象的关系。 +- `docker start` - 启动容器。 +- `docker stop` - 停止运行中的容器。 +- `docker restart` - 停止之后再启动容器。 +- `docker pause` - 暂停运行中的容器,将其 "冻结" 在当前状态。 +- `docker unpause` - 结束容器暂停状态。 +- `docker wait` - 阻塞,到运行中的容器停止为止。 +- `docker kill` - 向运行中容器发送 SIGKILL 指令。 +- `docker attach` - 链接到运行中容器。 -### 容器和虚拟机 +### 信息 -一个容器在Linux上本地运行,并与其他容器共享主机的内核。它运行一个独立的进程,不占用任何其他可执行文件的内存,使其轻量化。 +- `docker ps` - 查看运行中的所有容器。 +- `docker logs` - 从容器中获取日志。(你也可以使用自定义日志驱动,不过在 1.10 中,它只支持 json-file 和 journald) +- `docker inspect` - 查看某个容器的所有信息(包括 IP 地址)。 +- `docker events` - 从容器中获取事件(events)。 +- `docker port` - 查看容器的公开端口。 +- `docker top` - 查看容器中活动进程。 +- `docker stats` - 查看容器的资源使用情况统计信息。 +- `docker diff` - 查看容器的 FS 中有变化文件信息。 -相比之下,虚拟机(VM)运行一个完整的“客户”操作系统,通过虚拟机管理程序虚拟访问主机资源。一般来说,虚拟机提供的环境比大多数应用程序需要的资源更多。 +### 导入 / 导出 -![containers-and-vm.png](containers-and-vm.png) +docker cp 在容器和本地文件系统之间复制文件或文件夹。 +docker export 将容器的文件系统切换为压缩包(tarball archive stream)输出到 STDOUT。 -## Containers +### 执行命令 -在以往的开发中,运行一个应用,首先需要准备好它的运行环境。 +docker exec 在容器中执行命令。 -使用 Docker,可以将应用的运行环境(如 JDK、Maven等)打包为一个可移植的镜像。然后,运行应用的同时,运行基础运行环境镜像。 +## 网络(Networks) -这种可移植的镜像定义在一个叫做 `Dockerfile` 的文件。 +### 生命周期 -### Dockerfile +- `docker network create` +- `docker network rm` -Dockerfile定义了容器内环境中发生的事情。访问网络接口和磁盘驱动器等资源是在此环境中虚拟化的,与系统的其余部分隔离,因此您需要将端口映射到外部世界,并明确要将哪些文件“复制”到那个环境。但是,在完成这些之后,您可以预期,在此Dockerfile中定义的应用程序构建在运行时的行为完全相同。 +### 信息 -### 创建并运行一个镜像 +- `docker network ls` +- `docker network inspect` -(1)创建一个目录 +### 链接 -```sh -mkdir -p /home/zp/dockerdemo -cd /home/zp/dockerdemo -``` +- `docker network connect` +- `docker network disconnect` -(2)定义一个 Dockerfile +## 仓管中心和仓库(Registry & Repository) -```docker -# Use an official Python runtime as a parent image -FROM python:2.7-slim +- `docker login` - 登入仓管中心。 +- `docker logout` - 登出仓管中心。 +- `docker search` - 从仓管中心检索镜像。 +- `docker pull` - 从仓管中心拉去镜像到本地。 +- `docker push` - 从本地推送镜像到仓管中心。 -# Set the working directory to /app -WORKDIR /app +## Dockerfile -# Copy the current directory contents into the container at /app -ADD . /app +- .dockerignore +- FROM 为其他指令设置基础镜像(Base Image)。 +- MAINTAINER 为生成的镜像设置作者字段。 +- RUN 在当前镜像的基础上生成一个新层并执行命令。 +- CMD 设置容器默认执行命令。 +- EXPOSE 告知 Docker 容器在运行时所要监听的网络端口。注意:并没有实际上将端口设置为可访问。 +- ENV 设置环境变量。 +- ADD 将文件,文件夹或者远程文件复制到容器中。缓存无效。尽量用 COPY 代替 ADD。 +- COPY 将文件或文件夹复制到容器中。 +- ENTRYPOINT 将一个容器设置为可执行。 +- VOLUME 为外部挂载卷标或其他容器设置挂载点(mount point)。 +- USER 设置执行 RUN / CMD / ENTRYPOINT 命令的用户名。 +- WORKDIR 设置工作目录。 +- ARG 定义编译时(build-time)变量。 +- ONBUILD 添加触发指令,当该镜像被作为其他镜像的基础镜像时该指令会被触发。 +- STOPSIGNAL 设置通过系统向容器发出退出指令。 +- LABEL 将键值对元数据(key/value metadata)应用到你的镜像,容器,或者守护进程。 -# Install any needed packages specified in requirements.txt -RUN pip install --trusted-host pypi.python.org -r requirements.txt +## 卷标(Volumes) -# Make port 80 available to the world outside this container -EXPOSE 80 +### 生命周期 -# Define environment variable -ENV NAME World +- `docker volume create` +- `docker volume rm` -# Run app.py when the container launches -CMD ["python", "app.py"] -``` +### 信息 -> 代理服务器在启动并运行后可以阻止与您的网络应用程序的连接。如果您位于代理服务器的后面,请使用 `ENV` 命令为您的代理服务器指定主机和端口,将以下行添加到 Dockerfile 中: -> -> ```docker -> # Set proxy server, replace host:port with values for your servers -> ENV http_proxy host:port -> ENV https_proxy host:port -> ``` - -(3)创建一个 app - -这里以创建一个 python 应用为例。 - -在 Dockerfile 同目录下新建 `requirements.txt` 文件和 `app.py` 文件。 - -创建一个 `requirements.txt` 文件 - -``` -Flask -Redis -``` - -创建一个 `app.py` 文件 - -```py -from flask import Flask -from redis import Redis, RedisError -import os -import socket - -# Connect to Redis -redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2) - -app = Flask(__name__) - -@app.route("/") -def hello(): - try: - visits = redis.incr("counter") - except RedisError: - visits = "cannot connect to Redis, counter disabled" - - html = "

Hello {name}!

" \ - "Hostname: {hostname}
" \ - "Visits: {visits}" - return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits) - -if __name__ == "__main__": - app.run(host='0.0.0.0', port=80) -``` - -(4)构建应用 - -创建一个 Docker 镜像,执行命令: - -```sh -docker build -t friendlyhello . -``` - -查看 Docker 镜像,执行命令: - -```sh -$ docker image ls - -REPOSITORY TAG IMAGE ID -friendlyhello latest 326387cea398 -``` - -(5)运行 app - -使用 `-p` 将您的机器的端口4000映射到容器的已发布端口80 - -```sh -docker run -d -p 4000:80 friendlyhello -``` - -然后,可以访问 http://localhost:4000 - -### 共享镜像 - -(1)注册登录 - -在 [cloud.docker.com](https://cloud.docker.com/) 注册账户,然后使用 Docker ID 登录。 - -```sh -docker login -``` - -> 注册 Docker ID ,要访问 google ,国内无法访问。要命。 - -(2)给镜像打标签 - -``` -docker tag image username/repository:tag -``` - -例: - -``` -docker tag friendlyhello john/get-started:part2 -``` - -(3)发布镜像 - -``` -docker push username/repository:tag -``` - -(4)从远程仓库拉取并运行镜像 - -``` -docker run -p 4000:80 username/repository:tag -``` - -## Services - -## Swarms - -## Stacks - -## Deploy - -## 常用命令行 - -```sh -docker # 列出所有 Docker 命令 - -docker version # 显示 docker 版本 -docker info # 显示 docker 信息 - -docker build -t friendlyhello . # 使用当前目录下的 Dockerfile 创建 Docker 镜像 -docker run -p 4000:80 friendlyhello # 运行 "friendlyname" ,并映射端口 4000 到 80 -docker run -d -p 4000:80 friendlyhello # 同样的事,但是使用分离的模式 - -docker container --help # 列出 docker container 相关命令 -docker container ls # 列出所有运行的容器 -docker container ls -a # 列出所有的容器 -docker container stop # 优雅的停止所有指定的容器 -docker container kill # 强制停止所有指定的容器 -docker container rm # 从本机中溢出指定的容器 -docker container rm $(docker container ls -a -q) # 移除所有容器 - -docker image --help # 列出 docker image 相关命令 -docker image ls -a # 列出本机中所有的镜像 -docker image rm # 从本机中溢出指定的镜像 -docker image rm $(docker image ls -a -q) # 移除本机中所有镜像 -docker login # 使用您的 Docker ID 登录以从 Docker Hub push 和 pull 图像。 -docker tag username/repository:tag # 标记 以上传到注册中心 -docker push username/repository:tag # 上传标记过的镜像到注册中心 -docker run username/repository:tag # 运行一个注册中心上的镜像 -``` - -## 资料 - -* https://docs.docker.com/get-started/ +- `docker volume ls` +- `docker volume inspect` diff --git a/docs/jenkins/README.md b/docs/jenkins/README.md deleted file mode 100644 index 74e3cb3..0000000 --- a/docs/jenkins/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Jenkins - -> Jenkins 全部整理归纳在 [**jenkins**](https://github.com/dunwu/jenkins) 项目中。 diff --git a/docs/linux/Linux文件编辑命令.md b/docs/linux/03.Linux文件内容查看编辑.md similarity index 66% rename from docs/linux/Linux文件编辑命令.md rename to docs/linux/03.Linux文件内容查看编辑.md index 9caea54..1a3250f 100644 --- a/docs/linux/Linux文件编辑命令.md +++ b/docs/linux/03.Linux文件内容查看编辑.md @@ -1,5 +1,5 @@ --- -title: Linux 文件编辑命令 +title: Linux 文件内容查看编辑 date: 2018/02/27 categories: - linux @@ -8,16 +8,109 @@ tags: - command --- - +# Linux 文件内容查看编辑 -- [流编辑器 - sed](#流编辑器---sed) -- [文本编辑器 - vi](#文本编辑器---vi) +> 关键词:`cat`, `head`, `tail`, `more`, `less` + + + +- [Linux 文件内容查看编辑要点](#linux-文件内容查看编辑要点) +- [命令常见用法](#命令常见用法) + - [cat](#cat) + - [head](#head) + - [tail](#tail) + - [more](#more) + - [less](#less) + - [sed](#sed) + - [vi](#vi) + - [grep](#grep) +- [参考资料](#参考资料) -# Linux 文件编辑命令 +## Linux 文件内容查看编辑要点 -## 流编辑器 - sed +- 连接文件并打印到标准输出设备 - 使用 [cat](#cat) +- 显示指定文件的开头若干行 - 使用 [head](#head) +- 显示指定文件的末尾若干行,常用于实时打印日志文件内容 - 使用 [tail](#tail) +- 显示文件内容,每次显示一屏 - 使用 [more](#more) +- 显示文件内容,每次显示一屏 - 使用 [less](#less) +- 自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等 - 使用 [sed](#sed) +- 文本编辑器 - 使用 [vi](#vi) +- 使用正则表达式搜索文本,并把匹配的行打印出来 - 使用 [grep](#grep) + +## 命令常见用法 + +### cat + +> cat 命令用于连接文件并打印到标准输出设备上。 +> +> 参考:http://man.linuxde.net/cat + +示例: + +```sh +cat m1 # 在屏幕上显示文件 ml 的内容 +cat m1 m2 # 同时显示文件 ml 和 m2 的内容 +cat m1 m2 > file # 将文件 ml 和 m2 合并后放入文件 file 中 +``` + +### head + +> head 命令用于显示文件的开头内容。在默认情况下,head 命令显示文件的头部 10 行内容。 +> +> 参考:http://man.linuxde.net/head + +### tail + +> tail 命令用于显示文件的尾部内容。在默认情况下,tail 命令显示文件的尾部 10 行内容。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。 +> +> 参考:http://man.linuxde.net/tail + +示例: + +```sh +tail file # 显示文件file的最后10行 +tail -n +20 file # 显示文件file的内容,从第20行至文件末尾 +tail -c 10 file # 显示文件file的最后10个字符 +``` + +### more + +> more 命令是一个基于 vi 编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持 vi 中的关键字定位操作。more 名单中内置了若干快捷键,常用的有 H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。 +> +> 该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比:--More--(XX%)可以用下列不同的方法对提示做出回答: +> +> - 按 Space 键:显示文本的下一屏内容。 +> - 按 Enier 键:只显示文本的下一行内容。 +> - 按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。 +> - 按 H 键:显示帮助屏,该屏上有相关的帮助信息。 +> - 按 B 键:显示上一屏内容。 +> - 按 Q 键:退出 rnore 命令。 +> +> 参考:http://man.linuxde.net/more + +示例: + +```sh +# 显示文件 file 的内容,但在显示之前先清屏,并且在屏幕的最下方显示完核的百分比。 +more -dc file + +# 显示文件 file 的内容,每 10 行显示一次,而且在显示之前先清屏。 +more -c -10 file +``` + +### less + +less 命令的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 命令允许用户向前或向后浏览文件,而 more 命令只能向前浏览。用 less 命令显示文件时,用 PageUp 键向上翻页,用 PageDown 键向下翻页。要退出 less 程序,应按 Q 键。 + +示例: + +```sh +less /var/log/shadowsocks.log +``` + +### sed > sed 是一种流编辑器,它是文本处理工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed 主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 > @@ -54,13 +147,13 @@ sed '$d' file sed '/^test/'d file ``` -## 文本编辑器 - vi +### vi > vi 命令是 UNIX 操作系统和类 UNIX 操作系统中最通用的全屏幕纯文本编辑器。Linux 中的 vi 编辑器叫 vim,它是 vi 的增强版(vi Improved),与 vi 编辑器完全兼容,而且实现了很多增强功能。 > > 参考:http://man.linuxde.net/vi -### 补充说明 +#### 补充说明 **vi 命令** 是 UNIX 操作系统和类 UNIX 操作系统中最通用的全屏幕纯文本编辑器。Linux 中的 vi 编辑器叫 vim,它是 vi 的增强版(vi Improved),与 vi 编辑器完全兼容,而且实现了很多增强功能。 @@ -105,13 +198,13 @@ O:在当前行前面插入一空行; :set nonumber:在命令模式下,用于在最左端不显示行号; ``` -### 语法 +#### 语法 ``` vi(选项)(参数) ``` -### 选项 +#### 选项 ``` +<行号>:从指定行号的行开始先是文本内容; @@ -127,11 +220,11 @@ vi(选项)(参数) -s:安静模式,不现实指令的任何错误信息。 ``` -### 参数 +#### 参数 文件列表:指定要编辑的文件列表。多个文件之间使用空格分隔开。 -### 知识扩展 +#### 知识扩展 vi 编辑器有三种工作方式:命令方式、输入方式和 ex 转义方式。通过相应的命令或操作,在这三种工作方式之间可以进行转换。 @@ -157,6 +250,18 @@ vi 和 ex 编辑器的功能是相同的,二者的主要区别是用户界面 ![vi.jpg](http://man.linuxde.net/wp-content/uploads/2013/11/vi.jpg) +### grep + +> grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 +> +> 参考:http://man.linuxde.net/grep + +示例: + ``` ``` + +## 参考资料 + +- [Linux 命令大全](http://man.linuxde.net/) diff --git a/docs/linux/Linux文件内容查看命令.md b/docs/linux/Linux文件内容查看命令.md deleted file mode 100644 index 075c2be..0000000 --- a/docs/linux/Linux文件内容查看命令.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Linux 文件内容查看命令 -date: 2018/02/27 -categories: - - linux -tags: - - linux - - command ---- - -# Linux 文件内容查看命令 - -> 关键词:`cat`, `head`, `tail`, `more`, `less` - - - -- [连接文件并打印到标准输出设备 - cat](#连接文件并打印到标准输出设备---cat) -- [显示指定文件的开头若干行 - head](#显示指定文件的开头若干行---head) -- [显示指定文件的末尾若干行 - tail](#显示指定文件的末尾若干行---tail) -- [显示文件内容,每次显示一屏 - more](#显示文件内容每次显示一屏---more) -- [显示文件内容,每次显示一屏 - less](#显示文件内容每次显示一屏---less) - - - -## 连接文件并打印到标准输出设备 - cat - -> cat 命令用于连接文件并打印到标准输出设备上。 -> -> 参考:http://man.linuxde.net/cat - -示例: - -```sh -cat m1 # 在屏幕上显示文件 ml 的内容 -cat m1 m2 # 同时显示文件 ml 和 m2 的内容 -cat m1 m2 > file # 将文件 ml 和 m2 合并后放入文件 file 中 -``` - -## 显示指定文件的开头若干行 - head - -> head 命令用于显示文件的开头内容。在默认情况下,head 命令显示文件的头部 10 行内容。 -> -> 参考:http://man.linuxde.net/head - -## 显示指定文件的末尾若干行 - tail - -> tail 命令用于显示文件的尾部内容。在默认情况下,tail 命令显示文件的尾部 10 行内容。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。 -> -> 参考:http://man.linuxde.net/tail - -示例: - -```sh -tail file # 显示文件file的最后10行 -tail -n +20 file # 显示文件file的内容,从第20行至文件末尾 -tail -c 10 file # 显示文件file的最后10个字符 -``` - -## 显示文件内容,每次显示一屏 - more - -> more 命令是一个基于 vi 编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持 vi 中的关键字定位操作。more 名单中内置了若干快捷键,常用的有 H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。 -> -> 该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比:--More--(XX%)可以用下列不同的方法对提示做出回答: -> -> - 按 Space 键:显示文本的下一屏内容。 -> - 按 Enier 键:只显示文本的下一行内容。 -> - 按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。 -> - 按 H 键:显示帮助屏,该屏上有相关的帮助信息。 -> - 按 B 键:显示上一屏内容。 -> - 按 Q 键:退出 rnore 命令。 -> -> 参考:http://man.linuxde.net/more - -示例: - -```sh -# 显示文件 file 的内容,但在显示之前先清屏,并且在屏幕的最下方显示完核的百分比。 -more -dc file - -# 显示文件 file 的内容,每 10 行显示一次,而且在显示之前先清屏。 -more -c -10 file -``` - -## 显示文件内容,每次显示一屏 - less - -less 命令的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 命令允许用户向前或向后浏览文件,而 more 命令只能向前浏览。用 less 命令显示文件时,用 PageUp 键向上翻页,用 PageDown 键向下翻页。要退出 less 程序,应按 Q 键。 - -示例: - -```sh -less /var/log/shadowsocks.log -``` diff --git a/docs/linux/Linux系统管理命令.md b/docs/linux/Linux系统管理命令.md index 17bb407..9b4b4ed 100644 --- a/docs/linux/Linux系统管理命令.md +++ b/docs/linux/Linux系统管理命令.md @@ -156,6 +156,7 @@ echo $difference seconds. > mount 命令用于挂载文件系统到指定的挂载点。此命令的最常用于挂载 cdrom,使我们可以访问 cdrom 中的数据,因为你将光盘插入 cdrom 中,Linux 并不会自动挂载,必须使用 Linux mount 命令来手动完成挂载。 > > 参考:http://man.linuxde.net/mount +> https://blog.csdn.net/weishujie000/article/details/76531924 示例: diff --git a/docs/linux/README.md b/docs/linux/README.md index fad40dc..cb46149 100644 --- a/docs/linux/README.md +++ b/docs/linux/README.md @@ -4,8 +4,7 @@ - [查看 Linux 命令帮助信息](01.查看Linux命令帮助信息.md) - 关键词:`help`, `whatis`, `info`, `which`, `whereis`, `man` - [Linux 文件目录管理](02.Linux文件目录管理.md) - 关键词:`cd`, `ls`, `pwd`, `mkdir`, `rmdir`, `tree`, `touch`, `ln`, `rename`, `stat`, `file`, `chmod`, `chown`, `locate`, `find`, `cp`, `mv`, `rm` -- [Linux 文件内容查看命令](Linux文件内容查看命令.md) - 关键词:`cat`, `head`, `tail`, `more`, `less` -- [Linux 文件编辑命令](Linux文件编辑命令.md) - 关键词:`sed`, `vi` +- [Linux 文件内容查看命令](03.Linux文件内容查看编辑.md) - 关键词:`cat`, `head`, `tail`, `more`, `less` - [Linux 文件压缩与解压命令](Linux文件压缩与解压命令.md) - 关键词:`tar`, `gzip`, `zip`, `unzip` - [Linux 用户管理命令](Linux用户管理命令.md) - 关键词:`groupadd`, `groupdel`, `groupmod`, `useradd`, `userdel`, `usermod`, `passwd`, `su`, `sudo` - [Linux 系统管理命令](Linux系统管理命令.md) - 关键词:`reboot`, `exit`, `shutdown`, `date`, `mount`, `umount` diff --git a/docs/windows/Windows工具.md b/docs/windows/Windows工具.md new file mode 100644 index 0000000..5d8d0e0 --- /dev/null +++ b/docs/windows/Windows工具.md @@ -0,0 +1,50 @@ +# Windows 工具 + +> 所谓,工欲善其事,必先利其器。使用好工具常常能给办公效率带来飞跃式的提升。这里整理总结了,我在工作学习中接触过的好工具。 +> +> 关键词:tool, 工具, 效率 + + + +- [1. 文件管理工具](#1-文件管理工具) + - [1.1. Clover](#11-clover) + - [1.2. Everything](#12-everything) + - [1.3. Wox](#13-wox) + - [1.4. Q-dir](#14-q-dir) + - [1.5. Fences](#15-fences) + + + +## 1. 文件管理工具 + +### 1.1. Clover + +> [Clover](http://cn.ejie.me/) 是 Windows Explorer 资源管理器的一个扩展,为其增加类似谷歌 Chrome 浏览器的多标签页功能。 + +
+ +
+ +### 1.2. Everything + +> [Everything](http://www.voidtools.com/) 可以立即在 windows 系统中找到制定名称的文件和文件夹。 + +![](http://oyz7npk35.bkt.clouddn.com/images/20180920180930174548.png) + +### 1.3. Wox + +> [Wox](https://github.com/Wox-launcher/Wox) 是一款简单易用的 Windows 启动器。可以把它视为 windows 版的 Alfred。 + +![](https://camo.githubusercontent.com/9db33546d3a905a9ad915e0948d3ba3f47f57b64/687474703a2f2f692e696d6775722e636f6d2f4474784e424a692e676966) + +### 1.4. Q-dir + +> [Q-dir](http://www.softpedia.com/get/File-managers/Q-Dir.shtml) 是轻量的文件管理器,特点鲜明,各种布局视图切换灵活,默认四个小窗口组成一个大窗口,操作快捷。 + +![](http://oyz7npk35.bkt.clouddn.com/images/20180920180930174437.png) + +### 1.5. Fences + +> [Fences](https://www.stardock.com/products/fences/) 也被称为栅栏桌面,是著名的 Stardock 公司推出的一款软件,用来分类和组织桌面上的图标一款软件。 + +![](https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1538311775699&di=70a9d04f067844d1881031761b6ca67c&imgtype=0&src=http%3A%2F%2Fgss0.baidu.com%2F-vo3dSag_xI4khGko9WTAnF6hhy%2Fzhidao%2Fpic%2Fitem%2F962bd40735fae6cd16fbebdb0eb30f2442a70f38.jpg)