Docker学习(4)—inspect命令

docker inspect用于查看镜像的元数据,我们可以从中获取镜像挂载的卷和工作目录,返回的是一个json字符串

格式:
docker inspect --help

Usage:	docker inspect [OPTIONS] NAME|ID [NAME|ID...]

Return low-level information on Docker objects

Options:
  -f, --format string   Format the output using the given Go template
  -s, --size            Display total file sizes if the type is container
      --type string     Return JSON for specified type
继续阅读Docker学习(4)—inspect命令

Docker学习(3)—搭建PHP环境(安装wordpress为例)

1、需要一个php容器,一个mysql容器,一个nginx容器
下载nginx、php:7.2-fpm、mysql镜像:
docker pull nginx
docker pull php:7.2-fpm
docker pull mysql

注:docker官方提供的php镜像是没有fpm的

2、建立相应目录
mkdir -p /appserver/code
mkdir -p /appserver/mysql
mkdir -p /appserver/nginx
mkdir -p /appserver/logs
cd /tmp
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
tar -zxvf latest-zh_CN.tar.gz -C /appserver/code/
chown root:root -R /appserver/code/

3、启动mysql容器
docker run -itd -v /appserver/mysql:/var/lib/mysql -p 33066:3306 --name=mysql -e MYSQL_ROOT_PASSWORD=123456 mysql

4、创建数据库
docker exec -it mysql /bin/bash
mysql -u root -p
create database wordpress;
create user 'wp'@'%' identified by '123456';
grant all on wordpress.* to 'wp'@'%';
alter user 'wp'@'%' identified with mysql_native_password by '123456'; (mysql8远程连接需要将加密方式从caching_sha2_password改为mysql_native_password)
flush privileges;

继续阅读Docker学习(3)—搭建PHP环境(安装wordpress为例)

Docker学习(2)—Dockerfile和自制镜像

一、什么是Dockerfile
Dockerfile就是名为Dockerfile的文件(注意没有后缀名),文件中包含一些Linux命令,Docker通过读取文件中的命令来组件镜像

二、Dockerfile文件内容结构
Dockerfile一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,“#”为dockerfile中的注释

三、运行Dockerfile
当前目录下
docker build -t image_name:tag_name .
也可以通过-f参数来指定Dockerfile文件位置
docker build -f /path/Dockerfile .
说明:
-t:tag,指定镜像名字和标签
-f:指定文件路径

四、命令详解
1、FORM:指定基础镜像,必须为第一个命令
格式:
FROM <image>
FROM <image>:<tag>
FROM <image>@<digest>

示例:
FROM centos:7.0

2、MAINTAINER:维护者信息
格式:
MAINTAINER <name>
示例:
MAINTAINER zhangsan

3、RUN:构建镜像时执行的命令
格式:
RUN <commond>
RUN ["executable", "param1", "param2"]

示例:
RUN yum install nginx
RUN ["/bin/executable", "param1", "param2"]

继续阅读Docker学习(2)—Dockerfile和自制镜像

CentOS7升级php到7.2

由于新版wordpress不支持默认源的php5.4,所以必须升级。。。

1、删除旧版本php
yum list installed | grep php
yum remove php
yum remove php-*

2、安装第三方更新源
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

3、安装php7.2
yum install php72w mod_php72w php72w-bcmath php72w-cli php72w-common php72w-devel php72w-gd php72w-mbstring php72w-mysqlnd php72w-pdo php72w-pear php72w-process php72w-xml php72w-xmlrpc
如果是apache服务器还要安装mod_php72w

4、查看版本
php -v

Docker学习(1)—基础命令

一、沙箱机制
独立性、隔离性
在里面运行病毒也没有关系

二、Docker是什么
Docker是一个开源的应用容器引擎,基于Go语言
Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的“容器”中,然后发布到任何流行的Linux机器上,
“容器”完全使用“沙箱机制”,相互之间不会有任何接口(类似iPhone的app)

三、Docker优势
启动快
占用资源少

四、镜像/容器/仓库
1、镜像:通过镜像创建容器
类似于装系统的光盘
2、容器:镜像创建容器,容器启动起来之后,就能提供包含软件的服务了
3、仓库:镜像的集中存放地
类似于github、码云
4、容器的资源使用
容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。
所有容器是共享宿主机的cpu、磁盘、内存。

五、镜像的操作
1、从仓库获取镜像
搜索镜像:docker search image_name
搜索结果过滤:
是否官方:docker search --filter "is-official=true" image_name
是否自动化构建:docker search --filter "is-automated=true" image_name
大于多少颗星星:docker search --filter stars=100 image_name
下载镜像:docker pull image_name
镜像被默认保存到 /var/lib/docker 目录下
2、本地镜像的查看:docker images
3、本地镜像的删除:docker rmi image_name/image_id
4、如果镜像比较多
列出所有的镜像ID:docker images -q
删除所有的镜像:docker rmi docker images -q

六、容器的操作
1、创建容器:docker run -itd --name=container_name image_name
注:同一个镜像可以创建多个容器,只要容器的名字不一样就可以
参数说明
-i:表示以交互模式运行
-d:表示后台运行容器,并返回容器ID
-t:为容器重新分配一个伪输入终端
–name:为容器指定名称(注意是杠杠)
2、查看容器(运行中):docker ps
3、查看容器(包括已停止的):docker ps -a
4、停止容器:docker stop container_name/container_id
5、启动容器:docker start container_name/container_id
6、重启容器:docker restart container_name/container_id
7、删除容器:docker rm container_name/container_id

继续阅读Docker学习(1)—基础命令

oracle数据库对象-schdeule_job

dbms_scheduler包提供的计划任务,是比dbms_job更强大,更好管理。数据库为oracle 11g。

1、创建测试表
create table SCHEDULE_JOB_TEST(a date);

2、用dbms_scheduler创建job

begin
  dbms_scheduler.create_job(job_name            => 'test_schedule_job',
                            job_type            => 'PLSQL_BLOCK',
                            job_action          => 'insert into JOB_TEST values(sysdate);',
number_of_arguments => 0, start_date => to_date('10-01-2020 00:00:00', 'dd-mm-yyyy hh24:mi:ss'), repeat_interval => 'Freq=Minutely;Interval=5', end_date => null, job_class => 'DEFAULT_JOB_CLASS', enabled => FALSE, auto_drop => TRUE, comments => '测试scheduler');
end; /

3、说明
1) job_name:任务名称
2)job_type:oracle 11g支持4种,取值
‘PLSQL_BLOCK’, ‘STORED_PROCEDURE’, ‘EXECUTABLE’, or ‘CHAIN’
(plsql语句块、存储过程、外部程序、作业链条)
3) job_action:根据job_type的不同,有不同的含义
如果job_type指定的是PL/SQL块,就需要输入完整的PL/SQL代码;
如果job_type指定的是存储过程,就需要指定存储过程的名字;
如果job_type指定的外部程序,就需要输入script的名称或者操作系统的指令名;
如果job_type指定的作业链条,需要输入chain的名称;
4)number_of_arguments:job的参数
5)start_date:开始时间
6)repeat_interval:运行间隔时间
7)end_date:结束时间
8)job_class:指定任务关联的CLASS,默认值为DEFAULT_JOB_CLASS
9)enabled:指定任务是否启用
10)auto_drop:当该标志被置为TRUE时,ORACLE会在满足条件时自动删除创建的任务
任务已过期;
任务最大运行次数已达MAX_RUNS的设置值;
任务未指定REPEAT_INTERVAL参数,仅运行一次;
11)comments:注释信息

4、查询job
SELECT * FROM DBA_SCHEDULER_JOBS;

5、启用job

begin
  dbms_scheduler.enable('test_schedule_job');
end;
/

6、执行job

begin
  dbms_scheduler.run_job('test_schedule_job');
end;
/

7、停止job

begin
  dbms_scheduler.disable('test_schedule_job');
end;
/

8、删除job

begin
  dbms_scheduler.drop_job('test_schedule_job');
end;
/

参考资料:
https://blog.csdn.net/cymm_liu/article/details/22318865
https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_sched.htm#ARPLS72235
https://blog.csdn.net/xlp789/article/details/98586077

Linux chattr/lsattr命令

1、chattr命令用于设置文件或文件夹的隐藏属性
一般格式:chattr [-RVf] [-+=aAcCdDeijsStTu] files…
说明:
i:不允许对文件进行删除、改名,也不能添加和修改数据
a:只能在文件中増加数据,但是不能删除和修改数据
u:在删除时,其内容会被保存,以保证后期能够恢复

2、例子
1)增加属性
chattr +iua cron/
2)解除属性
chattr -iua cron/

3、lsattr用来查看隐藏属性
lsattr
-u–ia——-e– ./cron

参考资料:
https://www.cnblogs.com/ftl1012/p/chattr.html