docker部署项目命令
Docker介绍
Docker的三个基本概念:
Image(镜像)
Container(容器)
Repository(仓库)Docker的思想来自于集装箱,集装箱解决了什么问题?
在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱.还不懂得话,在这么理解,docker你理解为快递车.
那么快递车是不是有一个个包裹,包裹可以理解为一个镜像,镜像可以理解为一个Java类,而容器可以理解为Java类的实例。
类只有一个,但可以new出千千万万个实例对象。所以,镜像只是一个可以生成容器的东西,而容器才能让程序运行起来。仓库的话,比如说,都应该用过git吧,完全可以理解为git,上传拉取操作
那么docker有什么好处呢?
最简单的一个例子,比如说,你在刚开始的一台服务器部署项目,那么部署项目一定要配置mysql等环境是吧
那么现在你要吧这个项目迁移到另一台服务器上,又要重写在另一台服务器上重写配置mysql等环境.可能会出现版本错乱等错误,很麻烦
那么现在第一次部署项目的时候,把项目等环境直接放进docker里面,下次你要迁移项目到另一台服务器上,自己把docker镜像上传到docker仓库上,然后再另一台服务器拉取就直接O了,这只是好处之一。
Docker常用命令
查看 Docker 版本
docker --version
启动 Docker 服务
systemctl start docker
停止 Docker 服务
systemctl stop docker
重启 Docker 服务
systemctl restart docker
查看 Docker 服务状态
systemctl status docker
拉取镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
- OPTIONS:可选参数,可以用来指定拉取镜像时的一些选项,比如认证参数等。
- NAME:镜像的名称,这是必须指定的。
- TAG:镜像的标签,用于区分同一个仓库中的不同版本。如果不指定,通常默认为 latest,即最新版本。
- DIGEST:镜像摘要,是一个唯一标识符,用来确保拉取的是确切的镜像版本。
创建镜像
docker build -t 镜像名称:版本号 .
注意最后需要有一个空格和点
列出镜像
docker images | grep 镜像名
删除镜像
docker rmi 镜像名称:版本号
运行容器
sudo docker run -d -p 后端端口号:后端端口号 --name 镜像名称 镜像名称:版本号 sudo docker run -d -p xxx:xxx --name xxx xxx:v1.0
列出容器
docker ps | grep 容器名
删除容器
docker rm 容器名
一般删除之前需要先停止容器
停止容器
docker stop 容器名
进入容器
docker exec -it 容器id /bin/bash
查看容器日志
docker logs 容器名
退出容器
exit
Docker Compose常用命令
Docker-Compose 是用来管理容器的,类似用户容器管家,我们有N多台容器或者应用需要启动的时候,如果手动去操作,是非常耗费时间的,如果有了 Docker-Compose 只需要一个配置文件就可以帮我们搞定,但是 Docker-Compose 只能管理当前主机上的 Docker,不能去管理其他服务器上的服务。意思就是单机环境。docker-compose是基于docker的编排工具,使容器的操作能够批量的,可视的执行,是一个管理多个容器的工具,比如可以解决容器之间的依赖关系,当在宿主机启动较多的容器时候,如果都是手动操作会觉得比较麻烦而且容器出错,这个时候推荐使用 dockerd的单机编排工具 docker-compose。
- 构建镜像并启动容器
docker compose up -d --build