Docker 学习笔记

Docker install

一、 Docker 安装要求

  • 64位操作系统
  • 最好是3.8以上内核

二、 Cent OS 6.5 默认内核为 2.6

1. 升级内核

a) 先执行以下命令
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -ivh http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm
yum -y --enablerepo=elrepo-kernel install kernel-lt
b) 修改配置文件
vim /etc/grub.conf // 将 default=1 修改为 default=0
c) reboot 重启电脑

重启后如果不出意外的话,再次查看内核,您的 CentOS 内核将会显示为 3.10

恭喜您!下面我们就一起来安装 Docker 了

附: uname -r 可以查看当前系统内核版本

三、安装 Docker

1. 通过以下命令即可安装 Docker 软件

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum -y install docker-io 

2. 通过以下命令查看 Docker 是否安装成功

docker version // 若输出了 Docker 的版本号,则说明安装成功了

3. 可通过以下命令启动 Docker 服务

service docker start // Docker 服务启动完毕,我们就可以使用 Docker 了

4. 好像丢掉了一句,到后边会报错

yum upgrade device-mapper-libs 

四、下载 Docker 镜像

1. 官网网址: https://www.docker.com/

五、Docker的使用

1. 测试镜像

docker run -i -t centos:6 /bin/bash

常用 docker 命令

1、docker -h 帮助
2、获取镜像
  sudo docker pull NAME[:TAG]
  sudo docker pull centos:latest
3、启动Container盒子
  sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  sudo docker run -t -i contos /bin/bash
4、查看镜像列表,列出本地的所有images
  sudo docker images [OPTIONS] [NAME]
  sudo docker images centos
5、查看容器列表,可看到我们创建过的所有container
  sudo docker ps [OPTIONS]
  sudo docker ps -a
6、删除镜像,从本地删除一个已经下载的镜像
  sudo docker rmi IMAGE [IMAGE...]
  sudo docker rmi centos:latest
7、移除一个或多个容器实例
  sudo docker rm [OPTIONS] CONTAINER [CONTAINER...]
8、移除所有未运行的容器
  sudo docker rm sudo docker ps -aq
9、停止一个正在运行的容器
  sudo docker kill [OPTIONS] CONTAINER [CONTAINNER...]
  sudo docker kill 026e
10、重启一个正在运行的容器
  sudo docker restart [OPTIONS] contains[CONTAINER]
  sudo docker restart 026e
11、停止一个已经停止的容器
  sudo docker start [OPTIONS] CONTAINER [CONTAINER..]
  sudo docker start 026e
12、进去一个已经运行的容器
  sudo docker exec -it /bin/bash
13、为镜像添加 Tag
  sudo docker tag centos:7 172.16.166.130/fsdn/centos:7
14、创建 docker 容器, 但是不运行
  sudo docker create --name maven csphere/mave:3.3.3
15、复制 docker 中的内容
  sudo docker cp maven:/hello/target/hello.war .

#

备注:

curl -SsL -o /tmp/csphere-install.sh https://csphere.cn/static/csphere-install-v2.sh
sudo env ROLE=controller CSPHERE_VERSION=1.0.1 /bin/sh /tmp/csphere-install.sh

—————————————

希云教程笔记

第一讲 Docker 实战之入门以及 Dockerfile

$ docker build -t registry_url/namespace/csphere/centos:7.1 ./path # 7.1为标签,如果不指定标签默认添加 latest

$ supervisorctl # 查看当前容器运行状态

ENTRYPOINT 与 CMD 的区别

  1. ENTRYPOINT[“executable”,”param1”,”param2”](the preferred exec form)
  2. ENTRYPOINT command param1 param2(shell form)
  3. docker run -it –entrypoint= 覆盖 Dockerfile ENTRYPOINT []

  4. CMD[“executable”,”param1”,”param2”]

  5. CMD[“param1”,”param2”] (为 ENTRYPOINT 提供默认参数值)
  6. CMD command param1 param2
  • 区别一
    CMD命令会被 docker run 后边的指令所覆盖掉, 而 ENTRYPOINT 不会。
    ENTRYPOINT 会被 docker run -it –entrypoint= 覆盖

第二讲 Docker 实战之 Registry 以及持续集成

1. Registry

Docker镜像命名规则

registry_url/csphere/csphere:latest
本机地址 + 端口号/目录/镜像名称:版本号

# 首先 pull 一个registry 镜像到本地
docker run -d -p 5000:5000 --name registry registry:0.9.1 # registry 默认端口为 5000
# 在这里需要配置一个csphere
docker tag centos:6 172.16.166.130:5000/fsdn/centos:6
docker push 172.16.166.130:5000/fsdn/centos:6

2. 持续集成 – jenkins

docker run -d -p 8080:8080 --name jenkins \
  -v /usr/bin/docker:/usr/bin/docker \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /root/maven-tar:/root csphere/jenkins:1.609
# 注: /usr/bin/docker 的二进制文件 第三个 -v 可选
docker exec -it jenins /bin/bash

# 到 jenkins 中添加构建步骤 Execute shell
docker build -t fsdn/centos:6 $WORKSPACE/php-fpm # $WORKSPACE/php-fpm 是 Dockerfile 所在目录

java项目

手动部分

# 构建 Maven 镜像
cp /apache-maven-3.3.3-bin.tar.gz ./maven # 复制 maven 文件到 Docker file 文件目录下,也可以在 Dockerfile 中指定地址下载
docker build -t csphere/maven:3.3.3 .
docker create --name maven csphere/mave:3.3.3

# 复制源代码,并且构建镜像
docker cp maven:/hello/target/hello.war .
docker build -t csphere/hello:1.0 .

# 启动 db 容器
docker run -d -p 3306:3306 --name mysql csphere/mysql:5.5

# -e DB_HOST 域名
docker run -d -p 80:8080 --name hello csphere/hello:1.0

# 此时, 外网就可以访问项目了

自动部分

# 配置 jenkins
# 1. 构建触发器 (目的: 监听代码仓库代码变化)
#  身份验证令牌 自己起名字 eg: java-token

# 2. 增加 构建 shell
REGISTRY_URL=172.16.166.130:5000

# 构建 Maven 镜像
cp /root/apache-maven-3.3.3-bin.tar.gz $WORKSPACE/maven
docker build -t csphere/maven:3.3.3 $WORKSPACE/maven
if docker ps -a | grep -i maven ; then
  docker rm -f maven
fi
docker create --name maven csphere/maven:3.3.3

# 复制源代码,并且构建镜像, 并且将该镜像 push 到 registry 库中
docker cp maven:/hello/target/hello.war $WORKSPACE/hello
docker build -t $REGISTRY_URL/csphere/hello:1.0 $WORKSPACE/hello
docker push $REGISTRY_URL/csphere/hello:1.0

# 运行容器
if docker ps -a | grep -i hello; then
  docker rm -f hello
fi
docker run -d -p 80:8080 --name hello $REGISTRY_URL/csphere/hello:1.0

# 此时, 等待 jenkins 编译完成之后, 外网就可以访问项目了

第三讲 Docker 实战之监控报警以及日志管理

1. 监控报警

# 启动数据库容器
docker run -d -p 3306:3306 --name mysql csphere/mysql:5.5

# 创建 WordPress 容器
docker run -d -p 80:80 --name wordpress \
  -e WORDPRESS_DB_HOST=172.16.166.130 # 传入环境变量 \
  -e WORDPRESS_DB_USER=root # 传入环境变量 \
  -e WORDPRESS_DB_PASSWORD=3258 # 传入环境变量

2. 日志管理

# 方案

# Logstash              管理日志和事件
# Elasticsearch         分布式的搜索分析系统
# Kibana                可视化日志和数据系统
# Logstash-forwarder    转发日志 --> Logstash

# 参考: http://github.com/spujadas/elk-docker

第四讲 Docker 实战之网络管理

docker 网络模式

  1. NAT (Network Address Translation)
    iptables -t nat -L -n # 查看iptables nat 规则
    route -n # 查看路由表

  2. Host

  3. Other container

  4. None

  5. Overlay

    1. 利用 consul 集群

    2. docker service test-bright

第五讲 Docker 实战之持续部署以及弹性伸缩

1. Docker compose 一键发布应用

# 服务编排工具

# 结合 Swarm, 分布式部署应用

# 动态改变应用, 扩展

# 重要文件 docker-compose.yml

docker-compose up -d # 执行此命令进行发布

2. Docker Swarm 集群管理

# Swarm 服务发现

# Swarm scheduler (Swarm 调度)
1. Filter
# 1. Constraint(约束)
# 2. Affinity(亲和性)
# 3. Port(端口)
# 4. Dependency(依赖)
# 5. Health(健康)
2. Weigh – 权重
# 1. Spread(最少)
# 2. Binpack(最多)
# 3. Random(随机)
3. 创建 Swarm 集群
# 1. 创建集群token(discovery service)
docker create csphere/mysql:5.5 # 创建一个容器ID

# 定义 Docker1 主机所属角色
docker run -d -p 2376:2375 swarm manage token://xxxx

# 2. 加入 Swarm 集群
docker run -d swarm join --addr=<node_ip>:<port> token://xxxx

docker -H <mater_ip>:2376 info

# 3. 在 master 节点操作 slaver 节点
docker -H <slaver_ip>:2376 run -it --name busybox \
-e constraint:label_name==doker2 busybox # constraint 为调度策略

第六讲 Docker 实战之存储

Docker 支持的 graphdriver

aufs(ubantu) – 联合文件系统
btrfs(CoreOS)
devicemapper(RedHat, CentOS)
overlayfs(CoreOS)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值