Skip to main content

容器的创建与进入

创建容器

在镜像构建完毕之后,就可以从镜像创建容器,比如从 my_python_app 镜像创建一个 my_python_app 容器

docker run -it --name my_running_app my_python_app

注意,如果没有指定 name 的话,如果命令没有特定地指定一个名字(使用 --name 选项),Docker 会自动生成一个随机的名字,如 zen_johnsonbusy_villani

如果容器已停止,你需要首先将其启动:

docker start my_python_app

后面使用 docker attach 命令来连接到容器的会话:

docker attach my_python_app

这个命令会连接到容器的主进程。如果你在容器中开启了 shell,这会带你回到那个 shell。

或者,如果你想在容器中开启一个新的会话,可以使用:

docker exec -it my_python_app /bin/bash

这将在运行的容器内启动一个新的 /bin/sh shell 会话,让你可以在容器中执行命令。

所以docker attach主要用于连接到容器的主进程并与其交互,而 docker exec 则用于在容器中运行新的进程或命令。

启动参数

基础参数解释

docker run -it --name py36xgb141 py36 /bin/bash 为例

  • docker run:这是Docker命令,用于创建并运行一个新的容器。
  • -it: 交互式终端。
    • -i (interactive):保持标准输入(stdin)打开,即使没有附加。
    • -t (tty):为容器分配一个伪终端。
  • --name py36xgb141:这是为容器指定一个名称(py36xgb141)。命名容器使管理和引用容器更容易。
  • py36:这是要运行的镜像名称
  • /bin/bash: 这是要在容器内运行的命令。在这个例子中,运行的是 Bash shell。这样可以在容器内获得一个终端。

添加端口映射

将宿主机的8888端口映射到容器的8888端口。这对于在浏览器中访问Jupyter Notebook等服务很有用。

docker run -it -p 8888:8888 --name py36xgb141 py36 /bin/bash

卷挂载

如果想在本地修改容器里面的文件,就需要将宿主机上的目录挂载到容器内的 /app 目录。

语法是 -v <host_dir>:<container_dir>,例如

docker run -it -p 8888:8888 -v ~/notebooks:/app --name py36xgb141 py36 /bin/bash