我们之前就提过,镜像是创建 Docker 容器的基础,容器是从镜像创建的应用运行实例。这次介绍关于容器的一些基本命令和其运行情况。
首先,我们再次拉取一个Centos的镜像,熟悉 docker pull 镜像名 这条命令
这是我们能之前镜像列表
这是拉取镜像后的列表
启动容器(此时的启动为交互式启动,会产生伪终端)
docker run -it 镜像ID /bin/bash
大家可能对-it 有不理解了,大家可以参照官网的文档,我这也做了简单的说明
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:
--name="容器新名字" 为容器指定一个名称;
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
也即启动交互式容器(前台有伪终端,等待交互);
-P: 随机端口映射,大写P
-p: 指定端口映射,小写p
这里可以使用任何一个镜像作为实例来启动容器,Ubuntu或者Centos
然后,我是使用的Centos,启动该容器的时候,我使用的是Centos的镜像ID
可见红框的信息,与我们之前的不一样了,这时就已经进入到用Centos镜像运行启动的容器了,2我们可以在此容器中操作linux的命令这样,可以说,此时的容器就是一个Linx环境
我们常见的Lunix文件夹
root@后面的数字则是此时启动的容器ID,这里值得注意的是,容器的ID是随机的,每次关闭容器,再次启动的时候,同一镜像的容器ID会改变。
我们先退出此时的容器
再次启动,Centos镜像的容器,观察容器ID变化
可以看出,容器的ID确实已经改变,这也确确实实说明容器的ID是随机的,并不是一层不变的
那么,镜像的ID会不会改变呢?
我们先停止Docker服务
然后,重新启动Dockers服务
再次查看,镜像ID
可以看出,我们镜像没有发生改变!但是,若是删掉了镜像在重新Pull该镜像的话,镜像ID会发生改变!
启动容器(此时以守护进程启动)
docker run -d 镜像名/镜像ID
我们以守护运行容器
查看此时的容器运行情况
发现,并没有任何容器在运行,这是为什么呢?
这是因为Docke的机制问题: Docker容器后台运行,就必须有一个前台进程。 容器运行的命令如果不是那些一直挂起的命令,就是会自动退出
所以,不是所有的容器实例都可以作为守护式进程启动
我们可以选择方便的redis作为实例,体会Docker的守护式进程启动
拉取redis:6.0.8镜像
启动redis
docker run -d redis:6.0.8
可见,在Docker上确实启动了redis服务并且是以守护式启动
进入正在运行的容器并以命令行交互
docker exec -it 容器ID
exec 是在容器中打开新的终端,并且可以启动新的进程 用exit退出,不会导致容器的停止。在日后的容器操作中,多使用此命令最好。
查看日志
docker logs 容器ID
查看容器内部细节
docker inspect 容器ID
容器的内部是一系列的json串,详细描述了容器的一切信息
以上就是对Docker容器的一些简单介绍了