万字长文带你入门Docker

1 Docker

dockerfiler 镜像构建

Compose是在单机进行容器编排 Horbor 镜像仓库

Docker swarm 在多机进行容器编排

Docker Compose缺点是不能在分布式多机器上使用

Docker swarm缺点是不能同时编排多个服务,

Docker Stack,可以在分布式多机器上同时编排多个服务。

1.1 Docker常用命令

如果在使用 镜像或者是容器的别名有问题的话,就使用它的容器id

docker 服务 启动 停止 重启 查看 开机自启

systemctl start |stop | restart | status|enable docker

docker 镜像

docker images 查看镜像 docker search 搜索镜像 docker pull centos:7 拉取镜像 docker push 推送镜像 在推送镜像的时候需要先登录 docker rmi 删除镜像 docker rmi docker images -q 删除所有版本

docker 容器

docker ps (-a 查看所有容器) -l :显示最近创建的容器。 -n :列出最近创建的n个容器。

docker start |stop | restart | status|enable 容器id 启动 停止 重启 查看 开机自启

docker run -i:表示运行容器 -t:启动后会进入其命令行 -d:后台运行

--name :创建的别名 -v:表示目录映射关系 -p:表示端口映射, / 如果一行写不下用/来换行

exec 进入运行时容器 示例docker exec -it 容器id /bin/bash

logs -f 容器的日志 inspect 容器的信息信息 rm删除容器

Dockerfiler

FROM 指定基础镜像 RUN 运行命令 EXPOSE 开放端口 ADD 复制文件到镜像 自动解压 docker build 构建示例 docker build -t reggie_take_out-1.0-SNAPSHOT.jar reggie.jar . (-t表示 构建的文件 .是在当前目录)

docker-compose docker-compose.yml docker-compose config -q 坚持语法是否有问题

docker-compose up 启动 -d 后台启动 docker-compose down 停止

其他

docker cp 复制一个文件到容器内部 文件路径 容器名:文件路径 docker cp /root/F.sql mysql:/

1.2什么是docker

Docker 是一个开源的应用容器引擎,基于 Go 语言开发。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

把环境和项目进行打包,发布到docker仓库

Docker应用场景

  • Web 应用的自动化打包和发布

  • 自动化测试和持续集成、发布

  • 在服务型环境中部署和调整数据库或其他的后台应

docker 通过镜像和隔离机制来解决

DockerRUN

如果docker run hello-world

开始运行 docker会在本机寻找镜像,如果有就在本机运行,如果没有就去Dockerhup上下载,DockerHup是否可以找到,如果能找到就下载,找不到,就返回

Docke 如何工作的 是一个Client-Server结构系统,Docker的守护运行在主机上,通过Socket从客户端访问

DockerSever接收到Docker Client的指令

Docker 为什么比虚拟机更快

Docker 不需要在重新加载一个操作系统内核,而docker是利用宿主机的操作系统来操作的

1.3 docker 架构图

Docker 是一个 C/S 模式的架构,后端是一个松耦合架构,模块各司其职

Docker Client 是一个客户端 systemctl start dcker 启动其客户端 进入客户端 然后才能发送一系列命令

docker run -d 也是这么一个意思

1 用户是使用 Docker Client 与 Docker Daemon 建立通信,并发送请求给后者。

2 Docker Daemon 作为 Docker 架构中的主体部分,首先提供 Docker Server 的功能使其可以接受 Docker Client 的请求。

3 Docker Engine 执行 Docker 内部的一系列工作,每一项工作都是以一个 Job 的形式的存在。

4 Job 的运行过程中,当需要容器镜像时,则从 Docker Registry 中下载镜像,并通过镜像管理驱动 Graphdriver 将下载镜像以 Graph 的形式存储。

5 当需要为 Docker 创建网络环境时,通过网络管理驱动 Networkdriver 创建并配置 Docker容器网络环境。

6 当需要限制 Docker 容器运行资源或执行用户指令等操作时,则通过 Execdriver 来完成。

7 Libcontainer 是一项独立的容器管理包,Networkdriver 以及 Execdriver 都是通过 Libcontainer 来实现具体对容器进行的操作。

2 Docker基础使用

如果在安装docker 升级yum源 提升yum源找不到的话

yum clean all 清理 然后重新加载一下 yum makecache

2.1 docker安装

2.1.1 docker安装

或者使用脚本文件安装

vim docker.sh

 #!/bin/bash
 yum install -y yum-utils
 yum-config-manager \
     --add-repo \
     https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 mkdir -p /etc/docker && touch /etc/docker/daemon.json
 cat > /etc/docker/daemon.json <<END
 {
   "registry-mirrors": ["https://3sf1ht53.mirror.aliyuncs.com"]
 }                                                                                    
 END
 yum install docker-ce docker-ce-cli containerd.io
 systemctl start docker

chmod +x docker.yml && ./docker.yml

0、安装完docker一定要先启动docker docker start

1、使用uname命令验证 内核版本 内核版本要大于 3.1

 [root@localhost docker]# uname -r
 3.10.0-1127.el7.x86_64

2、卸载已安装的Docker

如果已经安装过Docker,请先卸载,再重新安装,来确保整体的环境是一致的。

 yum remove docker 
 docker-client 
 docker-client-latest 
 docker-common 
 docker-latest 
 docker-latest-logrotate 
 docker-logrotate docker-engine

3、安装yum工具包和存储驱动

 yum install -y yum-utils

4、设置镜像的仓库

每个人的镜像仓库都不一样

容器服务ACK_容器服务Kubernetes版_容器_云原生应用平台-阿里云

 用国内的,阿里云docker镜像
 yum-config-manager \
     --add-repo \
     https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5、安装docker

注意 : docker-ce 社区版 而ee是企业版。这里我们使用社区版即可。

 yum install docker-ce docker-ce-cli containerd.io

6、启动docker

 systemctl start docker

7、设置开机启动

 systemctl enable docker

2.2 docker卸载

卸载docker

 yum remove docker \
 docker-client \
 docker-client-latest \
 docker-common \
 docker-latest \
 docker-latest-logrotate \
 docker-logrotate \
 docker-engine

2.1.3 离线安装

对于yum命令不能用的情况下 如果进行离线安装 systemctl 就查找不到你安装的路径和位置 需要先进行注册到systemctl上

1 下载安装包

镜像地址

https://download.docker.com/linux/static/stable/x86_64/docker-18.03.1-ce.tgz

wget https://cce-tools.bj.bcebos.com/docker/docker-cce-19.03.13.tar.gz

2 解压

tar -zxvf

3 把解压的文件移动到/usr/bin 目录里

这个目录不要随便改,否则可能出错

mv 1.txt 2.txt /usr/bin 可以移动多个文件

4 创建docker.service文件 进入/etc/systemd/system/目录下,创建docker.service

我理解应该就是docker的服务文件

5 编写docker.service

--insecure-registry=116.62.205.170 此处改为你自己服务器ip

 [Unit]
 Description=Docker Application Container Engine
 Documentation=https://docs.docker.com
 After=network-online.target firewalld.service
 Wants=network-online.target
 ​
 [Service]
 Type=notify
 # the default is not to use systemd for cgroups because the delegate issues still
 # exists and systemd currently does not support the cgroup feature set required
 # for containers run by docker
 ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=116.62.205.170
 ExecReload=/bin/kill -s HUP $MAINPID
 # Having non-zero Limit*s causes performance problems due to accounting overhead
 # in the kernel. We recommend using cgroups to do container-local accounting.
 LimitNOFILE=infinity
 LimitNPROC=infinity
 LimitCORE=infinity
 # Uncomment TasksMax if your systemd version supports it.
 # Only systemd 226 and above support this version.
 #TasksMax=infinity
 TimeoutStartSec=0
 # set delegate yes so that systemd does not reset the cgroups of docker containers
 Delegate=yes
 # kill only the docker process, not all processes in the cgroup
 KillMode=process
 # restart the docker process if it exits prematurely
 Restart=on-failure
 StartLimitBurst=3
 StartLimitInterval=60s
 [Install]
 WantedBy=multi-user.target
 ​

6 添加文件权限

 chmod 777 /etc/systemd/system/docker.service

7 刷新权限

意思就是说,你注册了一个服务进行所以要刷新一下

 systemctl daemon-reload

8 启动docker

 systemctl start docker

一定要先启动

9 参考博客

docker离线部署_离线部署docker_杜若辰的博客-CSDN博客

2.1.4 docker升级

有的时候可能会越到docker版本不匹配的问题

 1列出包含docker字段的软件的信息
 rpm -qa | grep docker 
 2 yum remove移除 docker
 yum remove docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64
 yum remove docker-client-1.13.1-96.gitb2f74b2.el7.centos.x86_64
 yum remove docker-common-1.13.1-96.gitb2f74b2.el7.centos.x86_64
 3 升级docker的版本为最新版本
 curl -fsSL https://get.docker.com/ | sh
 3 重启docker
 systemctl restart docker

2.2 设置镜像加速器

1、 编辑文件/etc/docker/daemon.json 这个需要自己创建

 # 执行如下命令: 
 mkdir -p /etc/docker && touch /etc/docker/daemon.json
 vi /etc/docker/daemon.json 
 ​

2、在文件中加入下面内容

容器服务ACK_容器服务Kubernetes版_容器_云原生应用平台-阿里云 每个人的地址都不一样可以到阿里云上注册一下

 {
   "registry-mirrors": ["https://3sf1ht53.mirror.aliyuncs.com"]
 }                                                                                    

修改这个配置文件要注意 ,如果编写的有问题 启动和重启docker就会启动不起来 systemctl restart docker 会报错

2.3 dock公用命令

# 启动docker服务: 
systemctl start docker 
# 停止docker服务: 
systemctl
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL多数据源是指在一个应用程序中同时使用多个不同的MySQL数据库来存储和管理数据的技术。它可以帮助开发人员更灵活地处理各种数据库操作,提高程序的性能和可扩展性。下面是一个完整的MySQL多数据源教程。 一、设置数据库连接信息 1. 在应用程序的配置文件中,创建多个数据库连接的配置项。例如,可以为每个数据源创建一个配置项,分别命名为db1、db2等。 2. 在配置项中,设置每个数据源的连接信息,包括数据库地址、用户名、密码等。 二、创建数据源管理器 1. 创建一个数据源管理器类,用于管理多个数据源。该类需要实现数据源的动态切换和获取。 2. 使用Java的线程安全的数据结构,如ConcurrentHashMap来存储数据源信息。将配置文件中的数据库连接信息加载到数据结构中。 3. 实现方法来切换不同的数据源,通过传入数据源的名称来切换到对应的数据库。 三、实现数据源切换 1. 在应用程序中,根据业务需求选择需要使用的数据源。可以通过调用数据源管理器的方法来切换数据源。 2. 在DAO层的代码中,根据当前使用的数据源名称,选择对应的数据源进行数据库操作。 四、使用多数据源进行数据库操作 1. 在DAO层的代码中,区分不同的数据源,并将数据库操作的代码包装在对应的数据源中。 2. 在业务层的代码中,调用DAO层的方法来进行数据库操作。不同的数据源会自动切换。 五、处理事务 1. 如果需要在一个事务中操作多个数据源,可以使用分布式事务的方式来处理。 2. 可以使用开源的分布式事务框架,如Atomikos、Bitronix等来实现多数据源的事务管理。 六、监控和维护 1. 使用监控工具来监控多个数据源的使用情况,包括连接数、查询次数等。 2. 定期对数据库进行维护,包括索引优化、数据清理等工作,以保证数据库的性能和稳定性。 通过以上步骤,我们可以实现MySQL多数据源的配置和使用。使用多数据源可以更好地管理和处理不同的数据库操作,在提高程序性能和可扩展性的同时,也提供了更灵活的数据操作方式。同时,需要注意合理选择和配置数据源,以及监控和维护数据库,以保证系统的运行效率和数据的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值