docker碎片拾遗
进入shell环境
1 | docker ps |
and run
1 | apt-get update |
!不要去改系统配置
正常运行的docker先保存一下docker的ID,之后不要去改下面的配置,否则docker会更新为新的那个,导致数据丢失

docker指令
1、启动docker
1 | docker run -it --privileged=true -v /home/oracle/download:/usr/Downloads centos /bin/bash |
2、查看当前docker运行
1 | docker ps -a |
3、提交docker
1 | docker commit 9f73a02d5ef0[CONTAINER ID] docker.io/ubuntu[REPOSITORY] |
4、查看容器的root用户密码
1 | docker logs <容器名orID> 2>&1 | grep '^User: ' | tail -n1 |
因为docker容器启动时的root用户的密码是随机分配的。所以,通过这种方式就可以得到redmine容器的root用户的密码了。
5、查看容器日志
1 | docker logs -f <容器名orID> |
6、查看正在运行的容器
1 | docker ps |
7、删除所有容器
1 | docker rm $(docker ps -a -q) |
8、删除单个容器
1 | docker rm <容器名orID> |
9、停止、启动、杀死一个容器
1 | docker stop <容器名orID> |
10、查看所有镜像
1 | docker images |
11、删除所有镜像
1 | docker rmi $(docker images | grep none | awk '{print $3}' | sort -r) |
12、运行一个新容器,同时为它命名、端口映射、文件夹映射。以redmine镜像为例
1 | docker run --name redmine -p 9003:80 -p 9023:22 -d -v /var/redmine/files:/redmine/files -v /var/redmine/mysql:/var/lib/mysql sameersbn/redmine |
13、一个容器连接到另一个容器
1 | docker run -i -t --name sonar -d -link mmysql:db tpires/sonar-server |
sonar容器连接到mmysql容器,并将mmysql容器重命名为db。这样,sonar容器就可以使用db的相关的环境变量了。
14、拉取镜像
1 | docker pull <镜像名:tag> |
如docker pull sameersbn/redmine:latest
当需要把一台机器上的镜像迁移到另一台机器的时候,需要保存镜像与加载镜像。
机器a
1 | docker save busybox-1 > /home/save.tar |
使用scp将save.tar拷到机器b上,然后:
1 | docker load < /home/save.tar |
15、构建自己的镜像
1 | docker build -t <镜像名> <Dockerfile路径> |
如Dockerfile在当前路径:docker build -t xx/gitlab .
Hexo添加Gitalk评论插件
安装
Gitalk提供了两种方式:
- 直接引入
1 | <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css"> |
- npm安装
1 | npm i --save gitalk |
相对来说第一种会更简单。
使用
A GitHub Application is needed for authorization, if you don’t have one, Click here to register a new one.
Note: You must specify the website domain url in the Authorization callback URL field.
1 | const gitalk = new Gitalk({ |
修改主题文件
- 这里以next主题为例,参考Feature: Add Gitalk Support
不同的主题目录和模板引擎不同,可以自己修改, 修改next主题配置文件_config.yml,添加字段:
1 | # Gitalk |
- 找到
next/layout/_third-party/comments文件夹,新建gitalk.swig文件,代码如下:
1 | {% if not (theme.duoshuo and theme.duoshuo.shortname) and not theme.duoshuo_shortname %} |
- 同目录下在
index.swig文件末尾添加:
1 | {% include 'gitalk.swig' %} |
- 下步搞起,
next/layout/_partials文件夹下,找到comments.swig文件,添加代码:
1 | {% elseif theme.gitalk.enable %} |
因为github限制了issue的提交title长度不能超过50,可能会遇到Error: Validation Failed 按照这里的方案,使用MD5的方式降低长度即可
参考文档
Linux xmr-stak挖矿教程
在Linux上编译 xmr-stak
Install Dependencies
AMD APP SDK 3.0 (only needed to use AMD GPUs)
- download and install the latest version from https://www.dropbox.com/sh/mpg882ekirnsfa7/AADWz5X-TgVdsmWt0QwMgTWLa/AMD-APP-SDKInstaller-v3.0.130.136-GA-linux64.tar.bz2?dl=0
(do not wonder why it is a link to a dropbox but AMD has removed the SDK downloads, see https://community.amd.com/thread/228059)
Cuda 8.0+ (only needed to use NVIDIA GPUs)
- download and install https://developer.nvidia.com/cuda-downloads
- for minimal install choose
Custom installation optionsduring the install and select- CUDA/Develpment
- CUDA/Runtime
- Driver components
GNU Compiler
1 | # Ubuntu / Debian |
g++ version 5.1 or higher is required for full C++11 support.
If you want to compile the binary without installing libraries / compiler or just compile binary for some other distribution, please check the build_xmr-stak_docker.sh script.Some newer gcc versions are not supported by CUDA (e.g. Ubuntu 17.10). It will require installing gcc 5 but you can avoid changing defaults.
In that case you can force CUDA to use an older compiler in the following way:
1 | cmake -DCUDA_HOST_COMPILER=/usr/bin/gcc-5 .. |
To do a generic and static build for a system without gcc 5.1+
1 | cmake -DCMAKE_LINK_STATIC=ON -DXMR-STAK_COMPILE=generic . |
Note - cmake caches variables, so if you want to do a dynamic build later you need to specify ‘-DCMAKE_LINK_STATIC=OFF’
Reference xmr-stak
30天学习30种新技术系列
编者注:我们发现了比较有趣的系列文章《30 天学习 30 种新技术》,准备翻译,一天一篇更新,年终礼包。以下是译文,英文标题表示还未翻译,附原文链接;中文标题表示已翻译,附译文链接。
教你免费搭建个人博客,Hexo&Github
Hexo使用攻略-添加分类及标签
1、创建“分类”选项
1.1 生成“分类”页并添加tpye属性
打开命令行,进入博客所在文件夹。执行命令
1 | $ hexo new page categories |
成功后会提示:
1 | INFO Created: ~/Documents/blog/source/categories/index.md |
根据上面的路径,找到index.md这个文件,打开后默认内容是这样的:
1 | --- |
添加type: "categories"到内容中,添加后是这样的:
1 | --- |
保存并关闭文件。
1.2 给文章添加“categories”属性
打开需要添加分类的文章,为其添加categories属性。下方的categories: web前端表示添加这篇文章到“web前端”这个分类。注意:hexo一篇文章只能属于一个分类,也就是说如果在“- web前端”下方添加“-xxx”,hexo不会产生两个分类,而是把分类嵌套(即该文章属于 “- web前端”下的 “-xxx ”分类)。
1 | --- |
至此,成功给文章添加分类,点击首页的“分类”可以看到该分类下的所有文章。当然,只有添加了categories: xxx的文章才会被收录到首页的“分类”中。
2、创建“标签”选项
2.1 生成“标签”页并添加tpye属性
打开命令行,进入博客所在文件夹。执行命令
1 | $ hexo new page tags |
成功后会提示:
1 | INFO Created: ~/Documents/blog/source/tags/index.md |
根据上面的路径,找到index.md这个文件,打开后默认内容是这样的:
1 | --- |
添加type: "tags"到内容中,添加后是这样的:
1 | --- |
保存并关闭文件。
2.2 给文章添加“tags”属性
打开需要添加标签的文章,为其添加tags属性。下方的tags:下方的- jQuery - 表格
- 表单验证就是这篇文章的标签了
1 | --- |
至此,成功给文章添加分类,点击首页的“标签”可以看到该标签下的所有文章。当然,只有添加了tags: xxx的文章才会被收录到首页的“标签”中。
细心的朋友可能已经发现,这两个的设置几乎一模一样!是的,没错,思路都是一样的。所以我们可以打开scaffolds/post.md文件,在tages:上面加入categories:,保存后,之后执行hexo new 文章名命令生成的文件,页面里就有categories:项了。
scaffolds目录下,是新建页面的模板,执行新建命令时,是根据这里的模板页来完成的,所以可以在这里根据你自己的需求添加一些默认值。

