docker实战

一、docker安装。

     1、安装环境:centos7.0以上版本,及关闭防火墙

          systemctl stop firewalld.service            #停止firewall
          systemctl disable firewalld.service        #禁止firewall开机启动

     2、本地yum源安装。

          [root@docker ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

          [root@docker ~]#  yum install epel-release -y

          [root@docker yum.repos.d]# yum install -y yum-utils    //utils 主要作用是管理repository及扩展包的工具

          [root@docker /]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

     3、通过yum安装docker及启动。

          [root@docker /]# yum list docker-ce --show-duplicates   //查看docker-ce版本

          [root@docker /]# yum -y install docker-ce  //安装

          [root@docker /]# systemctl start docker
          [root@docker /]# systemctl enable docker

二、docker基础配置。

      1、主配置文件

          [root@docker ~]# more /etc/docker/daemon.json
{
  "graph": "/data/docker",                      //工作目录
  "storage-driver": "overlay2",
  "insecure-registries": ["registry.access.redhat.com","quay.io"],     //私有仓库地址
  "registry-mirrors": ["https://q2gr04ke.mirror.aliyuncs.com"],          //仓库加速器
  "bip": "172.7.5.1/24",                                                                     //docker网桥IP。
  "exec-opts": ["native.cgroupdriver=systemd"],
  "live-restore": true
}

          重启docker使配置文件生效

        [root@docker ~]# systemctl restart docker

        [root@docker ~]# docker info  //查看docker信息

     2、推送到远程仓库。

        [root@docker ~]# docker login docker.io    //登录到dockerhub

        [root@docker ~]# docker search centos  //查看hub上centos镜像   

        [root@docker ~]# docker pull crazycisco/nginx_curl   //下载镜像

        [root@docker ~]# docker images   //查看本地镜像  docker rmi xx 删除镜像

        [root@docker ~]# docker tag fce289e99eb9 crazycisco/nginx_curl:v1.0  //打标记

        [root@docker ~]# docker push ansible/centos7-ansible

     3、启动关闭容器

       [root@docker ~]# docker run -ti --name c3 centos/tools /bin/sh  //启动一个容器并进入该容器

      [root@docker ~]# docker run -ti -d --name c10 --restart always centos/tools /bin/bash //设置开机自动启动

       [root@docker ~]# docker attach c3 //连接到容器,exit容器关闭,ctrl + p + q 容器不关闭在后台运行

       [root@docker ~]# docker exec -ti c1 /bin/sh  //进入容器   exit容器不关闭

       [root@docker ~]# docker run --rm --name c3 centos/tools /bin/sh  //启动一个容器并进入该容器

       [root@docker ~]# docker run -ti -d --name c2 centos/tools /bin/bash  //启动容器并直接在后台运行

       [root@docker docker]# for i in `docker ps -a |grep Exited |grep -v grep  |awk '{print $1}'`;do docker rm -f $i;done //批量删除已关闭容器

       [root@docker ~]# docker run -ti -d --name c6 -v /data/log/erp/:/data/log/erp/ -v /data/web/erp/:/data/web/erp/ centos/tools /bin/bash  //数据持久化,映射本地目录到容器

       [root@docker ~]# docker run -ti -d -P --name c13 crazycisco/nginx_curl /bin/sh  //端口映射P为映射本地随机端口

       [root@docker ~]# docker run -ti -d -p 8888:80 --name c14 crazycisco/nginx_curl /bin/sh  //本地8888到容器80

         #apt-get update && apt-get install  net-tools  -y  //在容器中安装工具

 

       4、容器镜像的制作与导入导出。

         (1)、把现有容器制作成镜像

        [root@docker erp]# docker commit c6 centos/httpd  //对该容器c6保存成镜像centos/httpd,该镜像可以从新被使用。

         (2)、把现有centos系统打包制作成镜像

         [root@docker ]#  tar -cvpf /tmp/system.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot .   //将现有系统打包

         [root@docker tmp]# docker import system.tar   //将打包文件导入到镜像

         [root@docker tmp]# docker tag bc3a00846166 system:v1.0  //设置tar

         [root@docker tmp]# docker run -ti -d --name system system:v1.0 /bin/bash //运行启动

         (3)、镜像的导出与导入

        [root@docker docker]# docker save fd317373544e >fd317373544e:v1.0.tar   //将本地镜像导出到本地(主要用于备份)

        [root@docker docker]# docker load < ./fd317373544e\:v1.0.tar  //导入镜像
        [root@docker docker]# docker tag  fd317373544e centos/toos:v1.1 //设置tag
        [root@docker docker]# docker images //查看导入成功并改名的镜像
        REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
        crazycisco/nginx_curl     latest              cff1da6f9b7e        3 days ago          136MB
        hello-world               latest              fce289e99eb9        10 months ago       1.84kB
        hello-world               v1.1                fce289e99eb9        10 months ago       1.84kB
        centos/toos               v1.1                fd317373544e        10 months ago       1.51GB
        ansible/centos7-ansible   latest              688353a31fde        2 years ago         447MB

        [root@docker docker]# docker export -o nginx:v1.0.tar c12 //导出命令二

        [root@docker docker]# docker import nginx\:v1.0.tar nginx:v1.0 //导入镜像命令二

         (4)、镜像导出tar包及导入

         [root@master data]# docker save -o kube-scheduler.tar mirrorgooglecontainers/kube-scheduler:v1.16.0-alpha.1

         [root@node-02 images_tar]# docker load --input kube-proxy1.tar 

二、容器的网络模式。

     1、host模式

           [root@docker ~]# docker run -ti --name c17 --net=host crazycisco/nginx_curl /bin/bash  //与宿主机共用一个网络

     2、none模式

           [root@python ~]# docker run -ti --name c17 --net= crazycisco/nginx_curl /bin/bash  none模式:无网卡信息
           [root@python ~]# pipework docker0 -i eth0 144e60c19ab6 172.17.0.100/16@172.17.0.1 需要使用pipework工具添加ip

     3、桥模式

                

    4、container模式
          

 

三、Dockerfile与实战

      1、Dockerfile

# more Dockerfile

FROM java:8
MAINTAINER waitfish from (crazycisco@126.com)
#基本信息
#设置环境变量
ENV TZ Asia/Shanghai
ENV DUBBO_IP_TO_REGISTRY 192.168.3.7
ENV DUBBO_PORT_TO_REGISTRY 20880
#复制jar文件到镜像
ADD application.properties /
ADD xxx.jar /
#ENTRYPOINT ["nohup","java","-jar","xxx.jar","&"]
ENTRYPOINT ["java","-jar","xxx.jar"]
EXPOSE  20880
EXPOSE  9280
EXPOSE  9997
 

      2、自动发布脚本

#!/bin/bash
APP_HOME="/docker/xxx"
date=$(date +%Y%m%d%H%M)
remote=xx.xx.xx.xx
app=xxx
path=/root/.jenkins/workspace/xxx/mall_core/target
local_log_path=/data/log/xxx
docker_log_path=/data/log/xxx
old_docker_name="`docker ps -a | awk '{print $NF}' | sort | awk 'NR>3{print $0}' |grep -v NAMES | grep erp`"

cd $APP_HOME
#stop docker and renmae docker
sudo docker stop $app
sleep 2
sudo docker rename $app $app$date
[ $? -eq 0 ] && echo 'docker stop and backup success!'
#git pull jar 
rsync -avzP --delete -e 'ssh -p 62222' root@$remote:$path/*.jar $APP_HOME
[ $? -eq 0 ] && echo 'pull jar package finished!'

#docker build
sudo docker build -t xxx/v1 .
if [ $? -eq 0 ];        then
        echo 'docker build success!'
else
        echo 'docker build fail!'
fi
sleep 3

#docker start
sudo docker run -i --name $app -P -v $local_log_path:$docker_log_path erp/v1 /bin/bash &
if [ $? -eq 0 ];        then
        echo 'docker startup success!'
else
        echo 'docker startup fail!'
fi

chown -R www-data:www-data $local_log_path
sudo docker rm $old_docker_name
[ $? -eq 0 ] && echo 'delete old docker is OK'

       四、容器的资源限制

[root@node-01 ~]# docker run -it --name stree docker.io/lorel/docker-stress-ng:latest stress --help //查看语法

[root@node-01 ~]# docker run --name stress -it --rm -m 256m lorel/docker-stress-ng:latest stress --vm 2 //压测内存 压测2X256M,限制256M

[root@node-01 ~]# docker run --name stress -it --rm --cpus 2 lorel/docker-stress-ng:latest stress --cpu 8 //压测CPU 压测数量8核限制2核

[root@node-01 ~]# docker top stress //查看容器所占的资源

[root@node-01 ~]# docker stats //查看容器资源使用情况

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值