docker学习0513

一、docker compose服务编排

微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大。
1. 要从Dockerfile build image 或者去dockerhub拉取image
2. 要创建多个container
3. 要管理这些container(启动停止删除)

1.1概述

Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止。

  1. 利用 Dockerfile 定义运行环境镜像
  2. 使用 docker-compose.yml 定义组成应用的各服务
  3. 运行 docker-compose up 启动应用

1.2Docker Compose 二进制包方式安装

下载

curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

设置文件可执行权限

chmod +x /usr/local/bin/docker-compose

查看版本信息

docker-compose -version

1.3卸载Docker Compose

rm /usr/local/bin/docker-compose

1.4使用docker compose编排nginx+hello_world项目

创建docker-compose目录

mkdir /root/docker-compose
cd /root/docker-compose

编写 docker-compose.yml 文件

vim docker-compose.yml

#内容如下:

version: '3'
services:
  nginx:
   image: nginx
   ports:
    - 80:80
   links:
    - helloWorld
   volumes:
    - /root/docker-compose/nginx/conf.d:/etc/nginx/conf.d
   
  helloWorld:
    image: hello_world:1.0
    expose:
      - "8080"

创建./nginx/conf.d目录

mkdir -p /root/docker-compose/nginx/conf.d
cd /root/docker-compose/nginx/conf.d
vim nginx.conf

#内容如下:

server {
    listen 80;
    access_log off;

    location / {
        proxy_pass http://helloWorld:8080;
    }
   
}

在~/docker-compose 目录下 使用docker-compose 启动容器

docker-compose up

测试访问

curl http:47.15.49.148:80/sayHello

二、私有仓库搭建

  • 搭建

拉取

docker pull registry

启动私有仓库容器

docker run -id --name=registry -p 5000:5000 registry

验证

curl http://127.0.0.1:5000/v2/_catalog

修改daemon.json,用于让docker信任私有仓库地址

vim /etc/docker/daemon.json    

新增

"insecure-registries":["私有仓库服务器真实ip:5000"]

重启docker 服务

systemctl restart docker

启动私有有仓库

docker start registry

  • 将镜像上传至私有仓库

标记镜像为私有仓库的镜像

docker tag hello_world:1.0 私有仓库服务器IP:5000/hello_world:1.1

上传标记的镜像

docker push 私有仓库服务器IP:5000/hello_world:1.1

  • 从私有仓库拉取镜像

拉取镜像

docker pull 私有仓库服务器ip:5000/hello_world:1.1

拉取镜像

docker pull 127.0.0.1:5000/hello_world:1.1

三、重启策略

设置容器的重启策略,以决定在容器退出时Docker守护进程是否重启刚刚退出的容器

--restart=策略参数

参数说明:

no: 默认策略,在容器退出时不重启容器
on-failure: 在容器非正常退出时(退出状态非0),才会重启容器 ,最多重启3次
always: 在容器退出时总是重启容器
unless-stopped: 在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

注:

–restart选项通常只用于detached模式的容器。
–restart选项不能与–rm选项同时使用。
–restart选项适用于detached模式的容器
–rm选项适用于foreground模式的容器。
在docker ps查看容器时,对于使用了–restart选项的容器,其可能的状态只有Up或Restarting两种状态。
 

  • 设置未运行容器的重启策略(mysql57 )

docker run -d -p 3306:3306 --name mysql57 -e MYSQL_ROOT_PASSWORD=root --restart=always f83a2938370c

  • 设置运行容器的重启策略

docker update --restart=always < container >

  • 查看容器重启信息

查看容器重启次数

    docker inspect -f “{{ .RestartCount }}” ba-208

查看容器最后一次的启动时间

    docker inspect -f “{{ .State.StartedAt }}” ba-208

  • 重启docker测试重启策略

    systemctl stop docker
    systemctl restart docker

四、jenkins安装

docker search jenkins
docker pull jenkins/jenkins
docker run -d  --name jenkins -p 8091:8080  jenkins/jenkins
查看logs日志并获取初始密码
docker logs jenkins

五、mysql安装

docker search mysql
docker pull mysql
启动命令
docker run -d -p 3306:3306 --name mysql57  -e MYSQL_ROOT_PASSWORD=root --restart=always f83a2938370c

 

六、dockerfile创建redis镜像

6.1创建目录

mkdir -p /home/hd/docker/dockerfile/redis

6.2创建dockerfile

cd /home/hd/docker/dockerfile/redis
vim reids_dockerfile

reids_dockerfile内容

FROM centos:7.7.1908
ADD redis-5.0.3.tar.gz /home

MAINTAINER redis5.0.3_hd
 
run yum install -y wget install make gcc libgcc gcc-c++ glibc-devel make \
    && mkdir -p /docker/redis/{install,conf,data,log} \
    && mv /home/redis-5.0.3 /docker/redis/install/ \
    && cd /docker/redis/install/redis-5.0.3 \
    && make \
    && make install PREFIX=/docker/redis/ \
    && rm -rf /docker/redis/install/*.gz \
   
EXPOSE 6379
CMD ["/bin/bash/bin/redis-server","/docker/redis/conf/redis.conf"]

注:上传 redis-5.0.3.tar.gz 到目录:/home/hd/docker/dockerfile/redis

6.3通过dockerfile构建镜像

cd /home/hd/docker/dockerfile/redis
docker build -f ./redis_dockerfile -t redis_hd:5.0.3 .

6.4创建配置目录和上传配置文件

#1.创建目录

mkdir -p /home/hd/docker/redis/conf

#2.下载配置文件并改名6379.conf

wget http://download.redis.io/redis-stable/redis.conf

#3.将下载的配置文件中的对应配置修改为如下:

appendonly yes
notify-keyspace-events "Egx"

logfile '/docker/redis/log/6379.log'

dir /docker/redis/data/6379
#bind 127.0.0.1
requirepass 123456
# 设为no, 因为docker启动时会通过-d参数来让其实现后台运行
daemonize no

6.5启动容器

docker run  -d -p 6379:6379 --name "redis_hd" \
    -v /home/hd/docker/redis/conf:/docker/redis/conf \
    -v /home/hd/docker/redis/data/:/docker/redis/data/ \
    -v /home/hd/docker/redis/log:/docker/redis/log \
    redis_hd:5.0.3 \
    /docker/redis/bin/redis-server /docker/redis/conf/6379.conf

6.6测试验证

查看ip

docker inspect redis_hd|grep IP

远程连接

redis-cli -h 172.17.0.2 -p 6379

进入docker 查看

docker exec -it 7730ec6d961f /bin/bash

6.7将镜像打包为压缩包,供离线环境使用

docker save -o redis_hd-5.0.3.tar redis_hd:5.0.3

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值