德聚全的部落格

随便写一些开发的经验和生活的感悟


  • 首页

  • 归档

网络

Posted on 2019-06-18 | Edited on 2020-09-09 | In Docker

网络 ( Network )

Docker 中能够十分轻松的对每个容器的网络进行配置,还能在容器间建立虚拟网络,将数个容器包裹其中,同时与其他网络环境隔离。

利用一些技术,Docker 能够在容器中营造独立的域名解析环境,这使得我们可以在不修改代码和配置的前提下直接迁移容器,Docker 会为我们完成新环境的网络适配。

容器

Posted on 2019-06-18 | Edited on 2020-09-09 | In Docker

容器 ( Container )

容器就是被隔离出来的虚拟环境

容器的生命周期: Created,Running,Paused,Stopped,Deleted

Running是真正在运行的容器

保持一个容器处在Running状态就需要容器中PID为1的进程一直运行着,一旦这个进程停止意味着容器的停止

容器启动进程往往由Dockerfile中最后的ENTRYPOINT或CMD决定
也就是这2选1个参数执行的shell脚本执行的程序不能报错,且必须停留在命令行上,

创建容器

1
2
docker create --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
8101a3998e3c86fe266e3ec35db21263ab645c982043daa84e3b985445ebf5fc

执行 docker create 后,Docker 会根据命令使用镜像创建容器,并在控制台打印出容器 ID,此时容器是处于 Created 状态的。

我们可以用容器ID或容器name来操作容器

启动容器

1
docker start mysql

通过 docker start命令启动了容器

有人会说真麻烦,创建一步启动一步,下面就一键启动

看了docker start的参数发现它可以一次启动多个容器,也并非一无是处

1
docker start [OPTIONS] CONTAINER [CONTAINER...]

docker run

docker run将docker create和docker start两步并作一步,容器创建后会立刻启动

docker run 是我们居家旅行杀人灭口必备命令,它能干的事非常多

高级内容,不熟可跳过
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
docker run [OPTIONS] IMAGE:TAG [COMMAND] [ARG...]

# 常用参数
# -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

# -d: 后台运行容器,并返回容器ID;

# -i: 以交互模式运行容器,通常与 -t 同时使用;

# -P: 随机端口映射,容器内部端口随机映射到主机的高端口

# -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

# -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

# --name="nginx-lb": 为容器指定一个名称;

# --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

# --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

# -h "mars": 指定容器的hostname;

# -e username="ritchie": 设置环境变量,可指定多个;

# --env-file=[]: 从指定文件读入环境变量;

# --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

# -m :设置容器使用内存最大值;

# --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

# --rm $container_name: 如果容器存在则删除

# --link=[]: 添加链接到另一个容器;

# --expose=[]: 开放一个端口或一组端口;

保持一个容器运行不退出的必须是 ENTRYPOINT 或 CMD 占据bash不退出的命令

实用命令

后台运行

后台启动一个以nginx最新版本镜像的容器,命名为mynginx

1
docker run --name mynginx -d nginx:latest

端口绑定

docker run 子命令启动容器,-p 将容器的 8000 端口映射到宿 主机的 8000 端口上,–name 给容器赋予一个唯一的名字, 最后一个参数是镜像

1
docker run -p 8000:8000 --name $container_name $image_name

交互方式运行

使用-t -i用交互方式运行
镜像名后面固定跟着的是 cmd

1
docker run -t -i $image_name /bin/bash

挂载目录

your_dir必须是绝对路径

1
docker run -v /your_dir:/target_dir debian

指定环境变量

启动一个mysql

1
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=123456 -d -e MYSQL_DATABASE=my_database -v /your_abs_dir:/var/lib/mysql mysql:latest

容器退出时删除数据卷

1
docker run --name xxx --rm mysql

管理容器

查看容器列表

通过 docker ps可以列出Docker中的容器

1
2
3
4
5
6
docker ps
# 默认情况下只列出Running状态的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2884ecbd2e57 inessence_official_webapp "docker-entrypoint.s…" About an hour ago Up About an hour 0.0.0.0:8888->3000/tcp inessence_official_webapp_1
04c32cf7999c mysql:latest "docker-entrypoint.s…" 4 hours ago Up 4 hours 3306/tcp, 33060/tcp fuck
59491db0f044 mongo:3.4 "docker-entrypoint.s…" 22 hours ago Up 6 hours 27017/tcp easy-mock-docker-160_mongodb_1
1
2
3
docker ps -a
docker ps --all
# 列出全部

通过docker ps可以看到容器ID(CONTAINER ID),使用镜像(IMAGE),执行命令(COMMAND),创建时间(CREATED),状态(STATUS),端口(PORTS),名称(NAMES)

其中状态(STATUS)有3种状态

  • Created 此时容器已创建,但还没有被启动过
  • Up [ Time ] 这时候容器处于正在运行状态,而这里的 Time 表示容器从开始运行到查看时的时间
  • Exited ([ Code ]) [ Time ] 容器已经结束运行,这里的 Code 表示容器结束运行时,主程序返回的程序退出码,而 Time 则表示容器结束到查看时的时间

一般你都会看到第三种的,等你成为高手了总会是第二种,😊

停止容器

docker stop

1
docker stop mysql

容器停止后,内部被修改的内容会保留,可以通过 docker start 命令将这个容器再次启动

暂停恢复容器内进程

1
2
3
4
docker pause mysql
# docker pause [OPTIONS] CONTAINER [CONTAINER...]
docker unpause mysql
# docker unpause [OPTIONS] CONTAINER [CONTAINER...]

查看容器进程信息

1
2
docker top mysql
# docker top CONTAINER [ps OPTIONS]

删除容器

docker rm

1
docker rm mysql

运行中的容器是不允许被删除的,可以加参数

1
2
docker rm -f mysql
docker rm --force

进入容器

很多时候我们都想深入了解对方,是时候进入容器了

在容器内执行命令

1
2
# docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
docker exec mysql cat /etc/hostname

在容器内启动bash

1
2
docker exec -it mysql /bin/bash
root@6c1988417237:/#

查看容器日志

有时我们需要观察容器在启动和运行过程中打印在bash上的日志

1
docker logs CONTAINER

查看容器元数据

成为高手后会经常查看吧,反正我没看过

1
docker inspect CONTAINER

docker container

专门管理容器的命令,更细化了管理能力,我就不一一翻译了

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
Usage:	docker container COMMAND

Manage containers

Commands:
attach Attach local standard input, output, and error streams to a running container
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
exec Run a command in a running container
export Export a container's filesystem as a tar archive
inspect Display detailed information on one or more containers
kill Kill one or more running containers
logs Fetch the logs of a container
ls List containers
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
prune Remove all stopped containers
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
run Run a command in a new container
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
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
wait Block until one or more containers stop, then print their exit codes

实用命令

停止所有的容器

1
docker stop $(docker ps -a -q)

删除所有容器

1
2
docker rm $(docker ps -a -q)
docker rm -f $(docker ps -a -q)

获取容器ip

1
2
3
docker inspect \
> --format '{{.NetworkSettings.IPAddress}}' \
> container_id

查看所有容器进程信息

1
for i in  `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done

To Be Continue

镜像

Posted on 2019-06-18 | Edited on 2020-09-09 | In Docker

在 Docker 体系里,有四个对象 ( Object ) ,几乎所有 Docker 以及周边生态的功能,都是围绕着它们所展开的。它们分别是:镜像 ( Image )、容器 ( Container )、网络 ( Network )、数据卷 ( Volume )

镜像 ( Image )

所谓镜像,可以理解为一个 只读的 文件包,其中包含了 虚拟环境运行最原始文件系统的内容

每次对镜像内容的修改,Docker 都会将这些修改铸造成一个镜像层,而一个镜像其实就是由其下层所有的镜像层所组成的。当然,每一个镜像层单独拿出来,与它之下的镜像层都可以组成一个镜像。

另外,由于这种结构,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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
inessence_official_webapp latest fbd81bfea9a3 3 hours ago 1.16GB
io_ts_webapp latest 666d494004eb 5 days ago 406MB
<none> <none> 0476fa281a13 5 days ago 406MB
<none> <none> 9b4121e2db9f 5 days ago 406MB
<none> <none> fa23efbdda7d 5 days ago 406MB
mongo <none> 0a8d98121dec 5 days ago 426MB
<none> <none> b9f227d5c6f7 6 days ago 1.08GB
<none> <none> a083f63f5823 6 days ago 1.08GB
<none> <none> f75daa7736f5 6 days ago 1.08GB
<none> <none> 268ac0217a08 6 days ago 226MB
<none> <none> ab24983e2216 6 days ago 1.08GB
<none> <none> 92984335200c 6 days ago 1.08GB
<none> <none> f99fee163ae5 6 days ago 1.08GB
<none> <none> e6fbaa07088f 6 days ago 1.08GB
<none> <none> 8a2c102b92c5 6 days ago 1.08GB
nginx latest 719cd2e3ed04 7 days ago 109MB
zabbix/zabbix-server-mysql latest 890289d63b00 7 days ago 65.3MB
zabbix/zabbix-web-apache-mysql latest abbb7efb4887 7 days ago 108MB
zabbix/zabbix-agent latest 4b2ee6b413bc 7 days ago 14.9MB
node 8.16.0-alpine e08ba08cf75a 13 days ago 66.7MB
sinopia-docker_sinopia latest a9a2ab793aa0 2 weeks ago 143MB
sinopia latest ddf619bf46b6 2 weeks ago 143MB
node alpine 91acf04599c4 3 weeks ago 79.6MB
mongo 3.4 3e07e22f0dbf 4 weeks ago 426MB
mysql latest 990386cbd5c0 5 weeks ago 443MB
easymock/easymock 1.6.0 193a7b904d4f 5 weeks ago 699MB
mysql 5.7 7faa3c53e6d6 5 weeks ago 373MB
k8s.gcr.io/kubernetes-dashboard-amd64 v1.10.1 f9aed6605b81 6 months ago 122MB
k8s.gcr.io/kube-proxy-amd64 v1.10.11 7387003276ac 6 months ago 98.3MB
k8s.gcr.io/kube-apiserver-amd64 v1.10.11 e851a7aeb6e8 6 months ago 228MB
k8s.gcr.io/kube-controller-manager-amd64 v1.10.11 978cfa2028bf 6 months ago 151MB
k8s.gcr.io/kube-scheduler-amd64 v1.10.11 d2c751d562c6 6 months ago 51.2MB
docker/kube-compose-controller v0.4.12 02a45592fbea 9 months ago 27.8MB
docker/kube-compose-api-server v0.4.12 0f92c77fa676 9 months ago 41.2MB
k8s.gcr.io/etcd-amd64 3.1.12 52920ad46f5b 15 months ago 193MB
mritd/idgen latest 07e1eab12bef 15 months ago 35.7MB
k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64 1.14.8 c2ce1ffb51ed 17 months ago 41MB
k8s.gcr.io/k8s-dns-sidecar-amd64 1.14.8 6f7f2dc7fab5 17 months ago 42.2MB
k8s.gcr.io/k8s-dns-kube-dns-amd64 1.14.8 80cc5ea4b547 17 months ago 50.5MB
k8s.gcr.io/pause-amd64 3.1 da86e6ba6ca1 18 months ago 742kB
k8s.gcr.io/pause 3.1 da86e6ba6ca1 18 months ago 742kB
redis 4.0.6 1e70071f4af4 18 months ago 107MB
quay.io/coreos/hyperkube v1.7.6_coreos.0 2faf6f7a322f 21 months ago 699MB
skyzhou/docker-discuz latest 54339c48016c 4 years ago 269MB

获取镜像

1
2
3
4
5
6
7
8
9
10
11
12
docker pull node
Using default tag: latest
latest: Pulling from library/node
6f2f362378c5: Downloading [=======> ] 6.876MB/45.34MB
494c27a8a6b8: Download complete
7596bb83081b: Download complete
372744b62d49: Downloading [=====> ] 5.09MB/50.07MB
615db220d76c: Waiting
afaefeaac9ee: Waiting
22d677ae7b14: Waiting
954f64c2b02a: Waiting
3a0d282381d6: Waiting

搜索镜像

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
docker search node
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
node Node.js is a JavaScript-based platform for s… 7531 [OK]
mongo-express Web-based MongoDB admin interface, written w… 468 [OK]
nodered/node-red-docker Node-RED Docker images. 316 [OK]
selenium/node-chrome 194 [OK]
prom/node-exporter 136 [OK]
iojs io.js is an npm compatible platform original… 130 [OK]
selenium/node-firefox 121 [OK]
circleci/node Node.js is a JavaScript-based platform for s… 87
readytalk/nodejs Node.js based off the official Debian Wheezy… 51 [OK]
digitallyseamless/nodejs-bower-grunt Node.js w/ Bower & Grunt Dockerfile for tru… 48 [OK]
kkarczmarczyk/node-yarn Node docker image with yarn package manager … 47 [OK]
bitnami/node Bitnami Node.js Docker Image 38 [OK]
iron/node Tiny Node image 29
calico/node 17 [OK]
appsvc/node Azure App Service Node.js dockerfiles 12 [OK]
centos/nodejs-8-centos7 Platform for building and running Node.js 8 … 8
cusspvz/node 🌐 Super small Node.js container (~15MB) bas… 7 [OK]
mc2labs/nodejs CoffeScript and Supervisor powered Nodejs ba… 7 [OK]
basi/node-exporter Node exporter image that allows to expose th… 7 [OK]
centos/nodejs-6-centos7 Platform for building and running Node.js 6 … 4
ppc64le/node Node.js is a JavaScript-based platform for s… 2
nodecg/nodecg Create broadcast graphics using Node.js and … 1 [OK]
ogazitt/node-env node app that shows environment variables 0
camptocamp/node-collectd rancher node monitoring agent 0 [OK]
appsvctest/node node build 0 [OK]

当然上面的太极客了,我一般是去Docker Hub搜索

使用阿里云仓库

linux 下

1
2
3
4
5
6
7
8
9
10
11
sudo vim /etc/docker/daemon.json

# 写入

# {

# "registry-mirrors": ["https://dftbcros.mirror.aliyuncs.com"]

# }

systemctl restart docker即可

Docker Desktop直接在首选项的Daemon面板添加Registry mirrors项即可

从容器创建一个新的镜像

1
2
docker commit -a "runoob.com" -m "my apache" a404c6c174a2  mymysql:v1
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

标记镜像

1
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

保存镜像

将指定镜像保存成tar包

1
2
docker save -o my_node_v1.tar node
docker save node > my_node_v1.tar

导入镜像

只是导入

1
2
docker load -i my_node_v1.tar
docker load < my_node_v1.tar

从压缩包创建镜像

1
2
3
docker import my_node_v1.tar my_node_v1
REPOSITORY TAG IMAGE ID CREATED SIZE
my_node_v1 latest 39dba8b60aa0 6 seconds ago 1.08GB

查看镜像创建历史

1
docker history my_node_v

查看镜像元数据

1
docker inspect IMAGE

删除镜像

通俗易懂,牛逼的在下面

1
docker rmi IMAGE

构建镜像

参见Dockerfile部分

实用技巧

删除untagged镜像

构建镜像时产生的中间层,那些id为 的image的话可以用

1
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

删掉全部镜像

1
docker rmi $(docker images -q)

镜像缓存

利用上面每一层不可修改的特性,每次的修改会产生缓存层,在制作自己的镜像时可以加速镜像的构建

例如: 精油官网的Dockerfile

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
FROM node:8.16.0-alpine

# 设定node-sass源
ENV SASS_BINARY_SITE https://npm.taobao.org/mirrors/node-sass
# 设定cnpm源 全局安装pm2 gulp
RUN npm config set registry http://r.cnpmjs.org/ \
&& npm i -g pm2 \
&& npm i -g gulp
RUN mkdir -p /code

COPY ./package.json /code
COPY ./npm-shrinkwrap.json /code

# 设定工作目录
WORKDIR /code

# 安装依赖 发布文件
RUN npm i

# 拷贝源码
COPY ./ /code

# 设定生产环境变量,在此之前设定不会安装开发依赖
ENV NODE_ENV production
CMD npm run publish\
&& npm start

执行编译结果

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
42
43
44
45
46
47
48
49
Building webapp
Step 1/11 : FROM node:8.16.0-alpine
# 第一步配置了node的镜像版本
---> e08ba08cf75a
Step 2/11 : ENV SASS_BINARY_SITE https://npm.taobao.org/mirrors/node-sass
# 第二步配置了node_sass环境变量
---> Using cache
---> 9ae0bff187ae
Step 3/11 : RUN npm config set registry http://r.cnpmjs.org/ && npm i -g pm2 && npm i -g gulp
# 第三步配置了node仓库 安装了全局依赖
---> Using cache
---> aded62ca7c9c
Step 4/11 : RUN mkdir -p /code
# 创建了代码文件夹
---> Using cache
---> 240959fb5df5
Step 5/11 : COPY ./package.json /code
# 拷贝项目依赖到代码文件夹
---> Using cache
---> 0cff32374228
Step 6/11 : COPY ./npm-shrinkwrap.json /code
# 拷贝项目依赖到代码文件夹
---> Using cache
---> 302a5dfaf730
Step 7/11 : WORKDIR /code
# 设置工作目录
---> Using cache
---> 37e654041ce1
Step 8/11 : RUN npm i
# 依赖安装
# >可以看到只要依赖关系不变,就不用添加新的依赖包
---> Using cache
---> 5503b8604ed0
Step 9/11 : COPY ./ /code
# 拷贝代码到代码文件夹
---> 89508baebd0b
Step 10/11 : ENV NODE_ENV production
# 设置环境变量
---> Running in 246d370b0294
Removing intermediate container 246d370b0294
---> c98a8f5f942c
Step 11/11 : CMD npm run publish && npm start
# 执行启动命令
---> Running in a10bcd80fab6
Removing intermediate container a10bcd80fab6
---> fbd81bfea9a3
Successfully built fbd81bfea9a3
Successfully tagged inessence_official_webapp:latest
Creating inessence_official_webapp_1 ... done

浅谈

Posted on 2019-06-18 | Edited on 2020-09-09 | In Docker

docker 浅谈

这是我写docker的第一篇文章,有不对的地方请指正

我不会去讲如何在你的对应环境中安装什么,连这个都搞不定就别看了

什么是docker

我们所讲的docker 是由Docker官方命名为Docker Engine的软件。这款软件最核心的部分就是docker daemon 和 docker CLI.

docker daemon 通过一套RESTful API 提供镜像 ( Image )、容器 ( Container )、网络 ( Network )、数据卷 ( Volume )的管理.

我们通过docker CLI的各种命令调用docker daemon 的RESTful API来实现管理使用docker

怎么用

我们在windows或mac中直接使用Docker Desktop就可以了,你的电脑必须支持intel hyper-v技术

低版本的系统使用Docker Toolbox,当然我系统比较新从来没用过这个

为什么要用

1 开发

  • 无需经过运维就可以快速创建出需要的环境
  • docker hub上有各种写好服务镜像,直接站在巨人的肩膀上,例如现在用的大搜车 easymock 服务

2 测试

  • 可以大量的布置环境模拟各种场景
  • 可以模拟真实的线上环境提前甄别线上错误

3 部署

  • 节约资源,很多服务其实是跑不满一台机器的,通过集群分配资源
  • 践行devOps让上线更加可靠有保障

可以说docker是现代开发测试运维必知必会的一个环节了

后面我会按docker指令的分类来稍加描述各种指令如何使用

git学习

Posted on 2019-06-04 | Edited on 2020-09-09

知道了一个学习git常用命令的网站learngitbranching

很实用

shell脚本检查器

Posted on 2019-06-04 | Edited on 2020-09-09

年龄大了,代码写的越来越少,shell脚本写的越来越多

一直都是蒙着写,直到我知道了一款神器shellcheck来帮助我

还有vscode的插件,插件库中搜索shellcheck 安装即可

再也不怕写出得脚本有问题啦,😊

mysql修改密码遇到的问题

Posted on 2018-10-18 | Edited on 2020-09-09 | In mysql

最近在研究 nodejs 的 sequelize遇到了一些 mysql 的管理问题

首先安装mysql

1
2
3
4
5
6
7
8
9
10
# 安装
brew install mysql
# 需要 mysql 在开机自动运行就执行
brew services start mysql
# 反过来就应该是
brew services stop mysql
# 手动开启 mysql
mysql.server start
# 默认安装是没有密码的可以直接连接
mysql -uroot

执行上面这些命令 mysql 就安装好了

连接 mysql 创建数据库

1
create database $database_name

用 sequelize 创建 migration

1
2
3
4
5
6
7
8
# 生成 migration 文件
sequelize model:generate --name User --attributes firstName:string,lastName:string,email:string

# 执行 migration
sequelize db:migrate

# 报错
Client does not support authentication protocol requested by server; consider upgrading MySQL client

这个错误是由于没有设置密码导致的所以进入 mysql 控制台设置密码

1
2
3
4
5
use mysql;
alter user 'root'@'127.0.0.1' identified with mysql_native_password by '123456';

# 报错
Your password does not satisfy the current policy requirements.

现在解决上面的报错,是由于密码策略太强引起的,我们开发不需要那么强的密码策略, 继续在 mysql 控制台里修改

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
# 查找变量,因为随着版本更迭这个变量可能会改名😭
SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM |
| validate_password.special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.01 sec)

# 设置密码策略强度
set validate_password.policy=LOW;

# 设置密码长度
SET GLOBAL validate_password_length = 6;

# 重新设置密码
use mysql;
alter user 'root'@'localhost' identified with mysql_native_password by '123456';
# 刷新
flush privileges;

下面就可以愉快的使用 mysql 了 🤣🤣🤣

mac 下使用 Karabiner 设置机械键盘的 fn 键

Posted on 2018-08-24 | Edited on 2020-09-09 | In mac , Karabiner

使用机械键盘啪啪啪一直是码农的一种享受

使用 mac 配一个机械键盘啪啪啪更是享受中的享受

但是使用了外置机械键盘 fn 键上内置键盘的功能就失效了

这个时候需要神器Karabiner来拯救我们

. 下载
. 安装
. 运行 Karabiner-Elements
. 将下面的框框取消选中

图片

大功告成,感谢软件作者!!!

nodejs某些依赖没办法下载的解决方法

Posted on 2018-08-13 | Edited on 2020-09-09

众所周知的原因,某些包不设置环境变量是下载不了的

方法一 使用淘宝镜像

解决方法

1
2
3
npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
npm config set phantomjs_cdnurl=https://npm.taobao.org/mirrors/phantomjs/
npm config set electron_mirror=https://npm.taobao.org/mirrors/electron/

这样使用 npm i 时会从淘宝源下载

挂代理

1
2
export https_proxy="http://127.0.0.1:1087"
export http_proxy="http://127.0.0.1:1087"

使用mac共享$$给其他设备

Posted on 2018-08-04 | Edited on 2020-09-09 | In ShadowSocks

1.下载privoxy

1
brew install privoxy

2.修改/usr/local/etc/privoxy/config

  • 搜索到“forward-socks5t /”(不含双引号)那一行,去掉注释的符号,把端口改为1086(系SS的SOCKS5端口)

    forward-socks5t / 127.0.0.1:1086 .

  • 搜索到“listen-address 127.0.0.1:8118”(不含双引号)那一行,去掉注释的符号,把127.0.0.1改为0.0.0.0(否则只能作用于本机),端口号默认或选择一个未占用的端口

    listen-address 0.0.0.0:8118

3.在终端中运行

1
2
cd /usr/local/sbin/
./privoxy --no-daemon /usr/local/etc/privoxy/config

4.使用
将设备和Mac接入同一个局域网,并在设备的Wi-Fi设置里开启手动代理,代理服务器主机名是Mac的局域网地址,端口是刚才在config里面设置的端口号(8118)。
可以在浏览器中打开ip.cn查看当前IP,如果是SS服务器的IP,则成功。

123
德巍

德巍

时间是把杀猪刀

27 posts
10 categories
32 tags
Github V2ex SegmentFault Zhihu bilibili
© 2021 德巍
Powered by Hexo v3.7.1
|
Theme — NexT.Mist v6.3.0