在文章《Windows Docker笔记-Docker拉取镜像》中,已经拉取成功了ubuntu镜像,本章来讲解如何通过镜像来创建容器并运行容器。
这里再类比一下,加深理解,比如,我们现在想开一个玩具厂,我们的最终目的肯定是想让玩具厂生产流水线正常工作,产出玩具。那么现在拿到的Ubuntu镜像,就相当于我们已经准备好了建工厂的材料(砖、钢筋、水泥等等)和建筑工具(docker),仅此而已。想要修建工厂,就必须找建筑工人使用建筑工具,用建筑材料来修建。
建筑工人:开发者,运维人员
建筑工具:docker
建筑材料:Ubuntu镜像
查看本地镜像
创建容器
命令:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
[COMMAND] 和 [ARG…]两个参数可选,目前还没有用到,后续补充。
[OPTIONS]常用选项包括:
- -i, --interactive:以交互式模式运行命令,接受用户输入
- -t, --tty:为终端分配一个tty设备,使容器能够与终端进行交互
- -d, --detach:指定容器在后台运行
- -p, --publish:指定容器的端口映射
- -v, --volume:指定容器的目录挂载
- –name:指定容器的名称
- -e, --env:设置容器的环境变量
- –rm:容器运行结束后自动删除
案例1:docker run -it --name myUbuntu a04dc4851cbc # 如果使用镜像ID,直接写上就可以
案例2:docker run -it --name myUbuntu ubuntu:latest # 如果使用镜像名称,需要指定镜像版本(Tag),否则默认为本地相同镜像所有版本中最新的。
可以看到,在创建的容器中使用Linux命令,就像在Ubuntu虚拟机中使用一样的,非常的帅气。
退出容器
当前是在容器的终端中,想要退出容器终端,回到windows命令行终端,需要使用如下命令。
命令:exit
Docker命令查看创建的容器
命令:docker ps # 只显示正常运行的容器
命令:docker ps -a # 显示所有容器,包括正在运行的和已经停止的。
可以看到,刚刚创建容器的信息:
容器ID | 镜像 | 终端 | 创建时间 | 状态 | 端口 | 容器名称 |
---|---|---|---|---|---|---|
da3b54c08bd5 | ubuntu:latest | /bin/bash | 24 minutes ago | Exited | myUbuntu |
由上发现,在使用了容器终端命令exit后,容器也退出停止了。应该如何重新启动一个已经存在的容器呢?
启动现有的容器
命令:docker start myUbuntu # 参数使用容器名称
命令:docker start da3b54c08bd5 # 参数使用容器ID
可以看到容器的状态已经变成了启动。但是如何才能再进入到容器中使用容器呢?
Docker进入已经运行的容器的终端
命令:docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
参数说明
- CONTAINER:指定要操作的容器名称或容器ID。
- COMMAND:在容器中要执行的命令。
- [ARG…]:命令的参数。
常用选项
- -d:在后台运行命令。
- -i:保持 STDIN 打开,即使没有附加。
- -t:分配一个伪终端(TTY)。
- –user 或 -u:指定在容器中运行命令的用户(默认为容器的默认用户)。
- –workdir 或 -w:指定在容器中运行命令的工作目录。
- –env 或 -e:设置环境变量。
- –privileged:以特权模式运行命令。
案例:docker exec -it myUbuntu /bin/bash #这里 COMMAND 参数对应 查看容器信息时的COMMAND字段内容
此时,在容器终端再次执行exit,退出容器,发现容器也不会退出(停止),状态还是运行的状态。
那这种情况应该如何停止容器呢?
停止正在运行的容器
命令:docker stop myUbuntu # 参数使用容器名称
命令:docker stop da3b54c08bd5 # 参数使用容器ID
可以看到容器已经停止了。
客户端查看容器(两边同步的)
讲到这里,就好比已经建好了玩具厂,也知道了玩具厂大门,怎么打开和关闭。但是现在仅仅是一个空的厂房,里面没有生产玩具的流水线设备。那么下一章讲解如何修建生产线。
上一章:Windows Docker笔记-Docker拉取镜像
下一章:Windows Docker笔记-在容器中运行项目