妇科医院网站设计,网站导航的建设,前端很难学吗,wordpress网站需要多大空间一、docker概述
1.docker是什么 是一个开源的应用容器引擎#xff0c;基于go语言开发并遵循apache2.0协议开源 是在Linux容器里运行应用的开源工具 是一种轻量级的 “虚拟机” Docker的容器技术,可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器…一、docker概述
1.docker是什么 是一个开源的应用容器引擎基于go语言开发并遵循apache2.0协议开源 是在Linux容器里运行应用的开源工具 是一种轻量级的 “虚拟机” Docker的容器技术,可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器
2.docker的优点
达到应用组件级别的“一次封装到处运行”的目的。这里的组件既可以是一个应用也可以是一套服务甚至是一个完整的操作跨平台一致性资源隔离轻量级资源占用和传统虚拟机相比docker容器共享虚拟机内核
3.docker的架构 镜像imageDocker 镜像Image就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。 容器Container镜像Image和容器Container的关系就像是面向对象程序设计中的类和实例一样镜像是静态的定义容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停 仓库Repository仓库可看成一个代码控制中心用来保存镜像。 Docker 使用客户端-服务器 (C/S) 架构模式使用远程API来管理和创建Docker容器。 Docker 容器通过 Docker 镜像来创建。 4.容器概念的两个重要技术
Docker本质就是宿主机的一个进程docker是通过namespace实现资源隔离通过cgroup实现资
源限制 通过**写时复制技术copy-on-write**实现高效文件操作 类似于虚拟机的磁盘比如分
配500g并不是实际占用物理磁盘500g只有当需要修改时才复制一份数据
二、docker安装
1.centos装docker 先删除旧版本docker yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine yum install -y yum-utils device-mapper-persistent-data lvm2yum-utils提供了 yum-config-manager 工具。 device mapper 是Linux内核中支持逻辑卷管理的通用设备映射机制它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。 device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo设置阿里云镜像官方源比较慢 yum install -y docker-ce docker-ce-cli containerd.iodocker-ce 社区版 docker-ce-cli 客服端命令行工具 containerd.io 一个容器运行时接口的实现管理容器的启动创建删除停止等操作 docker-compose-plugin 和K8s一样是容器编排工具不过前者适合开发测试小规模环境K8s适合大规模 systemctl start docker.service
systemctl enable docker.service 开启服务和打开服务自启动 docker version2. 内网装dockerdocker-compose
下载docker源码
https://download.docker.com/按需下载
将下载好的的包上传到对应服务器
解压
tar -zxvf docker-26.1.4.tgz解压完之后的文件夹是docker
移动到可执行文件目录下
mv docker/* /usr/bin/配置docker.service
vim /usr/lib/systemd/system/docker.service将下面的内容填进去
[Unit]
DescriptionDocker Application Container Engine
Documentationhttps://docs.docker.com
Afternetwork-online.target firewalld.service
Wantsnetwork-online.target[Service]
Typenotify
ExecStart/usr/bin/dockerd
ExecReload/bin/kill -s HUP $MAINPID
LimitNOFILEinfinity
LimitNPROCinfinity
TimeoutStartSec0
Delegateyes
KillModeprocess
Restarton-failure
StartLimitBurst3
StartLimitInterval60s[Install]
WantedBymulti-user.target
启动docker服务并开启自启动
systemctl daemon-reload
systemctl start docker.service
docker info
systemctl enable docker如果习惯用容器编排附带docker-compose下载地址
curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 -o /usr/bin/docker-composegithub连不上用这个地址 curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-uname -s-uname -m /usr/bin/docker-compose 给他可执行的权限
sudo chmod x /usr/bin/docker-compose检查是否成功安装
docker-compose --version### 3. 配置加速器配置阿里云镜像加速 登录我们的阿里云控制台然后找到容器镜像服务** 找到镜像加速器----镜像加速地址 选择对应的加速地址 配置别的加速器地址
网上直接搜加速器地址存活周期不一定
搜到之后
vim /etc/docker/daemon.json复制进去即可
4. 删除docker
卸载依赖
yum remove docker-ce docker-ce-cli containerd.io删除资源
rm -rf /var/lib/docker三、常用基础命令
1.查看镜像
docker images 2.查看容器
docker ps -a # -a参数是显示所有容器包括隐藏的3.下载镜像
docker pull
docker pull nginx:1.22-alpine
docker search 查找镜像latest 最新版本 stable 稳定版本 nginx:1.20.2 指定版本 默认是latest 最新版本 若要指定版本 可在pull 后要下载的加上版本号 例子 docker pull mysql:8.4.3 4.运行镜像没下载会自动下载
docker run
例子
# 指定配置文件目录root密码
docker run -d --name mysql8.4.3 -v /usr/local/mysql-docker/conf/:/etc/mysql/conf.d -v /usr/local/mysql-docker/data/:/var/lib/mysql -e MYSQL_ROOT_PASSWORDadmin123 -p 3307:3306 mysql:8.4.3-d 容器以守护进程的方式运行 –name 指定容器的名称 方便docker start stop 不用容器ID了太难记 -v 数据卷挂载 -e root的mysql密码 -p 端口内外部映射 mysql:8.4.3 运行的名字和版本 如果镜像仓库没有自动下载 5.删除镜像
docker rmi image名字6.删除容器
docker rm 容器名字或者id7.容器管理
docker create 创建容器 --name
docker start 启动容器
docker stop 停止容器
docker restart 重启容器
docker kill 强制停止容器
docker rm 删除容器
批量删除所有容器 docker rm -f docker ps -a -q8.查看容器状态
docker status单独查看某一进程的信息
docker top mysql8.4.39.根据容器生成镜像
和git原理差不多比如有的nginx的配置文件结构不好你以后生成的容器是修改过后的conf文件添加之后把这个容器生成一个镜像后边的都是容器了
docker commit -m提交的描述信息 -a作者 容器id 目标镜像名:[TAG]10.IP绑定端口
显示用户只能通过宿主机的某个网卡连接这个端口
docker run -d --name nginx_bind_ip -p 172.16.1.81:12306:80 nginx:1.20.2-alpine11.查看容器信息
docker inspect 容器名字或者id
加| jq .[].HostConfig.Binds
能看到挂载的目录端口还有容器网络啥的12.查看容器日志
docker logs -n 容器名13. 容器主机直接拷贝文件
docker cp
例子
docker exec -it 6eda31ad7987 /bin/bash先进入到容器内部docker cp 6eda31ad7987:/home/test.java /home14. sl大法复制镜像可建立远程docker仓库
docker image save -o XXXX#docker save
docker image load -i #docker load四、docker装各种服务
1. docker装mysql8.4.3
拉去镜像
docker pull mysql:8.4.3运行起来
docker run -d --name mysql8.4.3 -v /usr/local/mysql-docker/conf/:/etc/mysql/conf.d -v /usr/local/mysql-docker/data/:/var/lib/mysql -e MYSQL_ROOT_PASSWORDadmin123 -p 3307:3306 mysql:8.4.3-d 容器以守护进程的方式运行 –name 指定容器的名称 方便docker start stop 不用容器ID了太难记 -v 数据卷挂载 -e root的mysql密码 -p 端口内外部映射 mysql:8.4.3 运行的名字和版本 如果镜像仓库没有自动下载 进入容器
docker exec -it mysql8.4.3 bash登录mysql
mysql -uroot -p编写配置文件
cd /usr/local/mysql-docker/conf
vim my.cnf编辑内容如下
[mysqld]port3306datadir/var/lib/mysqlmax_allowed_packet1024Mmax_connections1000# 默认字符集character-set-serverutf8mb4collation-serverutf8mb4_general_ci# binlog日志server-id2018log-binmysql-bin# 保存15天binlog_expire_logs_seconds1296000# 选择 binlog 文件的最大大小达到该大小时会自动切换到新的日志文件max-binlog-size100M# 记录 binlog 文件时排除某些查询binlog-ignore-dbinformation_schemabinlog-ignore-dbperformance_schemabinlog-ignore-dbmysql
2.docker装nginx
拉去镜像
docker pull nginx1.26.2创建挂载目录
创建挂载目录
mkdir -p /usr/local/nginx-docker/conf
mkdir -p /usr/local/nginx-docker/conf/conf.d
mkdir -p /usr/local/nginx-docker/log
mkdir -p /usr/local/nginx-docker/html生成容器迁移配置文件
#生成容器
docker run --name nginx --restartalways -p 80:80 -d nginx:1.26.2
#将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx-docker/conf/nginx.con
#将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /usr/local/nginx-docker/conf/conf.d
#将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /usr/local/nginx-docker/创建Nginx容器并运行
#直接执行docker rm nginx或者以容器id方式关闭容器
#找到nginx对应的容器id
docker ps -a
#关闭该容器
docker stop nginx
#删除该容器
docker rm nginx
#删除正在运行的nginx容器
docker rm -f nginxdocker 创建nginx容器
docker run \
-p 80:80 \
--name nginx \
-v /usr/local/nginx-docker/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/nginx-docker/conf/conf.d:/etc/nginx/conf.d \
-v /usr/local/nginx-docker/log:/var/log/nginx \
-v /usr/local/nginx-docker/html:/usr/share/nginx/html \
--restartalways \
-d nginx:1.26.2 docker run -p 80:80 -p 443:443 –name nginx -v /usr/local/nginx-docker/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx-docker/conf/conf.d:/etc/nginx/conf.d -v /usr/local/nginx-docker/log:/var/log/nginx -v /usr/local/nginx-docker/html:/usr/share/nginx/html -d nginx:1.26.2 有多少端口就在这里面加就行 命令描述–name nginx启动容器的名字-d后台运行-p 80:80映射端口-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf挂载nginx.conf配置文件-v /home/nginx/conf/conf.d:/etc/nginx/conf.d挂载nginx配置文件-v /home/nginx/log:/var/log/nginx挂载nginx日志文件-v /home/nginx/html:/usr/share/nginx/html挂载nginx内容nginx:latest本地运行的版本\shell 命令换行
https://download.docker.com/ 下载docker
3.内网docker装oracle
一、内网装dorcker
下载docker源码
https://download.docker.com/按需下载
将下载好的的包上传到对应服务器
解压
tar -zxvf docker-26.1.4.tgz解压完之后的文件夹是docker
移动到可执行文件目录下
mv docker/* /usr/bin/配置docker.service
vim /usr/lib/systemd/system/docker.service将下面的内容填进去
[Unit]
DescriptionDocker Application Container Engine
Documentationhttps://docs.docker.com
Afternetwork-online.target firewalld.service
Wantsnetwork-online.target[Service]
Typenotify
ExecStart/usr/bin/dockerd
ExecReload/bin/kill -s HUP $MAINPID
LimitNOFILEinfinity
LimitNPROCinfinity
TimeoutStartSec0
Delegateyes
KillModeprocess
Restarton-failure
StartLimitBurst3
StartLimitInterval60s[Install]
WantedBymulti-user.target
启动docker服务并开启自启动
systemctl daemon-reload
systemctl start docker.service
docker info
systemctl enable docker如果习惯用容器编排附带docker-compose下载地址
https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64给他可执行的权限
sudo chmod x /usr/bin/docker-compose检查是否成功安装
docker-compose --version二、安装docker-oracle 上传docker-oracle镜像包 导入镜像包
docker load -i 镜像包执行docker images 检查是否存在镜像 oracle:oracle11g 存在则导入成功 创建并启动容器
docker run -itd \--name oracle11g \-p 1521:1521 \-p 5500:5500 \--mount sourceoracle_vol,target/opt/oracle/app/oradata \-e ORACLE_HOME/opt/oracle/app/product/11.2.0/dbhome_1 \-e ORACLE_SIDORCL \-e PATH$ORACLEHOME/bin:PATH \--restart always \yycx/oracle11 挂载的数据有点大 run的时候可能会比较慢如果只是为了测试搭建可以不挂载数据持久化-p 宿主机映射端口docker端口 –name 容器的名字 –restartalway 开机自启动 –mount sourceoracle_vol,target/opt/oracle/app/oradata \ 挂载磁盘实现数据持久化 -e ORACLE_SIDORCL \ 实例名字用来连接的 #新建docker卷-----docker volume create oracle11g #查看docker卷-------docker volume ls #卷路径-------find / -name oracle11g 这个卷的路径就是数据持久化存放的位置 进入容器进行配置
docker exec -it oracle11g bash创建软连接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
#可以全局使用sqlplus登录Oracle的一些初始化操作
su - oracle 切换oraclesqlplus /nolog 启动sqlplus但不立即登录数据库connect /as sysdba 以sysdba去登录oraclealter user system identified by nomax; 修改system的密码是nomax
alter user sys identified by nomax; 修改sys 的密码是nomax
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; 配置密码不过期
alter system set processes1000 scopespfile; 修改最大连接数是1000sqlplus /nolog 启动sqlplus但不立即登录数据库 connect /as sysdba 以sysdba去登录 alter user system identified by nomax; 设置system的密码是nomax alter user sys identified by nomax; 设置sys的密码是nomax ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; 配置密码不过期 创建用户并指定表空间授权
SQL create user nomax IDENTIFIED BY nomax default tablespace nomax;User created.SQL grant connect,resource,dba to nomax;Grant succeeded.创建一个nomax的用户分配表空间nomax密码是nomax授予他connect,resource,dba的权限题外话
conn /as sysdba;
shutdown immediate; --关闭数据库
startup; --启动数据库
show user;修改密码的时候会出现database not open
提示数据库没有打开
输入alter datebase open还有出现datebase not mountd
提示数据库没有被挂载
输入alter database mount;
输入alter database open;这个没被挂载是因为宿主机和docker 挂载磁盘出现的问题有可能是权限dockers的oracle没有权限存放到映射的宿主机目录也有可能是操作问题本来我是直接-v映射的但是一直出现这个问题后来索性用了挂载volume卷解决了。
4. docker装tomcat
拉镜像tomcat
docker pull tomcat:7.0创建宿主机映射目录
mkdir -p /usr/local/docker-tomcat/webapps/
mkdir -p /usr/local/docker-tomcat/conf/
mkdir -p /usr/local/docker-tomcat/logs/run起来并配置数据持久化映射
docker run -di --nametomcat -p 8080:8080 -p1521:1521 -v /usr/local/docker-tomcat/webapps/:/usr/local/tomcat/webapps/ -v /usr/local/docker-tomcat/conf/:/usr/local/docker-tomcat/conf/ -v /usr/local/docker-tomcat/logs/:/usr/local/docker-tomcat/logs/ tomcat:7.0记得把tomcat连接的服务器的映射端口打开 cp容器自带的文件到挂载磁盘
docker cp tomcat:/usr/local/tomcat/conf/* /usr/local/docker-tomcat/conf/进入容器内
docker exec -it tomcat bashcd bin
启动tomcattomcat默认最小安装webapps下啥也没有 在tomcat目录下有一个webapps.dist目录这个目录下有我们所需要的文件也就是webapps目录所需要的文件我们将这个文件中的内容全部拷贝到webapps下。 cp -r webapps.dist/* webapps 五、容器编排技术
1.单机编排
docker镜像可以通过Dockerfile一键创建. 目前问题:⚠ docker容器的管理(启动,关闭,重启),需要手动执行,如何管理多个容器.
单机容器编排工具 docker compose
下载安装
yum install -y docker-compose或者
sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose官方文档下载 并放到bin下 给可执行权限
sudo chmod x /usr/local/bin/docker-compose验证
docker-compose --version书写格式 compose.yaml
compose.yml
docker-compose.yaml
docker-compose.yml
默认支持的compose文件名.services:mysql8.4.3:image: mysql:8.4.3environment:- MYSQL_ROOT_PASSWORDadmin123volumes:- ./data:/var/lib/mysql- ./conf:/etc/mysql/conf.d container_name: mysql8.4.3 ports: - 3307:3306restart: always常用基本命令 启动服务
docker-compose up -d-d 是在后台运行不占用终端 2.查看服务状态
docker-compose ps 3.停止服务
docker-compose down 4.删除服务
docker-compose stop 服务名字
docker-compose rm 服务名字默认不会删除挂载的数据卷 docker-compose rm -v 服务名 加-v参数可一块删除挂载的数据卷 5.查看日志
docker-compose logs [service_name] 6.重建服务 修改完yml文件后执行docker-compose up -d [service_name]六、Dockerfile 学习
什么是Dockerfile
Dockerfile 是一个文本文件包含了构建 Docker 镜像的所有指令。
Dockerfile 是一个用来构建镜像的文本文件文本内容包含了一条条构建镜像所需的指令和说明。
通过定义一系列命令和参数Dockerfile 指导 Docker 构建一个自定义的镜像。
和commit生成的会变大然后也没有dockerfile透明清除但是commit根据已有的容器生成临时用比较方便
Dockerfile制定镜像
下面以定制一个 nginx 镜像构建好的镜像内会有一个 /usr/share/nginx/html/index.html 文件
在一个空目录下新建一个名为 Dockerfile 文件并在文件内添加以下内容
FROM nginx
RUN echo 这是一个本地构建的nginx镜像 /usr/share/nginx/html/index.htmlFROM 和 RUN 指令的作用
FROM定制的镜像都是基于 FROM 的镜像这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。
RUN用于执行后面跟着的命令行命令。有以下俩种格式
注意Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层会造成镜像膨胀过大。例如
FROM centos
RUN yum -y install wget
RUN wget -O redis.tar.gz http://download.redis.io/releases/redis-5.0.3.tar.gz
RUN tar -xvf redis.tar.gz以上执行会创建 3 层镜像。可简化为以下格式
FROM centos
RUN yum -y install wget \ wget -O redis.tar.gz http://download.redis.io/releases/redis-5.0.3.tar.gz \ tar -xvf redis.tar.gz用符号连接
开始构建镜像
在 Dockerfile 文件的存放目录下执行构建动作。
以下示例通过目录下的 Dockerfile 构建一个 nginx:v3镜像名称:镜像标签。
注最后的 . 代表本次执行的上下文路径下一节会介绍。
$ docker build -t nginx:v3 .指令详解表
Dockerfile 指令****说明FROM指定基础镜像用于后续的指令构建。MAINTAINER指定Dockerfile的作者/维护者。已弃用推荐使用LABEL指令LABEL添加镜像的元数据使用键值对的形式。RUN在构建过程中在镜像中执行命令。CMD指定容器创建时的默认命令。可以被覆盖ENTRYPOINT设置容器创建时的主要命令。不可被覆盖EXPOSE声明容器运行时监听的特定网络端口。ENV在容器内部设置环境变量。ADD将文件、目录或远程URL复制到镜像中。COPY将文件或目录复制到镜像中。VOLUME为容器创建挂载点或声明卷。WORKDIR设置后续指令的工作目录。USER指定后续指令的用户上下文。ARG定义在构建过程中传递给构建器的变量可使用 “docker build” 命令设置。ONBUILD当该镜像被用作另一个构建过程的基础时添加触发器。STOPSIGNAL设置发送给容器以退出的系统调用信号。
七、Docker命令大全
容器生命周期管理
语法详细解释run起来run命令开始暂停重启容器docker start/stop/restart 命令docker kill 容器/id 强制杀死docker kill 命令docker rm 容器 删除容器Docker rm 命令暂停docker pause/unpause 命令创建容器但不会运行Docker create 命令进入容器内部Docker exec 命令docker rename 当前容器名称或ID 新容器名称Docker rename 命令
网络命令 docker network ls: 列出所有网络。 docker network create network: 创建一个新的网络。 docker network rm network: 删除指定的网络。 docker network connect network container: 连接容器到网络。 docker network disconnect network container: 断开容器与网络的连接。
卷命令
docker volume ls: 列出所有卷。docker volume create volume: 创建一个新的卷。docker volume rm volume: 删除指定的卷。docker volume inspect volume: 显示卷的详细信息。 https://www.runoob.com/docker/docker-rm-command.html) | | 暂停 | docker pause/unpause 命令 | | 创建容器但不会运行 | Docker create 命令 | | 进入容器内部 | Docker exec 命令 | | docker rename 当前容器名称或ID 新容器名称 | Docker rename 命令 |
网络命令 docker network ls: 列出所有网络。 docker network create network: 创建一个新的网络。 docker network rm network: 删除指定的网络。 docker network connect network container: 连接容器到网络。 docker network disconnect network container: 断开容器与网络的连接。
卷命令
docker volume ls: 列出所有卷。docker volume create volume: 创建一个新的卷。docker volume rm volume: 删除指定的卷。docker volume inspect volume: 显示卷的详细信息。