docker知识点大全 中间件部署 常用指令
2022-03-02 20:21:39 68 举报
AI智能生成
docker应用 快速学习入门 部署常用组件
作者其他创作
大纲/内容
登录容器
docker exec -it 容器名称|容器id /bin/bash
数据目录挂载
在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。使用 -v 选项
docker run -id -v /宿主机绝对路径目录:/容器内目录 --name=容器名 镜像名
docker run -id -v /opt:/opt --name=mycentos3 centos:7
只读(Read-only)权限
docker run -id -v /宿主机绝对路径目录:/容器内目录:ro --name=容器名 镜像名
docker run -id -v /dataHost:/dataContainer:ro --name=mycentos4 centos:7
查看容器内部细节
docker inspect mycentos2
容器IP地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos2
删除容器
删除指定的容器
只能删除停止的容器
docker rm 容器名称 | 容器ID
删除所有容器
中运行中的容器无法删除,所以先停再删
docker rm `docker ps -a -q`
部署应用
MySQL 部署
拉取MySQL镜像
docker pull mysql:5.7
创建 MySQL 容器
docker run -id --name=cz_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
进入MySQL容器, 登陆MySQL
docker exec -it mxg_mysql /bin/bash
mysql -u root -p
Redis 部署
拉取Redis镜像
docker pull redis
创建Redis容器
docker run -id --name=cz_redis -p 6379:6379 redis
Tomcat 部署
拉取tomcat镜像
docker pull tomcat:8
创建tomcat容器
创建tomcat容器用于 Web应用,并且进行目录映射
docker run -id --name=cz_tomcat -p 8888:8080 -v /usr/local/project:/usr/local/tomcat/webapps --privileged=true tomcat:8
-p 表示地址映射, 宿主机端口号:容器运行端口号<br><br>-v 表示地址映射, 宿主机目录:容器映射目录<br><br>--privileged=true 如果映射的是多级目录,防止有可能会出现没有权限的问题,所以加上此参数
在宿主机的 /usr/local/project 目录创建cz目录,往里增加一个 hello.html 文件
http://192.168.10.11:8888/cz/hello.html
RabbitMQ 部署
拉取 RabbitMQ 镜像
docker pull rabbitmq:management
注意:如果docker pull rabbitmq 后面不带management,启动rabbitmq后是无法打开管理界面的,所以我们要下载带management插件的rabbitmq.
创建 RabbitMQ 容器
方式一
创建镜像(默认用户名密码),远程连接端口5672,管理系统访问端口15672,默认用户名: guest ,密码: guest
docker run -id --name=cz_rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
方式二
启动镜像(设置用户名密码)
docker run -id --name=cz_rabbitmq -e RABBITMQ_DEFAULT_USER=username -e RABBITMQ_DEFAULT_PASS=password -p 5672:5672 -p 15672:15672 rabbitmq:management
访问Rabbit管理界面
访问管理界面的地址是 http://[宿主机IP]:15672 , 如:http://192.168.10.11:15672,默认 guest 用户,密码 guest
zk部署
<br>docker search zookeeper<br><br>docker run -d -p 2181:2181 --name=cz_zookeeper --privileged zookeeper
nacos部署
docker pull nacos/nacos-server<br><br>docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server<br><br># 登录密码默认nacos/nacos<br><br># standalone代表着单机模式运行,非集群模式
es\kibana部署
docker pull elasticsearch:7.2.0<br><br>docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -d elasticsearch:7.2.0<br><br>curl http://localhost:9200
docker pull kibana:7.2.0<br><br>docker run --name kibana --link=elasticsearch:test -p 5601:5601 -d kibana:7.2.0<br><br>docker start kibana<br><br>docker run --name kibana --link=elasticsearch:test -p 5601:5601 -d kibana:7.2.0<br><br>docker start kibana
备份与迁移
容器保存为镜像
docker commit [-m="提交的描述信息"] [-a="创建者"] 容器名称|容器ID 生成的镜像名[:标签名]
查看是否有挂载目录
docker inspect --format='{{.Mounts}}' 容器名
无目录挂载-容器保存为镜像
docker commit mycentos2 mycentos_new:1.1
mycentos2 是容器名称<br><br>mycentos_new 是新的镜像名称
创建并登录容器
docker run -it --name=mxg_mycentos_new mycentos_new:1.1 /bin/bash
有目录挂载情况(难点)
问题: 如果Docker对容器挂载了数据目录, 在将容器保存为镜像时,数据不会被保存到镜像中。<br><br>原因:因为宿主机与容器做了路径映射,再commit一个新的镜像时,该路径下的所有数据都会被抛弃,不会<br><br>被保存到新镜像中。可通过 docker inspect --format='{{.Mounts}}' 镜像名 查看是否有目录挂载.<br><br>解决:目录挂载方法。先把在宿主机的数据备份在某个目录下,在 docker run 的时候使用-v参数将宿主机上的<br><br>目录映射到容器里的目标路径中(tomcat是 /usr/local/tomcat/webapps ,mysql是 var/lib/mysql )<br><br>拷贝方法。先把在宿主机的数据备份在某个目录下,通过拷贝的方法 docker cp 将备份的数据复制进容<br><br>器里的目标路径中(tomcat是 /usr/local/tomcat/webapps ,mysql是 var/lib/mysql )
备份镜像
docker save -o mycentos.tar mycentos_new:1.1
-o 指定输出到的文件<br><br>执行后,运行 ls 命令即可看到打成的tar包, 因为有463M所以打包要一会
镜像恢复与迁移
删除掉 mycentos_new:1.1 镜像(注意先停止并删除所有引用了的容器)<br>
docker rmi mycentos_new:1.1<br>
行恢复 mycentos_new:1.1 镜像
docker load -i mycentos.tar
Dockerfile语法
用于构建一个新的Docker镜像的脚本文件,是由一系列命令和参数构成的脚本
构建新的镜像步骤
1. 编写 Dockerfile 文件<br><br>2. 通过 docker build 命令生成新的镜像<br><br>3. 通过 docker run 命令运行
语法规则
1. 每条指令的保留字都必须为大写字母且后面至少要有一个参数<br><br>2. 执行顺序按从上往下执行。<br><br>3. # 用于注释<br><br>4. 每条指令都会创建一个新的镜像层,并对镜像进行提交
执行流程
1. Docker 从基础镜像运行一个容器<br><br>2. 执行每一条指定并对容器作出修改<br><br>3. 执行类似 docker commit 的操作提交一个新的镜像层<br><br>4. docker 再基于刚提交的镜像运行一个新容器<br><br>5. 执行 Dockerfile 中的下一条指令直到所有指令都执行完成
常用指令
列出已安装所有镜像
docker images
只显示镜像ID
docker images -q<br>
拉取镜像
docker pull 镜像名:标签名<br>
删除镜像
docker rmi 镜像ID
查看容器
查看正在运行容器
docker ps<br>
查看所有的容器(启动与未启动的容器)
docker ps -a<br>
查看最后一次运行的容器
docker ps –l
查看停止的容器
docker ps -f status=exited<br>
查看容器的cpu占用率
docker stats
查看容器日志
docker logs -f -t --tail 100 容器id
创建容器
docker run [OPTIONS] 镜像名:标签名<br>
OPTIONS
-i 表示交互式运行容器(就是创建容器后,马上会启动容器,并进入容器 ),通常与 -t 同时使用
-t 启动后会进入其容器命令行, 通常与 -i 同时使用; 加入 -it 两个参数后,容器创建就能登录进去。即分配一个伪终端
--name 为创建的容器指定一个名称
-d 创建一个守护式容器在后台运行,并返回容器ID
-v 表示目录映射, 格式为: -p 宿主机目录:容器目录
-p 表示端口映射,格式为: -p 宿主机端口:容器端口
交互式容器
创建容器后,马上会启动容器,并进入容器
docker run -it --name=mycentos centos:7 /bin/bash
守护式容器
果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器(后台运行的容器)
docker run -id --name=mycentos2 centos:7
退出容器
退出并停止当前容器, 注意在容器内部的命令行执行
exit
退出不停止当前容器
Ctrl + p + q
启动容器
docker start 容器名称|容器id
docker start `docker ps -a -q`
启动所有运行过的容器
docker start `docker ps -a -q`
停止容器
停止正在运行的容器(正常停止)
docker stop 容器名称|容器id<br>
强制停止正在运行的容器
docker kill 容器名称|容器id<br>
停止所有在运行的容器
docker stop `docker ps -a -q`
自由主题
0 条评论
下一页