diff --git a/docker/docker学习.md b/docker/docker学习.md new file mode 100644 index 0000000..13d1b3e --- /dev/null +++ b/docker/docker学习.md @@ -0,0 +1,109 @@ +Docker 文件 .dockerignoer 填写要排除的路径 + +填写 DockerFile 文本文件 填写相关打包文件和路径 + +# 创建image文件 + docker image build +docker image build -t koa-demo + docler image build -t koa-demo:0.0.0.1 . + -t 参数用来指定image文件的名字 后面的冒号指定标签 如果不指定,默认标签就是latest + 最后的那个点 就是Dockerfile文件所在的路劲, . 就是当前路劲 + + +# 生成 容器 + docker container run 命令会从image文件生成容器 + docker container run -p 8000:3000 -it koa-demo /bin/bash + docker container run -p 8000:3000 -it koa-demo:0.0.1 /bin/bash + + -p 参数 容器的3000 端口映射到本地的8000端口 + -it 参数 容器的shell 映射到当前的Shell 然后你本地输入的命令就能够传入容器 + koa-demo:0.0.1 image文件的名字 如果有标签还需要提供标签 默认就是latest + /bash/shell 容器启动之后 内部第一个执行的命令 + +也可以使用docker container run 命令的 --rm 参数 在容器停止后自动删除容器文件 + +# CMD命令 + 在容器启动之后 需要手动输入某些命令 可以在Dockerfile里写上 这样容器启动之后就会自动执行这个命令 不用再手动输入 + +发布image文件 + + +# 其他有用的docker命令 + docker container start 新疆一个容器 每运行一次 就会新创建一个容器 同样的命令执行两次 就会生成两个一模一样的容器文件 + 如果是希望重复使用容器,就要使用docker container start 命令 + + docker container start [containerId] 用来启动已经生成,已经停止的运行容器文件 + docker container kill 终止容器 相当于向容器发出SIGKILL信号 + docker container stop [containerId] 也是用来终止容器的 相当于向容器发出 SIGTERM信号 过一段时间再发出SIGKILL信号 + 这两个信号的差别就是 SIGTERM信号 可以自行清理收尾工作 也可以忽略该信号 如果收到SIGKILL信号 就会强行立即终止,那些正在进行中的操作就会全部丢失 + + + 重启一个容器 + docker restart <容器 ID> + + 进入一个容器 + 在使用-d参数时, 容器启动后进入后台 此时想要进入容器 可以通过一下指令进入 + docker attach + docker exec 推荐大家使用docker exec 命令 因为此退出容器终端不会导致容器的停止 + + + + +docker 容器使用 systemctl 命令是报错 +看了许多解决方案,但是对于新手来说并不友好,不是特别清楚 + +报错内容: + + System has not been booted with systemd as init system (PID 1). Can't operate. + Failed to connect to bus: Host is down + + + +解决方法: + + docker run -itd --privileged --name myCentos centos /usr/sbin/init + + 创建完成后: 请使用以下命令进入容器 + + docker exec -it myCentos /bin/bash + + 加粗的内容要特别注意,不能遗忘 + + 原因就是: 默认情况下,在第一步执行的是 /bin/bash,而因为docker中的bug,无法使用systemctl + + 所以我们使用了 /usr/sbin/init 同时 --privileged 这样就能够使用systemctl了,但覆盖了默认的 /bin/bash + + 因此我们如果想进入容器 就不能再使用 docker attach myCentos + +而只能使用 docker exec -it myCentos /bin/bash 因为 exec 可以让我们执行被覆盖掉的默认命令 /bin/bash + +同时 -it 也是必须的。 +-i: 允许你对容器内的标准输入(stdin) 进行交互 +-t: 在新 容器内指定一个伪终端或终端 + + 对于ubuntu 也类似,可能init 目录不太相同 + +当然具体什么bug 我是不知道的,期望以后会会修复 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docker/docker安装mysql.md b/docker/docker安装mysql.md new file mode 100644 index 0000000..b5321d1 --- /dev/null +++ b/docker/docker安装mysql.md @@ -0,0 +1,17 @@ +# docker 下载mysql + dcoker pull mysql:版本 + +# 启动mysql + docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=密码 -d mysql:版本 + +# 进入容器 + docker exec -it mysql bash + +# 登录mysql + mysql -u root -p + ALTER USER 'root@'localhost' IDENTIFIED BY 'starunion'; + +# 添加远程登录用户 直接用root用户登录也行 + CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码'; + GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; + \ No newline at end of file diff --git a/erlang/erlangNif中内存分配推荐使用enif_alloc.md b/erlang/erlangNif中内存分配推荐使用enif_alloc.md new file mode 100644 index 0000000..bb1e981 --- /dev/null +++ b/erlang/erlangNif中内存分配推荐使用enif_alloc.md @@ -0,0 +1,3 @@ +# 为什么更加更加使用enif_alloc而不是使用malloc + enif_alloc使用内部erlang内存分配器,这意味着,如果内部VM高速缓存中已存在该内存,则它可以使用该内存,而不用执行系统调用来获取该内存。在某些情况下,这可能会导致更快的内存分配,您必须使用代码进行衡量,以找出是否有任何区别。通常,我建议使用enif_alloc。 + 如果我没记错的话,在发出erlang:memory命令时,还可以使用enif_alloc来包括所使用的内存。 \ No newline at end of file diff --git a/erlang/erlangVS环境编译nifdll.md b/erlang/erlangVS环境编译nifdll.md index b03b9c9..36516b5 100644 --- a/erlang/erlangVS环境编译nifdll.md +++ b/erlang/erlangVS环境编译nifdll.md @@ -5,15 +5,24 @@ ``` path 新增 D:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.24.28314\bin\Hostx64\x64 + + %% E:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.27.29110\bin\Hostx64\x64 LIB D:\Windows Kits\10\Lib\10.0.18362.0\ucrt\x64 D:\Windows Kits\10\Lib\10.0.18362.0\um\x64 D:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.24.28314\lib\x64 + %% E:\Windows Kits\10\Lib\10.0.18362.0\ucrt\x64 + %% E:\Windows Kits\10\Lib\10.0.18362.0\um\x64 + %% E:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.27.29110\lib\x64 + INCLUDE D:\Windows Kits\10\Include\10.0.18362.0\ucrt D:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.24.28314\include + + %% E:\Windows Kits\10\Include\10.0.18362.0\ucrt + %% E:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.27.29110\include ``` ### 脚本配置 diff --git a/erlang/ubuntu安装erlang.md' b/erlang/ubuntu安装erlang.md' new file mode 100644 index 0000000..7683e7e --- /dev/null +++ b/erlang/ubuntu安装erlang.md' @@ -0,0 +1,10 @@ +# 下载dep包 + +# 执行安装 + dpkg -i esl-erlang_21.0-1_ubuntu_artful_amd64.deb + +# 按照需求安装依赖包 + apt-get install libwxbase3.0-0v5 + + 一键安装所有的依赖包(这个命令可以把依赖都解决掉) + apt-get -f install \ No newline at end of file