前面讲到镜像的常用命令,其实镜像就差不多等于一个软件,我们把他下载下来。
容器就是启动起来的一个实例化,开多个容器就是多个实例化,可以理解为多开游戏。
像玩什么梦幻西游啊,这种可以组队的游戏,我们可以只需要安装一个梦幻西游,就可以开启多个客户端,登录多个账号。
然后来讲一下容器的常用命令。
容器启动
首先还是先装个镜像,比如centos.
docker pull centos
可以看到这个centos才200多M,不然平时去下一个镜像来装虚拟机都要6、7个G呢。
安装好了镜像就可以启动容器了。
docker run [可选参数] image
#可选参数
--name=”参数" 容器名称,如centos01 cantos02 如同分布式那般区分
-d 以后台的形式启动,类似linux的nohup
-it 以交互的方式启动运行,如直接启动
-p 用于指定容器的端口, 如 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P 大写的P随机指定一个端口
这里我们以交互(启动并进入)的形式启动一个centos的容器
docker run -it centos /bin/bash
可以直接用exit退出
如果你直接run 没有-it 进去,也可以选择下面这种方式进入
docker attach 容器id
容器查看
我们还可以查看正在运行的程序
docker ps
因为刚才退出了,所以现在没有正在运行的程序。
还可以加个-a 来查看曾经运行过的程序
docker ps -a #代表all 所有程序
-n=? #显示最近创建的几个程序如n=1 就是展示一条
-q #只展示id
#也可以-aq的组合来展示最近的程序的id
容器退出
除了上面讲的直接输入exit退出,还有别的方式。
同时按Ctrl + P + Q 将容器后台挂起。
但是很坑爹的是!mac的快捷键,我之前不是调过了吗!适配windows。
但是现在就变成我按ctrl+Q时,程序直接就被关闭了!有毒。
可以改一下其他的快捷键,直接把那个快捷键占用掉,我建议不管是不是因为这个都把他关掉了。
因为我们现在基本用不到这个功能,真要关手动关就好了!总比不小心直接关掉程序的好!
但是还有个坑爹的是,因为mac没有x-shell,所以我搜了个叫Royal TSX,然后按了上面那个快捷键,弹出了一个它的帮助,我也是醉了!
不过这都不是问题,苹果的快捷键我都改了,你一个小软件还能难得住我?
好吧,确实是挺难的,因为全英文界面!
所以我用idea了!idea也是可以连的!其实也很简单那,在上面的Tools里面有个Start SSH Session,然后输入一下ip和账号密码就能连接上了!
然后idea也是有这个快捷键的,这就好处理多了!
然后还是不行,我发现你大爷的,是上面那个app快捷键,我设置成了帮助,所以才按了就有帮助!
于是我就去把那个选项去掉了,然后你大ye的,退出又生效了,我又生一致,手动设置关闭的快捷键,总算解决了!
然后回到主题,草,还是不行!就很气!
所以我把切换输入法的快捷键改成这个了,跟我斗!
然后我再试一下那个快捷键,还不行,我就去找别的办法,我就不信了,一个linux的用啥快捷键!
好吧!还是不行,刚才抽空写了个 idea连接ssh服务器的方法,有兴趣的可以去我的主页翻翻。
或者传送门: idea设置SSH远程连接服务器 并保存账号密码
容器删除
容器删除有两种简单的方法,跟linux差不多
docker rm 容器id
docker rm -f 容器id
这两种删除方法的区别是,-f可以删除正在运行的容器,反之则不行。
容器启动与停止
#启动
docker start 容器id
#重启
docker restart 容器id
#关闭
docker stop 容器Id
有好奇心的同学就会问了,这个start和run有什么区别呢?
区别就在于run是等于新建了一个容器并启动,也就等于creat+start
而start只能启动已经存在的容器。
从命令上也可以看出,run命令后面可以是容器名,也可以是容器id,而start却只是容器id。
后面我们在run的时候给容器取个别名的时候,就可以直接通过别名来start,但是却不能run了,因为run会去创建,但是我们已经存在这个别名的容器了,所以再创建就不让了。
不像默认使用id的话,id是不会有冲突的。
还有就是stop和exit也是有区别的,exit只是退出容器,容器没被docker杀掉的话,就还会运行。而stop则是直接停止容器运行!
容器批量操作
比如我们测完了容器,要把他批量删除,总不能一个一个id去删除吧!那不得累死!
我们可以用注入的方式,将查出来的结果注入进去
docker rm -f $(docker ps -a -q)
对于java程序员很不友好的一点是,我们都是用美元大括号,他们这里用小括号!我也是醉了!
查看日志
跟我们平时在linux上看日志其实差不多,不过这里的tail要指定一个数量显示多少条,然后就可以看着个容器的日志了。
docker logs -tf --tail number 容器id
查看进程
docker top 容器id。
因为docker开启centos后,一个光秃秃的centos并没有什么前台应用,所以docker就会认为你占着茅坑不拉屎,就把你干掉了。
所以我们要给这个centos找点事情干,比如让他一直输出。
docker run -d centos /bin/sh -c "while true;do echo linnine;sleep 1;done"
这样我们就可以看到日志一直刷了。
然后看看我们的进程,要有启动的才能看进程,实验完记得关掉这个容器。
比起linux弱一点的是,只能通过容器id查看,不能通过容器名查看,可能是我知道的少吧!
看出元数据
当我们想看这个镜像的详细信息时,就可以用这个命令看一下了,里面的内容还是挺多的,有兴趣的可以自己去翻翻
docker inspect 容器id