📝 Writing docs.

This commit is contained in:
Zhang Peng 2018-09-30 18:05:21 +08:00
parent ef59980501
commit df3f204076
11 changed files with 518 additions and 357 deletions

View File

@ -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) |

View File

@ -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
```

View File

@ -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

View File

@ -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 有两种可安装版本:
<!-- TOC depthFrom:2 depthTo:2 -->
* [Community Edition (CE)](https://www.docker.com/community-edition/),即 Docker 社区版,适合学习。
* [Enterprise Edition (EE)](https://www.docker.com/enterprise-edition),即 Docker 企业版,适合企业级开发使用。
- [Windows 下安装 Docker](#windows-下安装-docker)
- [安装参考](#安装参考)
<!-- /TOC -->
## 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/
- 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/

View File

@ -1,243 +1,124 @@
<!-- TOC -->
# 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)
<!-- TOC depthFrom:2 depthTo:2 -->
- [镜像(Images)](#镜像images)
- [容器(Container)](#容器container)
- [网络(Networks)](#网络networks)
- [仓管中心和仓库(Registry & Repository)](#仓管中心和仓库registry--repository)
- [Dockerfile](#dockerfile)
- [卷标(Volumes)](#卷标volumes)
<!-- /TOC -->
# 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 = "<i>cannot connect to Redis, counter disabled</i>"
html = "<h3>Hello {name}!</h3>" \
"<b>Hostname:</b> {hostname}<br/>" \
"<b>Visits:</b> {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 <hash> # 优雅的停止所有指定的容器
docker container kill <hash> # 强制停止所有指定的容器
docker container rm <hash> # 从本机中溢出指定的容器
docker container rm $(docker container ls -a -q) # 移除所有容器
docker image --help # 列出 docker image 相关命令
docker image ls -a # 列出本机中所有的镜像
docker image rm <image id> # 从本机中溢出指定的镜像
docker image rm $(docker image ls -a -q) # 移除本机中所有镜像
docker login # 使用您的 Docker ID 登录以从 Docker Hub push 和 pull 图像。
docker tag <image> username/repository:tag # 标记 <image> 以上传到注册中心
docker push username/repository:tag # 上传标记过的镜像到注册中心
docker run username/repository:tag # 运行一个注册中心上的镜像
```
## 资料
* https://docs.docker.com/get-started/
- `docker volume ls`
- `docker volume inspect`

View File

@ -1,3 +0,0 @@
# Jenkins
> Jenkins 全部整理归纳在 [**jenkins**](https://github.com/dunwu/jenkins) 项目中。

View File

@ -1,5 +1,5 @@
---
title: Linux 文件编辑命令
title: Linux 文件内容查看编辑
date: 2018/02/27
categories:
- linux
@ -8,16 +8,109 @@ tags:
- command
---
<!-- TOC depthFrom:2 depthTo:2 -->
# Linux 文件内容查看编辑
- [流编辑器 - sed](#流编辑器---sed)
- [文本编辑器 - vi](#文本编辑器---vi)
> 关键词:`cat`, `head`, `tail`, `more`, `less`
<!-- TOC depthFrom:2 depthTo:3 -->
- [Linux 文件内容查看编辑要点](#linux-文件内容查看编辑要点)
- [命令常见用法](#命令常见用法)
- [cat](#cat)
- [head](#head)
- [tail](#tail)
- [more](#more)
- [less](#less)
- [sed](#sed)
- [vi](#vi)
- [grep](#grep)
- [参考资料](#参考资料)
<!-- /TOC -->
# 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
> grepglobal search regular expression(RE) and print out the line全面搜索正则表达式并把行打印出来是一种强大的文本搜索工具它能使用正则表达式搜索文本并把匹配的行打印出来。
>
> 参考http://man.linuxde.net/grep
示例:
```
```
## 参考资料
- [Linux 命令大全](http://man.linuxde.net/)

View File

@ -1,92 +0,0 @@
---
title: Linux 文件内容查看命令
date: 2018/02/27
categories:
- linux
tags:
- linux
- command
---
# Linux 文件内容查看命令
> 关键词:`cat`, `head`, `tail`, `more`, `less`
<!-- TOC depthFrom:2 depthTo:2 -->
- [连接文件并打印到标准输出设备 - cat](#连接文件并打印到标准输出设备---cat)
- [显示指定文件的开头若干行 - head](#显示指定文件的开头若干行---head)
- [显示指定文件的末尾若干行 - tail](#显示指定文件的末尾若干行---tail)
- [显示文件内容,每次显示一屏 - more](#显示文件内容每次显示一屏---more)
- [显示文件内容,每次显示一屏 - less](#显示文件内容每次显示一屏---less)
<!-- /TOC -->
## 连接文件并打印到标准输出设备 - 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
```

View File

@ -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
示例:

View File

@ -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`

View File

@ -0,0 +1,50 @@
# Windows 工具
> 所谓,工欲善其事,必先利其器。使用好工具常常能给办公效率带来飞跃式的提升。这里整理总结了,我在工作学习中接触过的好工具。
>
> 关键词tool, 工具, 效率
<!-- TOC depthFrom:2 depthTo:3 -->
- [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)
<!-- /TOC -->
## 1. 文件管理工具
### 1.1. Clover
> [Clover](http://cn.ejie.me/) 是 Windows Explorer 资源管理器的一个扩展,为其增加类似谷歌 Chrome 浏览器的多标签页功能。
<div align="center">
<img src="http://cn.ejie.me/images/clover.jpg" width="640" />
</div>
### 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)