docker容器为基础 编译运行minob
docker 容器的创建、attach与退出(ubuntu为例)
- 需要先pull一个ubuntu 20.04的镜像
- 创建容器
docker run -it --name minob_ubuntu --privileged -v /mnt/c/NonSystemThing/docker_file_shared/miniob:/root/docker_file_shared ubuntu:20.04 |
可以通过以下两种方法之一来退出 Docker 容器的命令行,并让容器在后台继续运行:
方法一:使用
Ctrl + P
和Ctrl + Q
组合键这是 Docker 提供的一个快捷方式,用于让容器在后台继续运行而不退出容器。
进入容器后,不要直接输入
exit
。按下
Ctrl + P
,然后按Ctrl + Q
。这会把你从容器的交互模式中分离出来,但容器会继续在后台运行。方法二:使用
docker exec
进入容器并运行新的命令你也可以选择进入已经运行的容器并执行新命令,避免退出当前的进程。
退出当前的交互式容器会话(输入
exit
),这时容器会停止。使用以下命令重新进入容器:
bash
复制编辑
docker exec -it minob_ubuntu bash
这样你可以进入容器并执行新的命令。
想要再次进入容器命令行:
docker attach
命令
附加到主进程:
docker attach
会连接到容器的主进程(即容器启动时指定的命令,比如用docker run -it ubuntu:20.04 bash
启动的容器,主进程是bash
)。会共享输入输出:直接与主进程的输入输出进行交互。如果主进程终止(例如你退出了
bash
),容器也会停止。无法启动新的进程:无法在容器中启动额外的进程,只能与容器的主进程进行交互。
docker exec
启动新进程:
docker exec
允许你在容器中启动一个新的进程,而不会干扰主进程。你可以启动一个新的 shell 或其他命令。不会影响容器的状态:即使你通过
docker exec
启动新的进程并退出,它不会导致主进程(或容器)停止运行。多次执行:你可以多次使用
docker exec
进入容器并启动多个不同的进程。主要区别:
attach
连接到容器的主进程,并且与该进程共享输入和输出。如果主进程结束,容器会停止。
exec
启动新的进程,不会影响容器的主进程,因此可以进行多次交互。具体场景中:
如果希望继续与容器的主进程(例如
bash
)交互,可以使用docker attach
。如果希望启动一个新的
bash
进程并继续使用容器而不影响主进程,可以使用docker exec
。如果你使用
docker attach
后想退出,只需要按Ctrl + C
,但这可能会导致容器退出。如果你希望保留容器继续运行并退出当前会话,docker exec
是更好的选择。因此推荐使用
docker exec -it minob_ubuntu bash
命令再次进入容器
- 如果想关闭容器,可以使用
docker stop minob_ubuntu
命令
- 启动刚刚创建的docker容器
docker start minob_ubuntu |
这个命令会启动容器,但不会自动进入容器的交互模式。如果希望在启动容器后进入交互模式,可以执行:
docker start -i minob_ubuntu |
-i
选项会在启动容器时将你附加到容器的标准输入输出流,这样你就可以进入容器的 shell。
另外,使用 docker ps
查看容器状态时,容器会显示为“Up”,表示已经成功启动。
- 安装必要的库
apt update # essential |
minob编译
拉取仓库:
git clone https://github.com/oceanbase/miniob |
之后可以参考文档进行build https://github.com/oceanbase/miniob/blob/main/docs/docs/how\_to\_build.md
- 拉取对应的依赖
bash build.sh init |
- 编译链接minob
bash build.sh (build/release) --make -j |
之后可以参考文档运行 https://github.com/oceanbase/miniob/blob/main/docs/docs/how\_to\_run.md
vscode使用cpptools插件编译与运行配置
c_cpp_properties.json(ctrl+P: edit…)
{ |
launch.json
{ |
版权声明:本博客所有文章除特殊声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明出处 Yuan的博客!