docker的最简单实战

如果说git是解决代码版本管理的终极方案,那么docker就是解决系统部署需要依赖环境的终极方案。

对于传统的解决服务部署环境依赖的方案可能是虚拟机,例如vmware或者是python的virtualenv等,对比传统的虚拟化技术方案,docker有哪些优势呢

1,启动方面,docker的启动可以说是秒级的,虚拟机可能会耗费分钟级的

2,硬盘使用,docker使用的是MB级别的,虚拟机使用的是GB级别的

3,性能,docker的性能基本解决原生,虚拟机是要弱于原生的

4,容量,docker单机可以支持上千个容器,虚拟机支撑几十个已经是极限了

除此之外,docker还有更轻量,高可用,快速部署和迁移等优点。

至此,我们了解了docker的诸多优点,下面我们就开始docker的最简单实战

1,docker安装(实验环境centos7)

1,1移除旧版docker

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

1,2安装依赖包

      sudo yum install -y yum-utils \

                                     device-mapper-persistent-data \

                                     lvm2

1,3安装docker

      sudo yum install docker

1,4检查docker状态,执行docker命令

docker run hello-world,出现以下界面即为成功docker的最简单实战_第1张图片

2,制作基础镜像(基于centos的镜像)

2,1拉取centos镜像

docker pull centos

这时候执行docker images可以查看到之前的hello-world镜像和centos镜像

2,2进入镜像并初始化一些工具(crontab,pip, supervisor等)

docker run -it docker.io/centos:latest /bin/bash(此时进入容器的命令行)

执行以下命令安装一些工具(cron,pip,supervisor)

yum install -y epel-release crontabs

yum install -y python-pip

pip install --upgrade pip

pip install supervisor

此时可以用docker ps命令查看运行中的容器并记录下CONTAINER ID

docker commit dd0b0740c970 centos/nginx-proxy-base:latest 创建镜像

docker images查看镜像(此时可以看到centos/nginx-proxy-base已经在镜像列表了)

3,编写Dockfile制作镜像

创建Dockfile所在目录 mkdir /data/docker_nginx-proxy

在该目录下创建supervisor配置文件supervisord.conf

[supervisord]
user=root
nodaemon=true

[program:crond]
user=root
command=crond -n

[program:nginx]
user=root
command=/usr/sbin/nginx

创建crontab.list

0 3 * * * /usr/sbin/nginx -s reload > /dev/null 2>&1

编辑Dockfile文件

FROM centos/nginx-proxy-base:latest
#MAINTAINER
#ADD nginx /usr/sbin/nginx
ADD supervisord.conf /etc/supervisord.conf
ADD crontab.list /etc/crontab.list
#ADD etc/nginx /etc/

RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo Asia/Shanghai > /etc/timezone && \
    yum -y install nginx && \
    echo 'daemon off;' >> /etc/nginx/nginx.conf && \
    crontab /etc/crontab.list

CMD ["/usr/bin/supervisord"]
 

构建镜像

docker build -t="centos/nginx-proxy:v1" ./

运行容器

docker run -v /data/docker:/data/wwwlogs -ti -p 8083:80 centos/nginx-proxy:v1

4,私有仓库

之前的操作只是在本地生成了镜像和创建了容器,如何实现镜像共享呢,可以使用docker registry 创建一个私有仓库

1,拉取私有仓库registry

docker pull registry

2,拉起仓库

docker run -d -p 5000:5000 -v /data/images:/tmp/registry docker.io/registry

3,推送镜像

通过docker images找到要推送的image id

docker tag a234ca1493ee localhost:5000/centos/nginx-proxy:latest (为镜像打标记)

docker push localhost:5000/centos/nginx-proxy:latest(推送)

4,测试

删除本地的镜像

docker rmi localhost:5000/centos/nginx-proxy

重新拉取镜像

docker pull localhost:5000/centos/nginx-proxy

全文完

加qq群交流:994625692(可以聊天聊地的那种)

你可能感兴趣的:(Python,docker,Linux)