首页 > 其他分享 >狂神--Docker

狂神--Docker

时间:2023-02-05 19:33:24浏览次数:42  
标签:容器 run -- redis conf docker Docker 狂神

官网地址 官网 https://www.docker.com/ 官方文档Docker文档是超详细的 https://docs.docker.com/ 仓库地址 https://hub.docker.com/ 名词解释
镜像(image) Docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像 ===> run ===> tomcat01容器, 通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)
容器(container) Docker利用容器技术,独立运行一个或者一组应用, 通过镜像来创建的启动,停止,删除,基本命令!就目前可以把这个容器理解为一个建议的linux系统 仓库(repository) 存放镜像的地方 Docker Hub(默认是国外的)阿里云,,,都有容器服务(配置镜像加速!)   卸载旧版本 较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。 $ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
设置仓库 安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
$ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
阿里云地址 $ sudo yum-config-manager \     --add-repo \     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装 sudo yum install docker-ce docker-ce-cli containerd.io
启动 sudo systemctl start docker
测试 sudo docker run hello-world

命令 docker version  # docker版本信息 docker info     # 系统级别的信息,包括镜像和容器的数量 docker 命令 --help
docker images 查看所有本地主机上的镜像 # 解释 REPOSITORY      # 镜像的仓库 TAG             # 镜像的标签 IMAGE ID        # 镜像的ID CREATED         # 镜像的创建时间 SIZE            # 镜像的大小 # 可选项 --all , -a      # 列出所有镜像 --quiet , -q    # 只显示镜像的id
docker search 查找镜像 # 可选项 --filter=STARS=3000     # 搜素出来的镜像就是STARS大于3000的   docker pull 下拉镜像   # 如果不写tag,默认就是latest docker rmi 删除镜像 docker pull 镜像
docker run [可选参数] image    #启动容器 # 参数说明 --name=“Name”   容器名字    tomcat01    tomcat02    用来区分容器 -d      后台方式运行 -it     使用交互方式运行,进入容器查看内容 -p      指定容器的端口     -p 8080:8080     -p  ip:主机端口:容器端口     -p  主机端口:容器端口(常用)     -p  容器端口     容器端口 -p      随机指定端口
docker run -it 容器名字 /bin/bash #进入容器
docker ps 命令 # 列出当前正在运行的容器 -a      # 列出正在运行的容器包括历史容器 -n=?    # 显示最近创建的容器 -q      # 只显示当前容器的编号
exit            # 直接退出容器并关闭 Ctrl + P + Q    # 容器不关闭退出
docker rm -f 容器id                       # 删除指定容器 docker rm -f $(docker ps -aq)       # 删除所有容器 docker ps -a -q|xargs docker rm -f  # 删除所有的容器 docker start 容器id           # 启动容器 docker restart 容器id         # 重启容器 docker stop 容器id            # 停止当前正在运行的容器 docker kill 容器id            # 强制停止当前的容器
docker logs -tf --tail number 容器id #查看日志 # 显示日志 -tf                 # 显示日志 --tail number       # 显示日志条数
docker top 容器id    #查看容器中进程信息ps docker inspect 容器id #查看镜像的元数据 docker exec -it 容器id /bin/bash #进入当前正在运行的容器 docker cp 容器id:容器内路径   目的地主机路径  #从容器中拷贝文件到主机
Docker安装Nginx docker run -d --name nginx01 -p 3344:80 nginx  # 后台方式启动启动镜像 # -d 后台运行 # -name 给容器命名 # -p 宿主机端口:容器内部端口 Docker安装Tomcat docker run -d -p 3344:8080 --name tomcat01 tomcat
Docker部署es + kibana # es 暴露的端口很多 # es 十分的耗内存 # es 的数据一般需要放置到安全目录! 挂载 # --net somenetwork 网络配置   # 启动elasticsearch docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
docker stats 查看cpu状态
# 增加内存限制,修改配置文件 -e 环境配置修改 docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
portainer docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
commit镜像 docker commit 提交容器成为一个新的版本 # 命令和git 原理类似 docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG] docker commit -a="xiaofan" -m="add webapps app" d798a5946c1f tomcat007:1.0

数据卷 docker run -it -v 主机目录:容器目录
安装MySQL
# 运行容器, 需要做数据挂载! # 安装启动mysql,需要配置密码(注意) # 官方测试, docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag docker run -d -p 3344:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7 -d      # 后台运行 -p      # 端口隐射 -v      # 卷挂载 -e      # 环境配置 --name  # 容器的名字
匿名和具名挂载  # 匿名挂载 -v 容器内路径 docker run -d -P --name nginx01 -v /etc/nginx nginx     # -P 随机指定端口   # 查看所有volume的情况 docker volume ls
# 具名挂载 docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx docker volume ls # 通过-v 卷名:容器内的路径 # 查看一下这个卷 docker volume inspect juming-nginx
# 如何确定是具名挂载还是匿名挂载,还是指定路径挂载! -v  容器内路径                   # 匿名挂载 -v  卷名:容器内路径               # 具名挂载 -v /主机路径:容器内路径            # 指定路径挂载
# 通过 -v 容器内容路径 ro rw 改变读写权限 ro  readonly    # 只读 rw  readwrite   # 可读可写 docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx # ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内容无法操作
初始DockerFile # 创建一个dockerfile文件, 名字可以随机 # 文件的内容 指定(大写) 参数 FROM centos VOLUME ["volume01", "volume02"] CMD echo "----end----" CMD /bin/bash

FROM            # 基础镜像,一切从这里开始构建 MAINTAINER      # 镜像是谁写的, 姓名+邮箱 RUN             # 镜像构建的时候需要运行的命令 ADD             # 步骤, tomcat镜像, 这个tomcat压缩包!添加内容 WORKDIR         # 镜像的工作目录 VOLUME          # 挂载的目录 EXPOSE          # 保留端口配置 CMD             # 指定这个容器启动的时候要运行的命令,只有最后一个会生效可被替代 ENTRYPOINT      # 指定这个容器启动的时候要运行的命令, 可以追加命令 ONBUILD         # 当构建一个被继承DockerFile 这个时候就会运行 ONBUILD 的指令,触发指令 COPY            # 类似ADD, 将我们文件拷贝到镜像中 ENV             # 构建的时候设置环境变量!

mysql实现数据共享 docker run -d -p 3344:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7 docker run -d -p 3344:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql:5.7

Dockerfile制作tomcat镜像 FROM centos MAINTAINER xiaofan<[email protected]> COPY readme.txt /usr/local/readme.txt ADD jdk-8u73-linux-x64.tar.gz /usr/local/ ADD apache-tomcat-9.0.37.tar.gz /usr/local/ RUN yum -y install vim ENV MYPATH /usr/local WORKDIR $MYPATH ENV JAVA_HOME /usr/local/jdk1.8.0_73 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.37 ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.37 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin EXPOSE 8080 CMD /usr/local/apache-tomcat-9.0.37/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.37/bin/logs/catalina.out
构建镜像 docker build -t diytomcat . 启动镜像 docker run -d -p 3344:8080 --name xiaofantomcat1 -v /home/xiaofan/build/tomcat/test:/usr/local/apache-tomcat-9.0.37/webapp
增加一个tag docker tag diytomcat 1314520007/tomcat:1.0
Docker网络 我们没启动一个docker容器, docker就会给docker容器分配一个ip, 我们只要安装了docker,就会有一个网卡 docker0桥接模式,使用的技术是veth-pair技术 # 我们发现这个容器带来网卡,都是一对对的 # veth-pair 就是一对的虚拟设备接口,他们都是成对出现的,一端连着协议,一端彼此相连 # 正因为有这个特性,veth-pair充当一个桥梁, 连接各种虚拟网络设备 # OpenStac, Docker容器之间的链接,OVS的链接, 都是使用veth-pair技术
-- link docker run -d -P  --name tomcat03 --link tomcat02 tomcat docker ps docker exec -it tomcat03 ping tomcat02
自定义网络 bridge: 桥接模式,桥接 docker 默认,自己创建的也是用brdge模式 none: 不配置网络 host: 和宿主机共享网络 container:容器网络连通!(用的少, 局限很大)

docker run -d -P --name tomcat01 tomcat docker run -d -P --name tomcat01 --net bridge tomcat   # docker0特点,默认,容器名不能访问, --link可以打通连接! # 我们可以自定义一个网络! # --driver bridge # --subnet 192.168.0.0/16 可以支持255*255个网络 192.168.0.2 ~ 192.168.255.254 # --gateway 192.168.0.1 docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet docker network ls
部署redis
# 创建网卡 docker network create redis --subnet 172.38.0.0/16   # 通过脚本创建六个redis配置 for port in $(seq 1 6); \ do \ mkdir -p /mydata/redis/node-${port}/conf touch /mydata/redis/node-${port}/conf/redis.conf cat << EOF >/mydata/redis/node-${port}/conf/redis.conf port 6379 bind 0.0.0.0 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 cluster-announce-ip 172.38.0.1${port} cluster-announce-port 6379 cluster-announce-bus-port 16379 appendonly yes EOF done # 创建结点1 docker run -p 6371:6379 -p 16371:16379 --name redis-1 \ -v /mydata/redis/node-1/data:/data \ -v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf   #创建结点2 docker run -p 6372:6379 -p 16372:16379 --name redis-2 \ -v /mydata/redis/node-2/data:/data \ -v /mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf #创建结点3 docker run -p 6373:6379 -p 16373:16379 --name redis-3 \ -v /mydata/redis/node-3/data:/data \ -v /mydata/redis/node-3/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.13 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf #创建结点4 docker run -p 6374:6379 -p 16374:16379 --name redis-4 \ -v /mydata/redis/node-4/data:/data \ -v /mydata/redis/node-4/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.14 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf #创建结点5 docker run -p 6375:6379 -p 16375:16379 --name redis-5 \ -v /mydata/redis/node-5/data:/data \ -v /mydata/redis/node-5/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.15 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf #创建结点6 docker run -p 6376:6379 -p 16376:16379 --name redis-6 \ -v /mydata/redis/node-6/data:/data \ -v /mydata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.16 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf   # 创建集群 docker exec -it redis-1 /bin/sh redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1   SpringBoot微服务打包Docker镜像 打包应用 编写Dockerfile
FROM java:8 COPY *.jar /app.jar CMD ["--server.port=8080"] EXPOSE 8080 ENTRYPOINT ["java", "-jar", "/app.jar"]
docker build -t xiaofan666 . docker run -d -P --name xiaofan-springboot-web xiaofan666
Docker Compose Compose version: '2.0' services:   web:     build: .     ports:     - "5000:5000"     volumes:     - .:/code     - logvolume01:/var/log     links:     - redis   redis:     image: redis volumes:   logvolume01: {}

# 国内地址 curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose 授权 chmod +x /usr/local/bin/docker-compose
yaml规则 docker-compose.yaml 核心! https://docs.docker.com/compose/compose-file/#compose-file-structure-and-examples

Docker Swarm docker swarm init --help ip addr # 获取自己的ip(用内网的不要流量) docker swarm init --advertise-addr 172.16.250.97 Swarm initialized: current node (otdyxbk2ffbogdqq1kigysj1d) is now a manager.   To add a worker to this swarm, run the following command:       docker swarm join --token SWMTKN-1-3vovnwb5pkkno2i3u2a42yrxc1dk51zxvto5hrm4asgn37syfn-0xkrprkuyyhrx7cidg381pdir 172.16.250.97:2377   To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
初始化结点docker swarm init
docker swarm join 加入一个结点!
# 获取令牌 docker swarm join-token manager docker swarm join-token worker docker swarm join --token SWMTKN-1-3vovnwb5pkkno2i3u2a42yrxc1dk51zxvto5hrm4asgn37syfn-0xkrprkuyyhrx7cidg381pdir 172.16.250.97:2377 This node joined a swarm as a worker.
Docker Stack docker-compose 单机部署项目 docker stack 集群部署 # 单机 docker-compose up -d wordpress.yaml # 集群 docker stack deploy wordpress.yaml
Docker Secret 安全!配置密码!证书! docker secret --help Usage:  docker secret COMMAND Manage Docker secrets Commands:   create      Create a secret from a file or STDIN as content   inspect     Display detailed information on one or more secrets   ls          List secrets   rm          Remove one or more secrets
Docker Config 配置 docker config --help Usage:  docker config COMMAND Manage Docker configs Commands:   create      Create a config from a file or STDIN   inspect     Display detailed information on one or more configs   ls          List configs   rm          Remove one or more configs







标签:容器,run,--,redis,conf,docker,Docker,狂神
From: https://www.cnblogs.com/When6/p/17093832.html

相关文章

  • homeassistant接入rtsp摄像头
    米家摄像头没有开放onvif协议,家里又都是米家的摄像头我全网找了几篇破解刷固件的觉得不可靠又浪费时间这里就不得不提一句估计后续有时间我会用这个方案:https://github......
  • SSH协议中隧道与代理的用法测试
    一、测试拓扑eth1:10.1.1.100    eth0:192.168.211.130            eth0:192.168.211.138   eth1:20.1.1.200       ......
  • aws云上部署vue代码+nodeJS跨域配置
    大致需求客户想要构建一个新的客户站点,前端通过Https来访问VUE界面,然后VUE跨域Https访问后端的接口服务,通过NodeJS来提供后台服务。假定是全新的服务,本文从域名申请配置、CD......
  • 小程序云开发联表数据查询以及云函数中的应用
    点击观看视频↓↓↓小程序云开发联表数据查询以及在云函数中的应用|多表查询|连表lookup|聚合函数文章目录​​1、联表查询​​​​(1)lookup联接两个表格​​​​(2)使......
  • AntDB入选《2022爱分析·信创厂商全景报告》
    近日,AntDB数据库成功入选《2022爱分析·信创厂商全景报告》信创数据库全景地图。报告综合考虑企业关注度、行业落地进展等因素,遴选出在信创市场中具备成熟解决方案和落地能......
  • 信创产业多点开花,AntDB数据库积极参与行业标准研制,协同价值链伙伴共促新发展
    11月,AntDB数据库积极参与多项数据库行业标准研讨会,助推行业规范建立;凭借领先的技术研发能力与企业创新能力,在今年9月入选了《2022爱分析·数据智能厂商全景报告》,此次又凭借......
  • 亚信科技亮相南京软博会,数智赋能百行千业
    11月23至25日,主题为“软件赋能数智转型”的2022中国(南京)国际软件产品和信息服务交易博览会在南京国际博览中心盛大启幕。“数智化全栈能力提供商”亚信科技携“云网边端”......
  • Blazor嵌套传递
    实现创建一个BlazorServer空的应用程序创建一个Tab.razor并且添加以下代码<div>@Title</div>@code{[CascadingParameter]publicstring?Title{......
  • ES6 简介(二)
    目录ES6简介(二)五、函数扩展1、函数参数默认值1.1基本用法1.2与解构赋值默认值结合使用1.3指定参数的必要性2、rest参数3、name属性4、箭头函数六、模块化1、......
  • day21
    1、235.二叉搜索树的最近公共祖先classSolution{publicTreeNodelowestCommonAncestor(TreeNoderoot,TreeNodep,TreeNodeq){if(root.val>p.va......