docker基础
1.docker复习
1.docker生命周期
镜像 image
容器 container
仓库 ,存放镜像的地儿,repos.....(仓库)
2.
docker run 镜像id #运行出容器
docker pull 镜像名 #从dockerhub下载镜像 私有的docker仓库
docker search 搜索docker镜像
docker ps 查看docker正在运行的容器进程
docker ps -a #查看所有运行过的容器记录
docker images -a #查看所有镜像文件
docker rm #删除容器
docker rmi #删除镜像
docker rm `docker ps -aq`
删除命令 添加 -f 参数,是强制删除容器,镜像记录
docker run -it centos /bin/bash
docker tag 镜像名 新的镜像名
docker tag centos yuchao163/s17centos
docker push yuchao163/s17centos
docker commit 提交容器记录,为新的镜像
docker save #将本地镜像,导出到一个文件
docker load #导入本地镜像压缩文件,到docker镜像列表中
#新docker命令学习
docker run -it --rm 94e /bin/bash
--rm 运行容器,退出后,删除容器记录
#给容器记录命名
docker run --name myredis 94e /bin/bash
#后台不间断运行一个 shell语句
docker run -d centos /bin/sh -c "while true;do echo 好嗨哦,感觉人生到达了巅峰; sleep 1;done"
-d 后台运行
centos 指定镜像文件
/bin/sh 指定shell解释器
-C 指定一个shell语句
#查看容器空间内的日志
docker logs 容器id
docker logs -f 容器id #不间断打印容器内日志信息
#进入正在运行的容器空间
docker exec -it 容器id /bin/bash
#启停docker容器
docker start 容器id
docker stop 容器id
#docker端口映射
,宿主机会有一个端口状态
192.168.11.250:8000
容器空间也会有一个端口
运行一个flask程序,开启8000端口
#容器内开启一个容器,提供web程序
#下载一个python 网络程序镜像,运行它,生成一个容器进程
docker run -d training/webapp -P
# -d 后台运行容器
# -P 随机映射一个宿主机端口,到容器空间内,暴露的端口
# -p 指定端口映射
docker run -d -p 4567:5000 training/webapp #指定宿主机的4567端口,映射到容器的5000端口
#进入到这个容器空间
docker exec -it 616 /bin/bash
#学习dockerfile
FROM scratch #制作base image 基础镜像,尽量使用官方的image作为base image
FROM centos #使用base image
FROM ubuntu:14.04 #带有tag的base image
#指定一个基础镜像
LABEL version=“1.0” #容器元信息,帮助信息,Metadata,类似于代码注释
LABEL maintainer=“yc_uuu@163.com"
#对于复杂的RUN命令,避免无用的分层,多条命令用反斜线换行,合成一条命令!
RUN yum update && yum install -y vim \
Python-dev #反斜线换行
RUN /bin/bash -c "source $HOME/.bashrc;echo $HOME”
#run指令是一个万能指令
WORKDIR /root #相当于linux的cd命令,改变目录,尽量使用绝对路径!!!不要用RUN cd
WORKDIR /test #如果没有就自动创建
WORKDIR demo #再进入demo文件夹
#ADD是添加文件,从物理机本地,添加到容器空间内
ADD and COPY
ADD hello / #把本地文件添加到镜像中,吧本地的hello可执行文件拷贝到镜像的/目录
ADD test.tar.gz /tmp #添加到根目录并解压
#并且ADD指令还有 解压缩的功能
WORKDIR /root
ADD hello test/ #进入/root/ 添加hello可执行命令到test目录下,也就是/root/test/hello 一个绝对路径
COPY hello test/ #等同于上述ADD效果
ADD与COPY
- 优先使用COPY命令
-ADD除了COPY功能还有解压功能
添加远程文件/目录使用curl或wget
#环境变量,ENV 尽可能使用ENV增加可维护性
ENV MYSQL_VERSION 5.6 #设置一个mysql常量
ENV MYSQL_VERSION 6.7
RUN yum install -y mysql-server=“${MYSQL_VERSION}”
RUN yum install -y mysql-server=“${MYSQL_VERSION}”
RUN yum install -y mysql-server=“${MYSQL_VERSION}”
RUN yum install -y mysql-server=“${MYSQL_VERSION}”
RUN yum install -y mysql-server=“${MYSQL_VERSION}”
#打包flask程序与dockerfile
1.准备一个flask代码文件
[root@master mydocker]# cat s17-flask.py
#coding:utf8
from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello():
return " s17 宇宙无敌"
if __name__=="__main__":
app.run(host='0.0.0.0',port=8080)
2.准备构建dockerfile,用于生成镜像
FROM centos #指定一个基础镜像
COPY CentOS-Base.repo /etc/yum.repos.d/ #拷贝本地的yum仓库,到容器空间内
COPY epel.repo /etc/yum.repos.d/ #
RUN yum clean all
RUN yum install python-setuptools -y
RUN easy_install flask
COPY s17-flask.py /opt/
WORKDIR /opt
EXPOSE 8080 #暴露容器的8080端口,供给物理机去映射访问
CMD ["python","s17-flask.py"] #cmd代表执行命令
3.准备 CentOS-Base.repo epel.repo
4.确保 dockerfiel,flask代码,yum仓库文件,在同一层目录
5.构建镜像
docker build .
6.检查docker镜像文件,是否有自己创建的镜像
7.修改镜像的名字
docket tag 镜像名 新的镜像名
8.运行镜像,生成容器实例
docker run -p 8080:8080 -d 04b
9.检查docker端口映射状态
docker port 容器id
10.访问windows,找到容器内的应用
1.上传本地镜像到共有仓库
yuchao163
Zz2222zz
2.登陆docker hub,在linux中
docker login
输入账号密码
3.推送本地镜像到公网
docker push yuchao163/s17-zz-hello
4.搭建私有docker仓库
1.创建一个私有仓库的容器实例
docker run -d \
-p 5000:5000 \
-v /opt/data/registry:/var/lib/registry \
registry
#-v参数,数据卷挂载
2.访问私有仓库api,查看是否有结果
http://192.168.11.250:5000/v2/_catalog
3.修改docker配置文件,支持非https方式,推送
cat /etc/docker/daemon.json
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"],
"insecure-registries":["192.168.11.250:5000"]
}
~
4.修改了docker配置文件,需要制定docker服务,去加载这些代码
编辑这个文件 /lib/systemd/system/docker.service ,写入新的配置
vim /lib/systemd/system/docker.service
写入如下配置,改成和我一样就行
[Service]
EnvironmentFile=-/etc/docker/daemon.json
5.修改了docker配置文件,重新加载docker
systemctl daemon-reload
6.重启docker
systemctl restart docker
7.由于重启了docker,私有仓库的容器也挂了,需要重新启动
docker run --privileged=true -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry
8.修改本地镜像的名字,改成私有仓库的地址开头,推送私有镜像
docker tag 镜像名 私有仓库地址/镜像名
9.推送本地镜像到 私有仓库
docker push 镜像名
#运维开发工程师
运维+开发的技能
监控平台 zabbix软件
堡垒机平台
资产管理平台 cmdb
1.salt安装服务器环境
准备2台机器
192.168.11.250 master端(主人)
192.168.11.167 minion端 (奴隶 )
2.两台机器配置hosts文件,用于加速域名解析,以及分别安装 salt-master 和salt-minion软件
服务端:vim /etc/hosts
192.168.11.167 s17slave
192.168.11.250 s17master
客户端:同样 vim /etc/hosts
192.168.11.167 s17slave
192.168.11.250 s17master
3.分别安装软件
安装master服务端
yum install salt-master -y
安装salve客户端
yum install salt-minion -y
4.主master的配置文件
如下 /etc/salt/master
interface: 0.0.0.0
publish_port: 4505
user: root
worker_threads: 5ret_port: 4506
pidfile: /var/run/salt-master.pid
log_file: /var/log/salt/master
~
5.从 minion的配置文件
master: s17master
master_port: 4506
user: rootid: s17slave
acceptance_wait_time: 10log_file: /var/log/salt/minion
6.分别开启 salt-master salt-minion,查看秘钥接收情况
salt-key * #查看所有秘钥情况
salt-key -a 秘钥名 #单独的接收一个秘钥信息
#秘钥接收后,就被管控了
#让s17slave这台机器,执行一条命令
salt "s17slave" cmd.run "touch /tmp/大烧饼.txt "
#检查两条秘钥情况
在主执行
salt-key -f s17slave
在从执行
salt-call --local key.finger
#salt-key
只有Master接受了Minion Key后,才能进行管理。具体的认证命令为salt-key常用的有如下命令。
复制代码
[root@linux-node1 ~]# salt-key -L
Accepted Keys: #已经接受的key
Denied Keys: #拒绝的key
Unaccepted Keys:#未加入的key
Rejected Keys:#吊销的key
#常用参数
-L #查看KEY状态
-A #允许所有
-D #删除所有
-a #认证指定的key
-d #删除指定的key
-r #注销掉指定key(该状态为未被认证)
#在master端/etc/salt/master配置
auto_accept: True #如果对Minion信任,可以配置master自动接受请求
#检测从机器是否存活
salt "*" test.ping
#salt的命令参数格式
salt命令 参数 目标 salt模块的函数 远程执行的参数
#返回值的格式替换
salt --out=json "*" cmd.run "hostname"
#返回yaml的语法格式
salt --out=yaml "*" cmd.run "hostname"
#远程安装nginx
salt "*" pkg.install "nginx"
salt "*" pkg.remove "nginx"
#yaml语法学习
{
"s17":{
"男同学":["带劲","虎牙","股价为"],
"女同学":["卜老师","于建才","湿老师"]
}
}
#yaml语法转换如下
"s17":
"男同学":
- "带劲"
- "虎牙"
- "股价为"
"女同学":
- "嫖老师"
- "于建才"
- "股价为"
#salt数据管理之grains
salt 's17slave' grains.items
salt 's17slave' grains.item ipv4 #单独找出ipv4的信息
#远程关机
local.cmd('*','cmd.run',['poweroff'])

浙公网安备 33010602011771号