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'])

 

posted @ 2019-06-10 13:34  7411  阅读(179)  评论(0)    收藏  举报