2、docker
先看公司手册安装docker和了解
2.1.镜像、容器、仓库的概念
镜像:images:
docker镜像类似于就是模板,可以通过模板来创建容器服务。以tomcat镜像==>运行就会生成一个个容器,提供服务的容器,一个镜像可以提供多个容器,(最终服务运行或者项目运行都是在容器中的)
容器:container
docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的。
容器的基本命令(启动,停止,删除,…)暂时可以理解为容器为一个简易的微小裁剪的linux系统。
仓库repository:
存放镜像的地方,仓库分为公有的私有的,类似于github。
一般的仓库都是国外的,因此要配置镜像加速。
2.2、docker的原理
docker类似裁剪版的系统一样,我们使用一般是去仓库下载镜像,然后通过镜像可以启动容器,最后进入容器里面就可以进行开发配置了。
2.3、docker常见命令
docker官方文档:Reference documentation | Docker Docs
镜像相关
#docker安装完成之后可以查看版本确定安装成功
docker version
#去仓库搜索指定的镜像,然后可以通过搜索到的镜像名去下载
docker search xxx
#去仓库下载镜像
docker pull 镜像名xxx
#查看所有镜像
docker images
#镜像删除
docker rmi [image]
容器相关
#新建并启动容器 (不同的容器可以百度他的启动参数如何配置)
docker run [可选参数] imagename
#可以配合docker-compose.yml文件配置的容器来启动
docker-compose up -d
#查看正在运行的容器
docker ps
#查看所有容器(包括历史的和正在运行的)
docker ps -a
#退出容器后台
exit
#删除容器
docker rm 容器id 不能删除正在运行的容器,
#容器的启动停止
docker start 容器id
docker restart 容器di
docker stop 容器di
docker kill 容器di
#进入容器 常见的
docker exec -it 容器id bash
#容器内容拷贝到主机
docker cp 容器id:容器路径 主机地址
2.4、docker compose
docker compose 是docker的另一个子项目,可以更加方便地在本地或生产环境中管理多个 Docker 容器。通过定义 Compose 文件也就是YAML 格式的配置文件,您可以轻松地启动、停止、重新构建、扩展和升级整个应用程序的不同组件,定义了应用程序的各个组件、每个组件对应的 Docker 镜像、相应的服务、网络等。
2.4.1、命令学习
#启动docker容器,会先下载镜像,再运行容器
docker-compose up
#后台运行
docker-compose up
#停止服务
docker-compose stop
#重启所有服务
docker-compose restart
#恢复开始
docker-compose start
2.4.2、yaml配置文件说明
Compose 文件使用 YAML 格式定义应用程序的组件、服务、网络和卷等
示例
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
dapr_camera:
image:"xxx"
netword_mode:host
container_name:dapr_camera
working_dir:/app/build
restart:always
logging:
driver:"json-file"
option:
max-size:"500m"
max-file:"3"
volumes:
- ../../senConfig:/app/build/senConfig
command:bash -c "xxx/xx.sh"
#command:bash -c "tail -f /dev/null"
version #版本
services:#定义要启动的服务列表及每个服务的配置。
web、redis、dapr_camera:#表示具体的服务名称,下面的项表示该服务的相关配置
build:#需要构建镜像时使用的,是指构建镜像的dockerfile的上下文。
ports: #指定端口映射规则,将主机的端口映射到容器中的端口
- "5001:5000" #表示容器的5000端口对应主机的5001端口
image:#指定要使用的 Docker 镜像名称,如果不存在,则自动从 Docker Hub 下载。
netword_mode:#指定网络的模式,可以是host、bridge、none。
[host表示与宿主机共享网络,也就是在网络这块不会与宿主机隔离,而是共享宿主机的网络配置,并且 容器不会分配自己的ip地址由于不需要端口映射,host网络的性能较高.]
[bridge,即桥接网络,以桥接模式连接到宿主机,创建一个独立网络可以通过自定义bridge将多个容器互通]
[none, 无网络,容器将无法联网。]
[overlay.用于swarm集群中容器的跨主机网络访问]
container_name:起来容器的名称
restart:重启方式,是否会启动服务程序
logging:日志记录配置。
volumes:是将主机上的文件或目录与容器中的文件或目录进行映射,实现数据共享的功能。宿主机目录:容器目录
command:容器启动后默认执行的命令
docker compose logs | Docker Docs
2.5、docker容器打包成镜像
docker commit -a "name" -m "备注" containID mirrorsName
#然后就可以docker images查看得到了
#登录docker镜像私有网络
docker login xxx网址
#上传镜像到镜像服务器
docker push mirrorsName