特性

容器

虚拟机

启动

秒级

分钟级

硬盘使用

一般为 MB

一般为 GB

性能

接近原生

系统支持量

单机支持上千个容器

一般几十个

容器三大基本概念
镜像 image
容器 container
仓库 repository
docker整个生命周期就是这三个概念。

安装docker
1.卸载旧版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

2.设置存储库
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
sudo yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装docker社区版
sudo yum install docker-ce
4.启动关闭docker
systemctl start docker

docker 镜像加速

#一条命令加速
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://95822026.m.daocloud.io

docker基础命令注释

[root@docker ~]# docker --help

Usage:
docker [OPTIONS] COMMAND [arg...]

       docker daemon [ --help | ... ]

       docker [ --help | -v | --version ]

A
self-sufficient runtime for containers.

 

Options:

  --config=~/.docker              Location of client config files  #客户端配置文件的位置

  -D, --debug=false               Enable debug mode  #启用Debug调试模式

  -H, --host=[]                   Daemon socket(s) to connect to  #守护进程的套接字(Socket)连接

  -h, --help=false                Print usage  #打印使用

  -l, --log-level=info            Set the logging level  #设置日志级别

  --tls=false                     Use TLS; implied by--tlsverify  #

  --tlscacert=~/.docker/ca.pem    Trust certs signed only by this CA  #信任证书签名CA

  --tlscert=~/.docker/cert.pem    Path to TLS certificate file  #TLS证书文件路径

  --tlskey=~/.docker/key.pem      Path to TLS key file  #TLS密钥文件路径

  --tlsverify=false               Use TLS and verify the remote  #使用TLS验证远程

  -v, --version=false             Print version information and quit  #打印版本信息并退出


Commands:

    attach    Attach to a running container  #当前shell下attach连接指定运行镜像

    build     Build an image from a Dockerfile  #通过Dockerfile定制镜像

    commit    Create a new image from a container\'s changes  #提交当前容器为新的镜像

    cp    Copy files/folders from a container to a HOSTDIR or to STDOUT  #从容器中拷贝指定文件或者目录到宿主机中

    create    Create a new container  #创建一个新的容器,同run 但不启动容器

    diff    Inspect changes on a container\'s filesystem  #查看docker容器变化

    events    Get real time events from the server#从docker服务获取容器实时事件

    exec    Run a command in a running container#在已存在的容器上运行命令

    export    Export a container\'s filesystem as a tar archive  #导出容器的内容流作为一个tar归档文件(对应import)

    history    Show the history of an image  #展示一个镜像形成历史

    images    List images  #列出系统当前镜像

    import    Import the contents from a tarball to create a filesystem image  #从tar包中的内容创建一个新的文件系统映像(对应export)

    info    Display system-wide information  #显示系统相关信息

    inspect    Return low-level information on a container or image  #查看容器详细信息

    kill    Kill a running container  #kill指定docker容器

    load    Load an image from a tar archive or STDIN  #从一个tar包中加载一个镜像(对应save)

    login    Register or log in to a Docker registry#注册或者登陆一个docker源服务器

    logout    Log out from a Docker registry  #从当前Docker registry退出

    logs    Fetch the logs of a container  #输出当前容器日志信息

    pause    Pause all processes within a container#暂停容器

    port    List port mappings or a specific mapping for the CONTAINER  #查看映射端口对应的容器内部源端口

    ps    List containers  #列出容器列表

    pull    Pull an image or a repository from a registry  #从docker镜像源服务器拉取指定镜像或者库镜像

    push    Push an image or a repository to a registry  #推送指定镜像或者库镜像至docker源服务器

    rename    Rename a container  #重命名容器

    restart    Restart a running container  #重启运行的容器

    rm    Remove one or more containers  #移除一个或者多个容器

    rmi    Remove one or more images  #移除一个或多个镜像(无容器使用该镜像才可以删除,否则需要删除相关容器才可以继续或者-f强制删除)

    run    Run a command in a new container  #创建一个新的容器并运行一个命令

    save    Save an image(s) to a tar archive#保存一个镜像为一个tar包(对应load)

    search    Search the Docker Hub for images  #在docker
hub中搜索镜像

    start    Start one or more stopped containers#启动容器

    stats    Display a live stream of container(s) resource usage statistics  #统计容器使用资源

    stop    Stop a running container  #停止容器

    tag         Tag an image into a repository  #给源中镜像打标签

    top       Display the running processes of a container #查看容器中运行的进程信息

    unpause    Unpause all processes within a container  #取消暂停容器

    version    Show the Docker version information#查看容器版本号

    wait         Block until a container stops, then print its exit code  #截取容器停止时的退出状态值

 

Run \'docker COMMAND --help\' for more information on a command.  #运行docker命令在帮助可以获取更多信息

dockefile的学习

指令如下
#你的项目依赖于什么操作系统,这里就指定什么操作系统 
FROM scratch #制作base image 基础镜像,尽量使用官方的image作为base image
FROM centos #使用base image
FROM ubuntu:14.04 #带有tag的base image

#label标签 ,告诉别人,这个dockerfile是谁写的
LABEL version=“1.0” #容器元信息,帮助信息,Metadata,类似于代码注释
LABEL     maintainer=“yc_uuu@163.com"


#run指令是一个万能指令 

#对于复杂的RUN命令,避免无用的分层,多条命令用反斜线换行,合成一条命令!
RUN yum update && yum install -y vim \
    Python-dev #反斜线换行
RUN /bin/bash -c "source $HOME/.bashrc;echo $HOME”

#
WORKDIR /root #相当于linux的cd命令,改变目录,尽量使用绝对路径!!!不要用RUN cd
WORKDIR /test #如果没有就自动创建
WORKDIR demo #再进入demo文件夹
RUN pwd     #打印结果应该是/test/demo


# ADD是可以将本地代码,添加到容器空间内
# ADD不仅仅是添加,还可以解压缩文件,注意!!

ADD and COPY 
ADD hello /  #把本地文件添加到镜像中,吧本地的hello可执行文件拷贝到镜像的/目录
ADD test.tar.gz /  #添加到根目录并解压




WORKDIR /root
ADD hello test/  #进入/root/ 添加hello可执行命令到test目录下,也就是/root/test/hello 一个绝对路径


#copy 就是将宿主机的文件,拷贝到容器空间内,且没有解压效果 


COPY hello test/  #等同于上述ADD效果

ADD与COPY
   - 优先使用COPY命令
    -ADD除了COPY功能还有解压功能
    
    
    
添加远程文件/目录使用curl或wget

ENV #环境变量,尽可能使用ENV增加可维护

ENV MYSQL_VERSION 5.7 #设置一个mysql常量

RUN yum install -y mysql-server=“${MYSQL_VERSION}”


#dockerfile实战,构建自己的flaks镜像 

1.准备一个flask代码文件,内容如下
cat s18-flask.py 
#coding:utf8
from flask import Flask
app=Flask(__name__)
@app.route(\'/\')
def hello():
    return "hello,i am docker"
if __name__=="__main__":
    app.run(host=\'0.0.0.0\',port=8080)

    
2.编写dockerfile
FROM centos        #指定centos基础镜像 
COPY CentOS-Base.repo /etc/yum.repos.d/        #拷贝宿主机的文件,到容器空间下
COPY epel.repo /etc/yum.repos.d/             #拷贝宿主机的文件,到容器空间下
RUN yum clean all                             #执行清空yum缓存的命令
RUN yum install python-setuptools -y        #想安装python依赖工具
RUN easy_install flask                        #是想让docker自动的帮咱们安装python2的flask模块
COPY s18-flask.py /opt/                        #把本地的代码文件,拷贝到容器的/opt目录下 
WORKDIR /opt                                #进入到/opt目录下
EXPOSE 8080                                    #暴露容器的8080端口,供给外部宿主机去访问
CMD ["python","s18-flask.py"]                #cmd代表你要执行的命令



3.构建build这个dockerfile
确保文件都准备好了,如下所示
[root@wangdachui s18dockerfile]# ls
CentOS-Base.repo  Dockerfile  epel.repo  s18-flask.py


4.构建dockerfile
docker build .  

5.通过自己构建的镜像,运行一个flask程序
docker run -d -it --name flask  -p 5555:8080  s18-flask 

6.通过浏览器去访问linux宿主机的 5555端口,即可访问到flask程序

docker 仓库 构建 私有镜像

1.下载docker私有镜像
docker pull registry

2.修改docker的配置文件
#修改如下配置文件
vim /etc/docker/daemon.json

修改内容如下
{“registry-mirrors”: [“http://95822026.m.daocloud.io”],
“insecure-registries”:[“192.168.226.128:5000”]
}

3.修改docker的service配置文件,让它加载/etc/docker/daemon.json
修改如下文件
vim /lib/systemd/system/docker.service

添加如下配置到 [service]代码块中
EnvironmentFile=-/etc/docker/daemon.json

4.重启docker的服务
systemctl daemon-reload
systemctl restart docker

5.重新启动一个私有镜像仓库的容器实例

docker run –privileged=true -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry

–privileged=true docker容器的安全机制:设置特权级运行的容器

6.推送本地镜像,到私有仓库中
docker push 192.168.226.128:5000/s18-hello-world

7.检查docker私有仓库的api地址,检查json数据
http://192.168.226.128:5000/v2/_catalog

8.尝试下载私有仓库的镜像
docker pull 192.168.226.128:5000/s18-hello-world

 

rabbitmq 消息队列的学习

注意,保证服务器的内存足够,磁盘足够,以及删除/etc/hosts中没有用的dns解析 

1.优点,能够保证消息数据持久化,不丢失


安装学习rabbitmq消息队列,配置好阿里云的yum源

1.yum -y install erlang  rabbitmq-server

2.启动rabbitmq服务端
systemctl start rabbitmq-server

3.开启rabbitmq的web控制台
rabbitmq-plugins enable rabbitmq_management

4.重启后生效web界面
http://192.168.226.128:15672/

5.创建rabbitmq用户
sudo rabbitmqctl add_user yangyang 1236.设置用户的权限,为admin管理员权限
sudo rabbitmqctl set_user_tags yangyang administrator

7.允许yangyang这个用户对所有的队列进行读写
sudo rabbitmqctl set_permissions -p "/" yangyang ".*" ".*" ".*"


8.可以用yangyang登录 rabbitmq的后台界面管理了

rabbitmq练习ack机制,消息队列持久化,查看博客
https://www.cnblogs.com/pyyu/p/10318053.html

 

版权声明:本文为zaizai1573原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zaizai1573/p/10674170.html