docker命令
docker帮助命名
docker version #查询版本号
docker info #docker更加详细信息,包括镜像和容器的数量
docker 命令 --help #万能命令(帮助命令)
镜像命令
docker images
列出docker的所有镜像
docker pull 镜像名(centos):版本
拉取一个镜像,先看本地有没有,没有就拉远程,不加版本号,默认latest最新的
docker rmi -f 镜像id
删除镜像id
容器命令
docker ps a
查看所有的容器命令
docker ps
查看已经启动的容器命令
docker start 容器id
启动一个已停止容器的命令
docker stop 容器id
停止一个容器的命令
docker restart 容器id
重启一个停止容器的命令
docker rm -f 容器id
删除容器
新建容器并启动
docker run 【可选参数】 images(镜像id)
#参数说明
--name="Name" 容器名字 tomcat01 tomcat02,用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080 主机和容器映射
-p ip:主机端口:容器端口(常用)
-p 主机端口:容器端口(常用)
-p 容器端口
-P 随机指定端口
#从容器退回主机
exit
退出容器
exit #直接退出容器
ctrl + p + q #容不停止退出
进入容器
docker attach 容器id #进入容器内部,但退出容器终端的话,会导致容器停止
docker exec 容器id #进去容器内部。但退出容器终端的话,不会导致容器停止
commit 镜像(提交镜像)
# 测试
容器数据卷
什么是容器数据区卷
将应用和环境打包成一个镜像
数据?如果数据都在容器中,那么我们容器删除,数据也会丢失,需要==数据可以持久化==
容器之间可以有一个数据共享的技术。docker容器产生的数据,可以同步到本地
这就所谓的卷,目录的挂载,将我们容器内的目录,挂载到liunx上面
使用数据卷
方式一:直接使用命令来挂载 -v
docker run -it -v 主机目录:容器目录
# 启动起来时候我们可以通过docker inspect 容器id,看具体是怎么被挂载的
DokerFile
DokerFile网络
自定义网络
查看所有的docker网络
# docker network ls
网络模式
bridge:桥接docker(默认)(自己创建也使用bridge模式)
none:不配置网络
host:和宿主机共享网络
container:容器网络连接(用的少,局限很大)
测试
#我们直接启动的命令 --net bridge,而这个时默认存在的
docker run -d -P --name wzh -net bridge(默认)
# docker默认的,域名不能访问 ----link可以打通
# 自定义网络
# --driver bridge 哪个网络模式
# --subnet 192.168.0.0/16 子网
# --gateway 192.168.0.1 mynet
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
查看网络
# docker network inspect composer_default 查看当前下的composer_default
docker compose
安装
## 下载安装
sudo curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 赋权
sudo chmod +x /usr/local/bin/docker-compose
# 执行
docker-compose version #查看版本
体验
#执行运行dockercomposedocker-compose up
## 后台运行
docker-compose up -d
## 编译并运行
docker-compose up --build
[root@localhost composer]# docker service lsError response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
默认服务名 文件名_服务名_num
.
多个服务器,集群,A B num副本数量
服务器redis服务=》4个副本
网络规则
使用docker-composer会创建一个网络规则
composer自动维护网络,(项目中的内容都再同一个网络下。域名访问)
mysql:3306
10个容器实例:mysql
如果在同一个网络下,我们可以直接通过域名访问
停止:docker-composer down
或者ctrl+c
image-20211202163120976.png
docker-compose
docker-compose。通过docker-compose编写yaml配置文件,通过compose一键启动所有服务和停止!
docker小结
1.docker镜像。run=》容器
2.DockerFile构建镜像(服务打包)
3.Docker-compose启动项目(编排,多个微服务、环境)
4.docker网络!
yaml规则
docker-compose.yaml 核心。!
#3层!
version:'' #核心
services: #服务
服务1:web
#服务配置
images
bulid
network
----
服务2:redis
---
服务3:redis
----
#其他配置 网络/卷,全局规则
volumes:
networks:
configs:
docker Swarm
查看docker Swarm
查看docker swarm --help #帮助命令
managers :工作管理节点(主节点)
workers:工作节点(子节点)
搭建集群
初始节点: docker swarn init
加入一个节点: docker swarm join
获取令牌
#获取令牌
docker swarm join-token manager
docker swarm join-token worker
查看节点信息:docker node ls
Raft协议
双主双从:
Raft协议:能保证大多数节点存活才可以用,只要》1,集群至少大于3台
描述:1.将docker1机器停止,宕机!双主,另外一个主节点也不能使用了
体会
弹性,扩容,集群
docker run
告别
docker-compose up
!启动一个项目(单机)
集群:swarm docker service
容器 =>服务
集群:高可用
容器=》服务
redis =》服务!-》副本
redis服务=》10个服务
体验:创建服务,动态扩展服务,动态更新服务
#创建服务(跟docker run 一样)
docker service create 镜像名 --name -p 8888:80
#查看服务镜像是否启动
docker service ps 镜像名
#查看所有启动服务的信息
docker service ls
#查看单个服务的详情信息
docker service inspect my-nighx
#创建几个副本(容器)
docekr service update --relicas 3 my-nginx(动态扩缩容)
docker service scale my-nignx=5(动态扩缩容)
# 删除服务
docker service rm my-nginx
dfdf
dfdf
df
df
df
df
df
大幅度发
OωO