docker 命令随笔
docker images 查看镜像
"" +ENTER 就可以实现换行
cd / 是跳转到根目录
根目录是所有用户共享的目录
cd /home
cd ~ 和cd $HOME
是跳转到当前用户的家目录
docker version # 显示信息
docker info #显示系统信息,包括镜像和容器的数量
docker 命令 --help # 帮助命令
docker rmi -f 镜像id #删除指定的镜像
docker pull 镜像名称
docker run --name="容器名字" -it 镜像名字 /bin/bash #进入镜像(创建一个容器)****
exit # 退出 停止运行
Ctrl+p+q 退出但不停止运行
进入当前正在运行的容器
我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
命令
docker exec -it 容器id /bin/bash
方式二
docker attach -it /bin/bash
区别
docker exec #进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach #进入容器正在执行的终端,不会启动新的进程
从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 目的地主机路径
查看当前主机目录下
进入docker容器内部
在容器内新建一个文件
将这个文件拷贝出来到主机上
拷贝是一个手动过程,未来我们使用 -V 卷的技术,可以实现
小结
端口暴露
练习2:docker 来装一个tomcat
docker run -it --rm tomcat:9.0
我们之前的启动都是后台,停止了容器之后,容器还能查到,docker run -it --rm,一般用来测试,用完即删除
我们一般先下载,再启动
docker pull tomcat
启动运行
docker run -d -p 3355:8080 --name tomcat01 tomcat
测试访问没有问题
进入容器
发现问题 1.linux命令少了。 2.没有webapps。 阿里云镜像的原因,他默认是最小的镜像,所有的比不要的都剔除掉。
保证最小可运行环境!
联系3 部署es+kibana
es暴漏的端口很多
es十分的耗内存
es的数据一般需要放置到安全目录,挂载
--net somenetwork ? 网络配置 暂时先不说
启动elasticsearch
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:8.3.1
启动了linux就卡住了 (内存不够才会卡)
docker stats 查看 cpu状态
es是十分消耗内存的
卡住只能停止内核 查看 docker stats
测试es是否成功了
赶紧关闭,增加内存的限制
赶紧关闭,增加内存的限制,修改配置文件 -e 环境配置修改
docker run -d --name elasticsearch001 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
查看docker stats 成功限制内存
可视化
portainer(先用这个)
Rancher(CI/CD再用)
####什么是portainer?
Docker图形化界面管理工具!提供一个后台面板供我们操作
*docker run -d -p 8088:9000 *
--restart=always -v /var/run/docker.sock --privileged=true portainer/portainer
访问测试: 外网:8088http://ip:8088
通过它来访问了
平时也不太会用
分层
如何提交一个自己的镜像
commit镜像
docker commit 提交容器成为一个新的副本
** 命令和git原理类似**
docker commit -m"提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]
实战测试
1.启动一个默认的tomcat
2.发现这个默认的tomcat 是没有webapps应用, 是因为镜像的原因,官方webapps是没有文件的!
3.自己拷贝进去基本的文件
4.将我们操作过的容器通过commit提交为一个新的镜像!我们以后就使用我们修改过的镜像即可,这就是我们自己修改的一个镜像
学习方式说明:理解概念,但是一定要世间,最后实践和理论相结合。
如果想要保存当前容器的状态,就可以通过commit来提交,获得一个镜像,就好比我们以前学习vm的时候,快照!
到这里 入门docker
容器数据卷
总结:容器的持久化和同步操作!容器建也是可以数据共享的!
使用数据卷:
方式一:使用命令来挂在 -v
docker run -it -v 主机目录,容器内目录
**查看有没有挂载上去 **
启动起来时我们可以通过 docker inspect 容器id
测试文件的同步
初识Dockerfile
Dockerfile就是用来构建docker镜像的构建文件 !命令脚本
通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个一个的命令,每个命令都是一层!
创建一个dockerfile文件,名字可以随机,建议Dockerfile
文件中的内容 指令(大写)参数
FROM centos
VOLUME ["voume01","volume02"]
CMD echo "...end..."
CMD /bin/bash
这里的每个命令,就是镜像的一层
说明这个卷和外部一定有一个同步的目录
docker inspect 41f788e
测试一下刚才的文件是否同步出去了
这种方式我们未来使用的十分多,因为我们通常会构建自己的镜像!
假设构建镜像时候没有挂在卷,要手动镜像挂载 -v 卷名:容器内路径!
Dockerfile
dockerfile是用来构建docker镜像的文件!命令参数脚本
构建步骤:
1、编写一个dockerfile文件
2、docker build 构建成为一个镜像
3、docker run 运行镜像
4、docker push 发布镜像(DockerHub、阿里云镜像仓库!)
####Dockerfile构建过程
基础知识:
1、每个保留关键字(指令)都是大写字母
2、执行从上到下顺序执行
3、#表示注释
4、每一个指令都会创建提交一个新的镜像层,并提交!
dockerfile是面向开发的,我们以后要发布项目,做镜像,就要编写dockerfile文件
步骤:开发、部署、运维,缺一不可
dockerfile:构建文件,定义了一切的步骤,源代码
dockerimages:通过dockerfile构建生成的镜像,最终发布和运行的产品
docker容器:容器就是镜像运行起来提供服务