Docker 的常用命令
帮助命令
1 | docker version # 显示docker的版本信息 |
帮助文档的地址:https://docs.docker.com/engine/reference/commandline/docker/
镜像命令
docker images 查看所有本地主机上的镜像
1 | [root@iz2zeihuhu3ktzymn2ydktz home]# docker images |
**docker serach **搜索镜像
1 | [root@iz2zeihuhu3ktzymn2ydktz home]# docker search mysql |
docker pull 下载
1 | 下载镜像 docker pull 镜像名[:tag] |
删除镜像
1 | docker rmi -f 镜像id # 删除指定的容器 镜像id |
容器命令
说明:我们有了镜像才可以创建容器Linux,下载一个centos来进行学习
1 | docker pull centos |
新建容器并且启动
1 | docker run [可选参数] image |
列出所有正在运行中的容器
1 | docker ps 命令 |
退出容器
1 | exit #直接停止容器并且退出 |
删除容器
1 | docker rm 容器id # 删除指定的容器, 不能删除正在运行的,要删除的rm-f |
启动和停止容器的操作
1 | docker start 容器id # 启动容器 |
常用其他命令
后台启动容器
1 | 命令 docker run -d 镜像名 |
查看日志
1 | docker logs -f -t --tail 容器,没有日志 |
查看容器中的进程信息
1 | 命令docker top 容器id |
查看镜像的元数据
1 | 命令 |
进入当前正在运行的容器
1 | 我们通常容器都是用后台方式运行的,需要进入容器,修改一些配置 |
从容器内拷贝文件到主机上
1 | docker cp 容器id:容器内路径 目的主机路径 |
小结
1 | attach Attach to a running container #当前she1l下attach连接指定运行镜像 |
作业联系
Docker 安装Nginx
1 | # 1. 搜索镜像 search 建议大家去dockerhub上下载,这里可以看见全部的文档信息 |
端口暴露的概念
思考问题:我们每次改动nginx配置文件,都需要进入容器内部?十分麻烦,我要是可以在容器外部提供一个映射路径,打到在容器修改文件名,容器内部就可以自动修改。 -v 宿主机
作业:安装一个tomcat
1 | 官方的使用 |
思考问题:我们以后要部署项目,如果每次都要进入容器是不是十分麻烦?我要是可以在容器外部提供一个可以映射的路径,webapps,我们在外部放置项目,就自动同步到内部就好了
docker 容器tomcat+网站 docker mysql
作业3:
不是es+kibana
1 | es 很卡,请直接去狂神 官网p16看 |
可视化
- Portainer (先用这个)
- Rancher (CI/CD再用)
什么是portainer?
Docker图形化界面管理工具,提供一个后台面板供我们操作
1 | docker run -d -p 8088:9000 \ |
commit 镜像
1 | docker commit 提交容器成为一个新的副本 |
实战测试
1 | 1. 启动一个默认的tomcat |
学习方式说明:理解概念,但是一定要实践,最后实践和理论要结合
1 | 如果你想要保存当前容器的状态,就可以通过commit来提交,获得一个镜像,就好比之前学习VM的时候的快照 |
容器数据卷
什么是容器数据卷
docker的理念回顾
将应用和环境打包成为一个镜像!
数据?如果数据都在容器中,那么我们容器删除,数据就会丢失 ==需求:数据可以持久化==
MySQL,容器删了,删库跑路!==需求:MySQL数据可以存储在本地!==
容器之间可以有一个数据共享的技术!Docker中容器产生的数据来进行同步到本地!
这就是卷技术!目录的挂载,将我们容器内的目录,挂载到Linux上面
一句话:容器的持久化和同步操作!容器间也是可以数据共享的!
使用数据卷
方式一:直接使用命令来挂载 -v
1 | docker run it -v 主机目录:容器内目录 |
测试文件的同步
再来测试!
- 停止容器
- 宿主上修改文件
- 启动容器
- 容器内的数据依旧是同步的
好处:我们以后修改只需要在本地修改即可,容器内会自动同步
实战:安装MySQL
思考:MySQL的数据持久化的问题!
1 | 获取镜像 |
具名和匿名挂载
1 | 匿名挂载 |
所有的docker容器内的卷,在没有指定目录的情况下都是在/var/lib/docker/volumes/xxxx/_data
我们可以通过具名挂载可以方便的找到我们一个卷,大多数情况下我们正在使用具名挂载
1 | 如何确定具体使用的是具名挂载还是匿名挂载,还是指定路径挂载 |
拓展:
1 | # 通过 -v 容器内路径:ro rw 改变读写全写 |
初识DockerFile (之前应用commit)
Docker file 就是用来构建docker镜像的构建文件!命令脚本!先体验一下!通过这个脚本可以来生成镜像,镜像是一层层,脚本是一个个的命令
1 | 创建一个dockerfile 文件,名字可以随机,建议Dockerfile |
1 | 进入我们自己写的镜像 |
这个卷一定有一个外面的目录进行同步
查看一下卷挂载的路径
查看一下卷挂载的路径
这种方式我们未来使用的非常多,因为我们通常会构建自己的镜像!
假设构建镜像时候没有用挂载卷,需要手动镜像挂载 -v 卷名:容器内路径
数据卷容器
多个mysql同步数据!
1 | 启动3个容器,通过我们刚才自己写的镜像启动 |
1 | 测试,可以删除docker01,查看一下docker02和03 是否可以访问这个文件 |
多个mysql实现数据共享
1 | [root@iz2zeihuhu3ktzymn2ydktz ~]# docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql101 mysql:5.7 |
结论:
容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止
但是一旦你持久化到了本地,这个时候,本地的文件不会删除
DockerFile
介绍:
Dockerfile 是用来构建docker镜像的文件!
构建步骤:
- 编写一个dockerfile的文件
- docker build 构建成为一个镜像
- docker run 运行镜像
- docker push 发布镜像(DockerHub,阿里云镜像仓库)
查看一下官方文档是怎么做的?
很多官方镜像都是基础包,很多功能都没有,我们通常会自己搭建自己的镜像
官方既然可以制作镜像
Dockerfile 构建过程
基础知识
- 每个保留关键字(指令)都必须是大写字母
- 执行从上到下顺序执行
- # 表示注视
- 每一个指令都会穿件提交一个新的镜像层并且提交
dockerfile 是面向开发的,我们以后要发布项目,做镜像,都要编写dockerfile文件,这个文件十分简单
docker镜像逐渐成为企业交付的标准,必须要掌握
步骤:开发,部署,运维。。。缺一不可
Dockerfile: 构建文件,定义了一切的步骤,源代码
Dockerimages: 通过DockerFile 构建生成的镜像,最终发布和运行的产品,原来是jar 和war
Docker 容器:容器就是镜像运行起来提供服务器的
DockerFile的指令
以前的话我们是使用别人的,现在我们知道了这些指令后,我们来联系自己写一个镜像
1 | FROM # 基础镜像,一切从这里开始构建 |
Docker网络
Docker Swarm
- Post title:Docker 常用命令
- Post author:Yuxuan Wu
- Create time:2021-02-03 05:07:33
- Post link:yuxuanwu17.github.io2021/02/03/2021-02-03-Docker学习笔记/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.