容器的创建与进入
创建容器
在镜像构建完毕之后,就可以从镜像创建容器,比如从 my_python_app
镜像创建一个 my_python_app
容器
docker run -it --name my_running_app my_python_app
注意,如果没有指定 name 的话,如果命令没有特定地指定一个名字(使用 --name 选项),Docker 会自动生成一个随机的名字,如
zen_johnson
和busy_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