Hexo_本地图片如何上传到Github

第一步

  • 首先进行配置文件的修改, _config.yml(不是主题配置文件)
    1
    post_asset_folder: true
    修改配置项

    第二步

    1
    npm install hexo-asset-image --save
    install

    第三步

  • 通过命令,创建一篇新的文章时候,自动在source/_post/新建对应文件名称的文件夹(为了避免有时候文章中并没有图片,可以手动创建md文件,需要图片在创建文件夹即可)
    1
    hexo new test.md
  • 进入source/_post/下即可看到对应创建的文件和文件夹

    第四步

    1
    2
    3
    hexo clean  #清除
    hexo ge #生成静态资源 , 此时可以通过输出信息看到对应的图片名称信息,基本就完成了
    hexo s #本地查看是否生效

    注意

  • 在md文件中,图片的路径可以写一下两种方式都可以load到图片的路径
    1
    2
    ![test1](./1.png)
    ![test1](./test/2.png)

Git基本用法

Git 入门

 默认linux自带Git , 可以进行更新。

1
yum install git -y #安装git 
1
git config 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[root@zzuxyj7 ~]# git config 
用法:git config [选项]

配置文件位置
--global 使用全局配置文件
--system 使用系统级配置文件
--local 使用版本库级配置文件
-f, --file <文件> 使用指定的配置文件
--blob <blob-id> read config from given blob object

操作
--get 获取值:name [value-regex]
--get-all 获得所有的值:key [value-regex]
--get-regexp 根据正则表达式获得值:name-regex [value-regex]
--replace-all 替换所有匹配的变量:name value [value_regex]
--add 添加一个新的变量:name value
--unset 删除一个变量:name [value-regex]
--unset-all 删除所有匹配项:name [value-regex]
--rename-section 重命名小节:old-name new-name
--remove-section 删除一个小节:name
-l, --list 列出所有
-e, --edit 打开一个编辑器
--get-color <slot> 找到配置的颜色:[默认]
--get-colorbool <slot>
找到颜色设置:[stdout-is-tty]
类型
--bool 值是 "true""false"
--int 值是十进制数
--bool-or-int 值是 --bool or --int
--path 值是一个路径(文件或目录名)

其它
-z, --null 终止值是NUL字节
--includes 查询时参照 include 指令递归查找

第一步 首先配置Git的本地用户信息,用于提交到本地仓库认证,否则不予提交

  • 配置是哪个用户使用git
1
2
3
4
5
[root@zzuxyj7 ~]# git config --global user.email "aayxyj@163.com"

[root@zzuxyj7 ~]# git config --global user.name "zzuxyj"

[root@zzuxyj7 ~]# git config --global color.ui true //高亮
1
2
3
4
5
6
7
8
9
10
[root@zzuxyj7 ~]# git config --list
user.name=zzuxyj
user.email=aayxyj@163.com
color.ui=true
[root@zzuxyj7 ~]# cat .gitconfig
[user]
name = zzuxyj
email = aayxyj@163.com
[color]
ui = true

第二步 创建文件夹并进行初始化,该目录即为本地仓库

  • 创建本地仓库
    1
    2
    3
    mkdir gitdata #创建目录
    cd gitdata #进入目录
    git init #初始化仓库 初始化空的 Git 版本库于 /root/gitdata/.git/
  • 本地仓库信息
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    隐藏文件介绍︰
    branches # 分支目录
    config# 定义项目特有的配置选项
    description# 仅供git web程序使用
    HEAD #指示当前的分支
    hooks # 包含git钩子文件
    info #包含一个全局排除文件(exclude文件)
    objects # 存放所有数据内容,有info和pack两个子文件夹
    refrs # 存放指向数据(分支)的提交对象的指针
    index #保存暂存区信息,在执行git init的时候,这个文件还没有
  • 查看初始的git版本库的结构
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    [root@zzuxyj7 gitdata]# tree .git/
    .git/
    ├── branches
    ├── config
    ├── description
    ├── HEAD
    ├── hooks
    │   ├── applypatch-msg.sample
    │   ├── commit-msg.sample
    │   ├── post-update.sample
    │   ├── pre-applypatch.sample
    │   ├── pre-commit.sample
    │   ├── prepare-commit-msg.sample
    │   ├── pre-push.sample
    │   ├── pre-rebase.sample
    │   └── update.sample
    ├── info
    │   └── exclude
    ├── objects
    │   ├── info
    │   └── pack
    └── refs
    ├── heads
    └── tags

    第三步 开始进行代码或文件的CURD操作

  • 提交为空,但是存在尚未跟踪的文件(使用 “git add” 建立跟踪)
    1
    2
    [root@zzuxyj7 gitdata]# git add 1.go  #跟踪
    [root@zzuxyj7 gitdata]# git status #查看git仓库的状态,可以看到跟踪的文件
  • 提交跟踪文件后,需要删除时候
    1
    2
    3
    [root@zzuxyj7 gitdata]# git rm 1.go   #删除跟踪
    rm '1.go'
    [root@zzuxyj7 gitdata]# git status #查看git仓库的状态,文件已经被删除
  • 建立文件跟踪后,如果需要提交到本地仓库还是需要进行commit提交才可以到本地仓库
    1
    2
    3
    4
    [root@zzuxyj7 gitdata]# git commit -m "Test"
    [master(根提交) b58f049] Test
    1 file changed, 0 insertions(+), 0 deletions(-)
    create mode 100644 1.go

    注 :常用的git命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    1.git init#初始化仓库把一个目录初始化为版本仓库〈可以是空的目录也可以是带内容的目录)
    2.git status#查看当前仓库的状态
    3.git add file#添加文件到暂存区
    4.git add .或者git add * #添加当前所有的文件到暂存区
    5.git rm --cached#撤出暂存区
    6.git rm -f#同时删除工作目录和暂存区的文件
    7.git commit -m#从缓存区提交到本地仓库
    8.git mv old-filename new-filename#直接更改文件名称更改完直接commit提交即可
    9.git diff#默认比对工作目录和暂存区有什么不同
    10.git diff --cached #比对暂存区域和本地仓库
    11.#如果某个文件已经被仓库管理,如果在更改此文件直接需要一条命令提交即可
    git commit -am "add newfile"
    12.git log#查看历史提交过的信息
    -p #查看具体的改动
    -1#查看最近一次
    13.git reset --hard 295e997 #回滚数据到某一个提交
    14.git log --oneline --decorate#查看当前指针的指向
    15.git log --reflog #查看所有镜像
    15.git branch#查看分支 * 号在那就在那个分支上
    16.git branch testing#创建一个测试分支
    17.git checkout testing#切换到测试分支
    18.git checkout -b testing#创建并切换到testing分支
    19.git tag#打标签
    -d删除标签
    git tag -d v1.0 #删除标签
    git tag -a "v2.0" -m "xxx" #打标签
    git show v1.0 #查看版本信息

    20.git remote add origin git@github.com:ayxyj/ayxyj.github.io.git //添加远程仓库

    git remote #查看远程仓库

    21.git clone url

    标签也是指向了一次commit提交,是一个里程碑式的标签,回滚打标签直接加标签号,不需要加唯一字符串不好记
    [root@git git_data]# git tag -a v1.0 -m "aaa bbb master tesing version v1.0”# -a指定标签名字 -m指定说明文字
    [root@git git_data]# git tagv1.0
    [root@git git_data]# git tag -a v2.0 dbead4c -m "add bbb version v2.0" #指定某一次的提交
    为标签
    [root@git git_data]# git show v1.0 #查看v1.0的信息git show加标签查看
    [root@git git_data]# git reset --hard v2.0#直接还原数据到v2.0

最后如何把本地仓库推送到远程仓库步骤:

  • 第一种方式每次手动写远程仓库地址

  • 1.首先先把本地代码提交到本地仓库

    1
    2
    3
    git add . 
    git commit -m "add file !"
    git commit -am "add file !"
  • 2.其次再把本地仓库的代码提交到远程仓库上

    1
    2
    3
    git remote add gocode git@github.com:ayxyj/ayxyj.github.io.git  #添加远程仓库
    git push -u gocode master #第一次提交到远程仓库的master分支上
    git push gocode master #之后提交
  • 3.删除本地分支和远程分支

    1
    2
    git branch -d master #删除本地分支、注意删除时候应该切换到其他分支才可以删除分支
    git push gocode --delete master #删除远程仓库下的mater分支
  • 4.合并本地分支和远程分支

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    基本流程
    0.查看远程仓库
    git remote -v

    1.本地创建一个与新分支并且关联远程分支
    git checkout -b dev gocode/dev
    这时 dev 已经和远程的 gocode/dev 一致了。

    同上1.查看到远程有一个叫gocode的仓库,我们可以使用如下命令从gocode远程仓库获取最新版本的代码。
    git fetch origin master:temp
    上面代码的意思是:从远程的gocode仓库的master分支下载到本地,并新建一个temp分支。

    2.查看temp分支与本地原有分支的不同
    git diff temp

    3. 切换回本地的 master 版本
    git checkout master

    4. 将本地的 dev 合并到 master
    git merge dev

    5. 将本地的 master 推到远程
    git push gocode master

    6. 将远程的 dev 版本删除
  • 第二种方式在配置文件中配置远程仓库的地址(需要做ssh认证)

    • 生成ssh公私钥
      1
      2
      ssh-keygen -t rsa -C "aayxyj@163.com"
      cat ~/.ssh/id_rsa.pub #将查看到的公钥在github的个人设置中新建ssh密码填入即可
    • 在配置文件中添加信息
      1
      2
      3
      4
      deploy:
      type: git
      repo: 这里填刚记录的github clone仓库地址
      branch: master #上传到那个分支上
    • 接下来就可以直接push即可

Sublime 乱码问题及插件安装

sublime 解决中文乱码问题

1.通过快捷键 ctrl + ~ 进入命令行,并输入以下命令然后回车

1
import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

2.安装ConvertToUTF8。

  • 通过快捷键 Ctrl + shift + P,然后在弹出的输入框输入 install,选择Package Control:install Package回车

  • 在出现的插件命令行搜索ConvertToUTF8,选中回车进行插件安装

  • 重启Sublime Text 3后再次打开之前中文乱码的文件发现,中文能够正常显示

sublime 主题和字体

  • 通过快捷键 Ctrl + shift + P ,然后在弹出的输入框输入 install,选择Package Control:install Package回车

  • 在出现的插件命令行搜索Themes:ayu/edge Font:Consoles

FISCO BCOS - 01 - 入门

安装

本章介绍FISCO BCOS所需的必要安装和配置。本章通过在单机上部署一条4节点的FISCO BCOS联盟链,帮助用户掌握FISCO BCOS部署流程。请根据这里使用支持的硬件和平台操作。

安装FISCOBCOS:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/installation.html

国密:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/account.html

单群组**FISCO BCOS**联盟链的搭建

准备环境

安装centos依赖

1
2
sudo yum install -y openssl openssl-devel

1

1
2
cd ~ && mkdir -p fisco && cd fisco

​ 下载build_chain.sh脚本

1
2
3

curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.6.0/build_chain.sh && chmod u+x build_chain.sh

2

搭建单群组**4**节点联盟链

在fisco目录下执行下面的指令,生成一条单群组4节点的FISCO链。 请确保机器的3030030303,2020020203,8545~8548端口没有被占用。

1
2
3
4
5
6
7
8
9
10
**注解**

> 国密版本请执行 bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -g -G

> 其中-g表示生成国密配置,-G表示使用国密SSL连接

> web3sdk已经支持国密SSL,如果使用web3sdk建议带上-G选项使用国密SSL

bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545

3

注解

其中-p选项指定起始端口,分别是p2p_port,channel_port,jsonrpc_port

出于安全性和易用性考虑,v2.3.0版本最新配置将listen_ip拆分成jsonrpc_listen_ip和channel_listen_ip,但仍保留对listen_ip的解析功能,详细请参考 这里

为便于开发和体验,channel_listen_ip参考配置是 0.0.0.0 ,出于安全考虑,请根据实际业务网络情况,修改为安全的监听地址,如:内网IP或特定的外网IP

命令执行成功会输出All completed。如果执行出错,请检查nodes/build.log文件中的错误信息。

启动**FISCO BCOS**

启动所有节点

1
2
bash nodes/127.0.0.1/start_all.sh

3.1

启动成功会输出类似下面内容的响应。否则请使用netstat -an | grep tcp检查机器的3030030303,2020020203,8545~8548端口是否被占用。

检查进程

检查进程是否启动

正常情况会有类似下面的输出; 如果进程数不为4,则进程没有启动(一般是端口被占用导致的)

1
ps -ef | grep -v grep | grep fisco-bcos

4

检查日志输出

如下,查看节点node0链接的节点数

1
tail -f nodes/127.0.0.1/node0/log/log*  | grep connected

正常情况会不停地输出链接信息,从输出可以看出node0与另外3个节点有链接。

5

执行下面指令,检查是否在共识

1
tail -f nodes/127.0.0.1/node0/log/log*  | grep +++

正常情况会不停输出++++Generating seal,表示共识正常。

6

配置及使用控制台

重要

控制台1.x 系列基于 Web3SDK 实现,控制台2.6之后 基于 Java SDK 实现,最新版本控制台基于 Java SDK 实现

2.6及其以上版本控制台使用文档请 参考这里 ,1.x版本控制台使用文档请 参考这里

可通过命令 ./start.sh –version 查看当前控制台版本

基于 Web3SDK 开发应用时将 solidity 代码转换为 java 代码时,必须使用 1.x 版本控制台,具体请参考 这里

在控制台链接FISCO BCOS节点,实现查询区块链状态、部署调用合约等功能,能够快速获取到所需要的信息。2.6版本控制台指令详细介绍参考这里,1.x版本控制台指令详细介绍参考这里

准备依赖

安装java

#centos系统安装java

1
sudo yum install -y java java-devel

获取控制台并回到fisco目录

1
cd ~/fisco && curl -#LO https://github.com/FISCO-BCOS/console/releases/download/v2.6.1/download_console.sh && bash download_console.sh

7

注解

如果因为网络问题导致长时间无法下载,请尝试 cd ~/fisco && curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master/tools/download_console.sh

拷贝控制台配置文件

若节点未采用默认端口,请将文件中的20200替换成节点对应的channel端口。

# 最新版本控制台使用如下命令拷贝配置文件

1
cp -n console/conf/config-example.toml console/conf/config.toml

配置控制台证书

注解

使用**1.x**版本控制台时:

1
2
3
4

搭建国密版时,如果使用国密SSL请执行 cp nodes/127.0.0.1/sdk/gm/* console/conf/

搭建国密版时,请修改 applicationContext.xml 中 encryptType 修改为1
1
cp -r nodes/127.0.0.1/sdk/* console/conf/

启动控制台

启动

1
cd ~/fisco/console && bash start.sh

输出下述信息表明启动成功 否则请检查conf/config.toml中节点端口配置是否正确

8

使用控制台获取信息

# 获取客户端版本

1
[group:1]> getNodeVersion

# 获取节点链接信息

1
[group:1]> getPeers

9

部署及调用**HelloWorld**合约

HelloWorld合约提供两个接口,分别是get()和set(),用于获取/设置合约变量name。合约内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

pragma solidity ^0.4.24;

contract HelloWorld {

string name;

function HelloWorld() {
name = "Hello, World!";
}

function get()constant returns(string) {
return name;
}

function set(string n) {
name = n;
}
}

部署**HelloWorld**合约

为了方便用户快速体验,HelloWorld合约已经内置于控制台中,位于控制台目录下contracts/solidity/HelloWorld.sol,参考下面命令部署即可。

# 在控制台输入以下指令 部署成功则返回合约地址

1
[group:1]> deploy HelloWorld

10

调用**HelloWorld**合约

# 查看当前块高

1
[group:1]> getBlockNumber

# 调用get接口获取name变量 此处的合约地址是deploy指令返回的地址

1
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get

11

# 查看当前块高,块高不变,因为get接口不更改账本状态

1
[group:1]> getBlockNumber

# 调用set设置**name

1
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 set "Hello, FISCO BCOS"

# 再次查看当前块高,块高增加表示已出块,账本状态已更改

1
[group:1]> getBlockNumber

# 调用get接口获取name变量,检查设置是否生效

1
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get

12

# 退出控制台

1
[group:1]> quit

Docker - 01 - 入门啊

1. Docker介绍

1.1 什么是容器?

1.2 容器的前世

FreeBASE jail ——> Linux vserver
chroot —–> 完整的根文件系统(FHS)标准的
namespaces —> UTS Mount IPC PID user network
cgroup —> 资源的分配和监控

通过比较复杂的代码开发的过程,调用以上三项技术
实现容器的创建 —-> 管理 —->销毁

1.3 传统虚拟化技术和容器对比

1.4 容器的今生?

实现隔离能力!
LXC (LinuXContainer)
对于原有的常用功能进行了封装,方便我们做容器的生命周期
—–> Docker (dotcloud)

1.5 Docker 帮助文档

https://docs.docker.com/engine/reference/commandline/cli/?spm=5176.8351553.0.0.248a1991nVGS9m

2. Docker的安装

2.0、yum源准备

1
2
3
curl  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

2.1 安装依赖包

1
2
yum install -y yum-utils device-mapper-persistent-data lvm2
yum list docker-ce.x86_64 --showduplicates | sort -r

yum install -y docker-ce

2.2 安装docker-ce

1
2
3
yum install -y --setopt=obsoletes=0 \
docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch

2.3 启动Docker服务

1
2
3
4
systemctl daemon-reload
systemctl restart docker
docker version
docker info

2.4 配置镜像加速

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
阿里云Docker-hub
https://cr.console.aliyun.com/cn-hangzhou/mirrors

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

systemctl daemon-reload
systemctl restart docker

或者:
vim /etc/docker/daemon.json

{
"registry-mirrors": ["https://68rmyzg7.mirror.aliyuncs.com"]
}

#3. Doocker体系结构

image.png

4. Docker的镜像基础管理

4.1 获取镜像

1
2
3
4
5
6
基础镜像拉取
docker search centos
docker pull centos:6.9
docker pull centos:7.5.1804
docker pull docker.io/golang
docker pull nginx

4.2 镜像基本查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@docker ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 6.8 82f3b5f3c58f 4 months ago 195 MB
centos 6.9 2199b8eb8390 4 months ago 195 MB
centos 7.5.1804 cf49811e3cdb 4 months ago 200 MB
centos 7.6.1810 f1cb7c7d58b7 4 months ago 202 MB
oldguo/centos_sshd v1.0
oldguo/centos_sshd v2.0
oldguo/centos_sshd v3.0
标识镜像唯一性的方法:
1. REPOSITORY:TAG
centos:7.5.1804
2. IMAGE ID (sha256:64位的号码,默认只截取12位)
82f3b5f3c58
[root@docker /]# docker image ls --no-trunc

4.3 镜像详细信息查看

1
2
[root@docker /]# docker image inspect ubuntu:latest
[root@docker /]# docker image inspect 82f3b5f3c58f

4.4 只查看镜像ID

1
[root@docker ~]# docker image ls -q

4.5 镜像的导入和导出

1
2
3
4
[root@docker ~]# docker image save 3556258649b2 >/tmp/ubu.tar
[root@docker ~]# docker image rm 3556258649b2
[root@docker ~]# docker image load -i /tmp/ubu.tar
[root@docker ~]# docker image tag 3556258649b2 oldguo/ubu:v1

4.6 镜像的删除

1
2
[root@docker ~]# docker image rm -f 3556258649b2
[root@docker ~]# docker image rm -f `docker image ls -q`

5. 容器的管理

5.1 运行第一个容器

5.1.1 交互式的容器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@docker ~]# docker container run -it  9f38484d220f
[root@docker /]# docker container ls
[root@docker /]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4d1ef5a6ecfc 9f38484d220f "/bin/bash" 5 minutes ago Up 5 minutes nervous_alle

CONTAINER ID : 容器的唯一号码(自动生成的)
NAMES : 容器的名字(可以自动,也可以手工指定)
例子: 手工指定容器名启动
[root@docker /]# docker container run -it --name="oldguo_cent76" 9f38484d220f
[root@docker /]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ef45b19d8c7b 9f38484d220f "/bin/bash" About a minute ago Exited (0) 5 seconds ago oldguo_cent76
4d1ef5a6ecfc 9f38484d220f "/bin/bash" 9 minutes ago Up 9 minutes nervous_allen

STATUS : 容器的运行状态 ( Exited , Up)

5.1.2 守护式容器

1
2
3
4
[root@docker /]# docker run -d --name="oldguo_nginx" nginx:1.14
查询容器的详细信息:
[root@docker /]# docker container inspect oldguo_nginx
[root@zzuxyj7 ~]#curl -I 172.17.0.2

5.1.3 容器的应用场景

1
2
3
4
交互式的容器: 工具类: 开发,测试,临时性的任务()
[root@docker ~]# docker container run -it --name="oldguo_cent76" --rm 9f38484d220f
守护式容器: 网络服务
[root@docker /]# docker run -d -p 8080:80 --name="oldguo_nginx_80" nginx:1.14

5.1.4 容器的启动\关闭\连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
守护式容器的关闭和启动
[root@docker /]# docker container stop oldguo_nginx_80
[root@docker /]# docker container start oldguo_nginx_80

交互式的容器的关闭和启动
[root@docker /]# docker container stop nervous_allen
[root@docker /]# docker container start -i nervous_allen

容器的连接方法:
[root@docker /]# docker container attach nervous_allen

子进程的方式登录(在已有工作容器中生成子进程,做登录.可以用于进行容器的调试,退出时也不会影响到当前容器)
[root@docker ~]# docker container exec -it nervous_allen /bin/bash

容器的后台及前台运行:
1. ctrl + P, Q
attach 调用到前台
2. 死循环
3. 让程序前台一直允许(夯在前台)
制作守护式容器时,常用的方法

5.2 docker容器的网络访问

1
2
3
4
5
6
7
8
9
10
11
12
13
指定映射(docker 会自动添加一条iptables规则来实现端口映射)
-p hostPort:containerPort
-p ip:hostPort:containerPort
-p ip::containerPort(随机端口:32768-60999)
-p hostPort:containerPort/udp
-p 81:80 –p 443:443
随机映射
docker run -P 80(随机端口)
[root@docker ~]# docker container run -d -p 8080:80 --name='n2' nginx:1.14 *****
[root@docker ~]# docker container run -d -p 10.0.0.100:8081:80 --name='n3' nginx:1.14 *****
[root@docker ~]# docker container run -d -p 80 --name='n5' nginx:1.14
[root@docker ~]# docker container run -d -p 172.16.1.200::80 --name='n6' nginx:1.14

5.3容器的其他管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker ps -a  -q 
等价于:
docker container ls -a -q
[root@docker ~]# docker top ba9143bcaf74
等价于:
[root@docker ~]# docker container top ba9143bcaf74
查看日志:
[root@oldboy docker]# docker logs testxx
[root@oldboy docker]# docker logs -tf testxx

[root@oldboy docker]# docker logs -t testxx
[root@oldboy docker]# docker logs -tf --tail 10 testxx
[root@oldboy docker]# docker logs -tf --tail 0 testxx

小结:

  1. 镜像类:
    docker image
             search 
             pull 
             ls        *****
             inspect   *****
             rm        ****
             save 
             load 
  2. 容器类
    docker container
             run         *****
             start       ****
             stop         ****
             restart     
             kill 
             attach 
             exec         *****
             ls          *****
             top         ****
             logs 
             inspect     ****

5.4 docker的数据卷实现持久化存储

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1. 手工交互数据:
[root@docker opt]# docker container cp index.html n1:/usr/share/nginx/html/
[root@docker opt]# docker container cp n1:/usr/share/nginx/html/50x.html ./

2. Volume实现宿主机和容器的数据共享
[root@docker opt]# mkdir -p /opt/html
[root@docker ~]# docker run -d --name="nginx_3" -p 83:80 -v /opt/html:/usr/share/nginx/html nginx

作用: 数据持久化
3. 例子: 开启两个nginx容器(90,91),共同挂载一个数据卷,实现静态资源共享

4. 数据卷容器:
(1)宿主机模拟数据目录
mkdir -p /opt/Volume/a
mkdir -p /opt/Volume/b
touch /opt/Volume/a/a.txt
touch /opt/Volume/b/b.txt

(2)启动数据卷容器
docker run -it --name "nginx_volumes" -v /opt/Volume/a:/opt/a -v /opt/Volume/b:/opt/b centos:6.9 /bin/bash
ctrl p q

(3)使用数据卷容器
docker run -d -p 8085:80 --volumes-from nginx_volumes --name "n8085" nginx
docker run -d -p 8086:80 --volumes-from nginx_volumes --name "n8086" nginx
作用: 在集中管理集群中,大批量的容器都需要挂载相同的多个数据卷时,可以采用数卷容器进行统一管理

制作本地局域网yum源

  1. 安装vsftpd软件
    [root@docker ~]# yum install -y vsftpd

  2. 启动ftp
    [root@docker ~]# systemctl enable vsftpd
    [root@docker ~]# systemctl start vsftpd

  3. [root@docker ~]# yum install lftpd

    [root@docker ~]# lftp 127.0.0.1//测试ftp安装是否成功

  4. 上传系统进行到虚拟机
    略.

  1. 配置yum仓库
    mkdir -p /var/ftp/centos6.9
    mkdir -p /var/ftp/centos7.5
    [root@docker mnt]# mount -o loop /mnt/CentOS-6.9-x86_64-bin-DVD1.iso /var/ftp/centos6.9/

windows验证
ftp://10.0.0.100/centos6.9/

cat >/yum.repos.d/ftp_6.repo <<EOF
[ftp]
name=ftpbase
baseurl=ftp://10.0.0.100/var/www/html/ftp
enabled=1
gpgcheck=0
EOF

cat >/yum.repos.d/ftp_7.repo <<EOF
[ftp]
name=ftpbase
baseurl=ftp://10.0.0.100/centos7.5
enabled=1
gpgcheck=0
EOF

搭建本地的yum仓库,并通过vsftpd 和 httpd 共享该目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

yum install httpd vsftpd lftp -y //安装三个服务

mount -o loop /centos6.5.iso /var/www/html/ftp/centos6.5 //注意路径,挂在对应的iso到对应目录下

systemctl start httpd vsftpd //启动服务

systemctl enable httpd vsftpd //开机自启动

systemctl disable firewalld //关闭防火墙开机自启动

systemctl stop firewalld //关闭防火墙

systemctl status firewalld //查看防火墙状态

  • 通过上面的服务搭建以及配置接下来可以进行yum仓库的配置,由于搭建镜像的本地服务中,镜像挂在点有repodata/及其配置文件,此时可以不用配置repomd.xml等,可以省略。若搭建其他需要通过下述命令进行配置
1
2
3
4
yum install  createrepo -y //安装createrepo ,用于构建repodata

createrepo /var/www/html/ftp //此时就会该目录下生成repodata/

根据yum仓库的配置文件创建一个本地的repo文件

要记得修改vsftpd的默认路径

1
2
3
local_root=/var/www/html
chroot_local_user=YES
anon_root=/var/www/html
1
2
3
4
5
6
7
cat >/yum.repos.d/ftp_6.repo <<EOF 
[ftp]
name=ftpbase
baseurl=ftp://192.168.100.4/var/www/html/ftp
enabled=1
gpgcheck=0
EOF

通过浏览器访问测试

ftp://192.168.100.4/

1

http://192.168.100.4/ftp/

2

MarkDown语法

一、字体

加粗 : ** 粗 **
斜体 : * 斜体 *
粗斜 : *** T ***
删除线: ~~ D ~~

二、标题

#   : 一级标题
##  : 二级标题
### : 三级标题
。。。 以此类推

三、引用

>    : 引用
>>   : 嵌套引用
>>>  : 再次嵌套引用
>>>>>>>> n次嵌套  :   n次嵌套

四、分割线

 * 或者 - 三个或者三个以上即可
 * 例如:
   * ---
   * ***

五、图片

语法:
    ![img alt](img address "img title")
    注:
        img alt : 图片下方的文字,如 图1所示
        img address : 图片的绝对路径
        ing title   :  图片的标题

  例:
      ![AYXYJ](https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=702257389,1274025419&fm=27&gp=0.jpg "TEST")

六、超链接

语法:
    [超链接名](超链接地址 "超链接title")

  例:
      [简书](http://jianshu.com)
      [AYXYJ](http://ayxyj.cn)

注:MarkDown本身语法不支持超链接在新页面打开,貌似简书做了处理,是可以的,别的平台可能不行。
如果想要在新页面中打开的话可以用html语言的a标签代替。

  例:
     <a href = "超链接地址" target=“_blank”>超链接title</a>
     <a href="https://www.jianshu.com/u/1f5ac0cf6a8b" target="_blank">简书</a>

七、列表

语法:
    -无序列表: - + * 都可以

    例:
        - AYXYJ :注意 - 和 ayxyj有一个空格

    1.有序列表: 数字加点

    例:
         1. AYXYJ :序号和内容之间要有空格

    - 列表无序嵌套
    -    上下级之间敲三个空格即可

    1. 列表有序嵌套
    2.    上下级之间敲三个空格即可

八、表格

语法:
    表头|表头|表头
    ---|:---:|---:
    内容|内容|内容

注:
    第二行分割表头和内容: - 有一个即可,为了对其,多加了几个
    - 文字默认局左
    - 两边加 : 表示文字居中
    - 右边加 : 表示文字居右
    -   原生的语法两边都要 | 包起来,此处省略

例:
    姓名|性别|TAG
    ---|:---:|---:
    xyj|male|20
    syl|female|20

九、代码

语法:
    - 单行代码: 代码之间用 ` 代码 ` :反引号

    - 代码块 : 代码之间分别用三个反引包起来,且两边反引号独占一行   

十、流程图

语法:
    flow
    st=>start: start
    op=>operation: my operation
    cond=>condition: Yes or No?
    e=>end
    st->op->cond
    cond(yes)->e
    cond(no)->op
    &
    ```

宝剑锋从磨砺出,梅花香自苦寒来~

快速搭建Hexo博客

Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。

  • 由于我的环境是Linux,所以Linux环境的按着来就好了,Win环境大同小异。Hexo手册

    一、安装基本环境

    1. 安装Git

  • Git 是目前比较流行的分布式版本控制系统,我们使用它与github进行交互下载对应版本的的git安装就好,下载地址 git_download,装后打开Git Bash
    1
    git --version   #可以查看版本号
    在这里插入图片描述

    2. 安装Node.js

    Node.js是一个Javascript运行环境,是一个让 JavaScript 运行在服务端的开发平台,我们用来快速生成博客的静态页面,LTS版本为长期支持版,CURRENT版本为最新版,任选一个正常安装即可下载地址Node.js_download

二、开始本地搭建博客

1. 新建本地文件夹

  • 在本地新建一个文件夹用来储存我们的博客,Git Bash进入文件夹下,执行命令:npm install hexo -g 用来安装hexo

    2. 搭建本地服务

  • 依次在本地文件夹根目录下执行以下命令初始化并生成服务。

    1
    hexo init    # 初始化

    在这里插入图片描述

    1
    npm isntall    # 安装npm依赖包 

    在这里插入图片描述

    1
    hexo generate   # 生成静态网页

    在这里插入图片描述

  • 全部执行成功后浏览器访问http://localhost:4000,如果出现默认的hexo博客,那么我们本地搭建博客就完成了

    1
    hexo server    # 生成本地服务

    在这里插入图片描述

三、本地博客发布到网络上

1.创建Github远程仓库

  • 这里我们就要用到github了。有账户的可以略过,没有账户的新建账户,并登录。新建一个仓库,仓库名格式设置为:xxxx.github.io,其他可以不动。
    在这里插入图片描述

  • 之后我们就可以到如下界面,记录ssh的地址
    在这里插入图片描述

  • 在更改本地目录下的_config.yml配置文件,最后加上.

    1
    2
    3
    4
    deploy:
    type: git
    repo: 这里填刚记录的ssh地址
    branch: master

    config

2. 将Hexo与 Github连接

  • 按照如下格式输入,在本地创建git用户名和邮箱进行并生成ssh密钥
    1
    2
    3
    git config --global user.name "yourname"
    git config --global user.email "youremail"
    ssh-keygen -t rsa -C "youremail"
    config_list
  • 接下来我们把生成的id_rsa.pub文件用文本编辑器打开,复制里面的内容绑定到GitHub上,标题随意。
  • 点击新建ssh keys,title随便填,key填写id_rsa.pub的内容即可,应该会要求输入密码
    测试是否成功
    在这里插入图片描述
1
ssh -T git@github.com   #注意这里的地址不用改

在这里插入图片描述

  • 提示Are you sure you want to continue connecting (yes/no)?时输入yes
  • 当看到Hi Budtit! You’ve successfully authenticated, but GitHub does not provide shell access.时说明配置成功在这里插入图片描述

3. 部署到github

1
hexo d
  • 如果报错说not found git 我们执行以下命令:npm install hexo-deployer-git --save安装插件,然后在执行上一步命令第一次部署应该会让登录,浏览yourname.github.io成功显示博客页在这里插入图片描述
  • 上面在配置branch时候我写的Master,可以自己新建分支,专门用于存放blog
    在这里插入图片描述

    四、写作并上传第一篇博客

    1. 写作

    1
    hexo new [layout] <title>  #创建新文章

创建后会在本地目录生成测试.md文件,用markdown语法编辑文件后保存,建议每次写作后本地部署完成进入http://localhost:4000 查看无误后再上传。
hexo server # 本地服务部署 可简写为hexo s

2. 上传

依次执行命令,hexo的具体用法请查看官方文档 戳这里

1
2
3
hexo clean    # 清除缓存
hexo generate # 生成静态页面 可简写为hexo g
hexo deploy # 部署博客 可简写为hexo d

在这里插入图片描述
在这里插入图片描述

五、解析私人域名

  • 这里就要买域名了,添加两条记录
  • 然后在本地博客目录下的source文件夹下新建名为CNAME的文件,其中写入域名
  • 最后在github库中的setting中的Custom domain下填写购买的域名,save保存。
    domain
    好了,域名配置完成。

请我喝杯咖啡吧~

支付宝
微信