述
前文中简单的了解了一下docker,也在CentOS7的环境下安装了docker,那下面就来看一下docker中的一些基本的操作
查看容器
查看正在运行的容器
1 | docker ps |
查看所有容器
1 | docker ps -a |
查看最近创建的容器
查看最近创建的一个容器:1
docker ps -l
查看最近创建的x个容器1
docker ps -n=x
返回值详解
- CONTAINER ID: 容器的唯一ID,是一个64位的十六进制整数,在不会混淆的情况下,可以只采用id的前几位进行标识一个容器
- IMAGE: 表示创建容器时所使用的镜像
- COMMAND: 表示容器最后运行的命令
- CREATED: 创建容器的时间
- STATUS: 容器的状态,这里可能显示一个容器的启动时间也可能是容器的关闭时间,具体要看容器当前的状态
- PORTS: 容器对外开放的端口
- NAMES: 容器的名字,如果不设置,会有一个默认的名字
创建容器
docker创建容器有两种方式,一种是创建完成直接启动,一种是先创建,完了再去启动,两种方式其实是差不多的,当执行一个创建命令后,docker首先会去本地路径下找是不是有相应的镜像,如果没有的话就去docker hub上去搜索,搜到了的话先下载下来,然后再用刚下载下来的镜像创建[启动]容器.
容器的文件系统是在只读的镜像文件上添加一层可读可写的文件层,这样可以使在不改变镜像的情况下,只记录改变的数据.
创建一个容器不启动
使用以下命令可以创建一个容器但是不启动,创建完成之后容器的状态处于停止状态:1
docker create 镜像ID/镜像名
举个例子,比如我们要创建一个nginx的容器,命令如下:1
docker create nginx
首先它会先看我本地有没有这个nginx的镜像,发现并没有,然后就去docker hub里面去下载这个镜像,下载的版本是最新的镜像,下载完成之后再用刚下载下来的镜像去创建容器
然后创建完成之后用docker ps -a
查看一下,可以看到他的状态是Created,并没有启动,然后名称是一个默认的名称
这里我们也可以指定名称去创建容器,如下:1
docker create --name=nginx nginx
这次创建我们本地有了镜像之后,就直接创建了不用再去docker hub去下载了
上面创建了容器之后,并没有去启动,下面再来看下直接创建并启动
创建容器并启动
使用docker run
命令可以创建并启动一个容器,这个命令又可以启动两种不同模式的容器:后台型容器和交互型容器
后台型容器就是一个在后台运行的容器,不需要和开发者进行交互,而交互型容器则需要接收开发者的输入进行处理给出反馈,在实际使用中,大部分情况都是创建后台型容器,不过在很多时候,后台型容器也不可避免进行交互
后台型容器
还是以nginx为例,命令如下:1
docker run --name nginx -d -p 8080:80 nginx
- –name 创建的容器名称
- -d 表示容器在后台裕兴
- -p 将容器的80端口映射到宿主机的8080端口
- nginx 使用的镜像的名字/这里也可以替换成镜像的id
创建好了之后,可以看到他已经运行起来了,这时候我们就可以通过ip和端口访问了,如下:
这就是一个后台型容器的基本创建方式,再来看一下交互型容器
交互型容器
比如要创建一个ubuntu容器,开发者可能需要在ubuntu上面输入命令执行相关操作,创建方式如下:
1 | docker run --name ubuntu -it ubuntu /bin/bash |
- it: i表示开发容器的标准输入(STDIN),t表示告诉docker,为容器创建一个命令行终端
上图中,第一次创建是失败了,拉取镜像超时了,这是因为天朝网络的原因,多试几次就好了
然后拉取下来创建完成之后,进入了一个命令终端,在这个终端里面就可以操作我们刚创建ubuntu了
最后操作完成之后使用exit
命令就退出去了,退出的同时,这个容器就关闭了,并不会后台运行,等我们下次再手动启动这个容器的时候就变成了后台运行的了
后台型进行交互
我们上面创建的后台型容器如何进行交互呢, 也就是说怎样进入容器内部呢? 可以使用以下命令:1
docker exec -it 容器id/容器名称 /bin/bash
-ti的意思还是和上面一样的,就不多说了,退出容器用exit命令就退出了