上一篇我们说了一些基本的命令,这一篇我就来对其他常用命令进行补充和基础实战。
docker run -d 镜像名
这里有个坑,docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用启动服务,没有前台进程,就会自动停止。
docker logs -tf -n 容器id
n为显示条数
docker logs -t -f --tail + num +容器id
num为显示条数
可以自己编写一段脚本进行检验:
docker run -d centos /bin/sh -c "while true; do echo hello world; sleep 2;done "
docker logs --help
查看日志命令帮助
docker top + 容器id
docker inspect + 容器id
docker exec -it 容器id bashShell
进入容器后开启一个新的终端(常用),可以在里面操作
docker attach 容器id
直接进入当前正在执行的终端,不会启动新的进程
docker cp 容器id:容器内路径 目的的主机路径
我们先在容器内创建一个helloDocker.py文件,可以看到当我用exec
方式进入再退出该容器依旧存在,当我用attach
进入再退出时该容器就停止了!这也对应了上一个命令的解释。
docker cp
命令是不管你容器停止还是运行都可以进行复制拷贝的只要你不把该容器删除就可以进行拷贝。
如图,已经将文件拷贝过来了!
docker stats
查看状态时是会每秒刷新的!
我们测试elasticsearch就不傻乎乎的直接安装官方文档给的命令执行,因为我的服务器是学习机,而elasticsearch又是非常的占内存的,如果直接按照官方文档进行安装我的服务器很卡爆所以我们需要对安装命令进行修改,当然如果你的服务器或虚拟机的内存比较大或者你就是想尝试一下也可以直接安装,到时
stop
掉它就行。
官方命令:docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
这里-- net
网络配置也可以先不配后续再来,然后使用-e
来配置最小和最大的占用内存
修改为:docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:8.2.0
可以看到已经运行成功了,
可以看到已经限制了大小了并且操作起来也不会卡了。
首先如果你需要选择版本的话推荐官网搜索,不然的话也可以直接命令搜索。
下载nginx
上图中的容器名应该为镜像名才对 (打错字懒得改了)
同时我们也可以用
docker run -it --rm + 镜像名:tag
来进行测试。这种情况就是用完立即删除容器,一般做测试使用。
接下来我就带大家提交一个镜像,命令:
docker commit -a="作者名" -m="提交说明" 容器id 容器名(自定义):tag
首先我先从本机拷贝过去一份,当然也可以用数据卷,但是这放到下一篇说我们先用一些比较简单的方式操作。
docker cp 本机路径 容器id:容器路径
这里我用nginx演示
可以看到我自己的html已经拷贝成功了,这时我们要想保存这个容器持续使用就可以用提交命令进行提交生成一个新的镜像,后续还可以push到仓库就像我们常常提交代码到github一样把镜像提交到dockerHub这样就可以直接下载你的镜像进行使用。
这样就生成了一个新的镜像了。这个应该很好理解。
然后我们也可以直接试试这个镜像啊,先停止之前运行的那个nginx容器,再来试。
这时再去网页试试,欧克已经成功了。网页链接在这,大家也可以去玩玩。
看完的同学多去实践手敲,就基本算是入门了!