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容器:容器就是镜像运行起来提供服务

Dockerfile指令

posted @   李沅洲也  阅读(167)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示