Docker 学习笔记

来源:互联网 发布:什么叫对冲基金 知乎 编辑:程序博客网 时间:2024/06/02 03:08

Docker install

一、 Docker 安装要求

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

二、 Cent OS 6.5 默认内核为 2.6

1. 升级内核

a) 先执行以下命令

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgrpm -ivh http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpmyum -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.rpmyum -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:latest3、启动Container盒子  sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...]  sudo docker run -t -i contos /bin/bash4、查看镜像列表,列出本地的所有images  sudo docker images [OPTIONS] [NAME]  sudo docker images centos5、查看容器列表,可看到我们创建过的所有container  sudo docker ps [OPTIONS]  sudo docker ps -a6、删除镜像,从本地删除一个已经下载的镜像  sudo docker rmi IMAGE [IMAGE...]  sudo docker rmi centos:latest7、移除一个或多个容器实例  sudo docker rm [OPTIONS] CONTAINER [CONTAINER...]8、移除所有未运行的容器  sudo docker rm sudo docker ps -aq9、停止一个正在运行的容器  sudo docker kill [OPTIONS] CONTAINER [CONTAINNER...]  sudo docker kill 026e10、重启一个正在运行的容器  sudo docker restart [OPTIONS] contains[CONTAINER]  sudo docker restart 026e11、停止一个已经停止的容器  sudo docker start [OPTIONS] CONTAINER [CONTAINER..]  sudo docker start 026e12、进去一个已经运行的容器  sudo docker exec -it /bin/bash13、为镜像添加 Tag  sudo docker tag centos:7 172.16.166.130/fsdn/centos:714、创建 docker 容器, 但是不运行  sudo docker create --name maven csphere/mave:3.3.315、复制 docker 中的内容  sudo docker cp maven:/hello/target/hello.war .

#

备注:

curl -SsL -o /tmp/csphere-install.sh https://csphere.cn/static/csphere-install-v2.shsudo 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# 在这里需要配置一个cspheredocker tag centos:6 172.16.166.130:5000/fsdn/centos:6docker 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 shelldocker 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. 增加 构建 shellREGISTRY_URL=172.16.166.130:5000# 构建 Maven 镜像cp /root/apache-maven-3.3.3-bin.tar.gz $WORKSPACE/mavendocker build -t csphere/maven:3.3.3 $WORKSPACE/mavenif docker ps -a | grep -i maven ; then  docker rm -f mavenfidocker create --name maven csphere/maven:3.3.3# 复制源代码,并且构建镜像, 并且将该镜像 push 到 registry 库中docker cp maven:/hello/target/hello.war $WORKSPACE/hellodocker build -t $REGISTRY_URL/csphere/hello:1.0 $WORKSPACE/hellodocker push $REGISTRY_URL/csphere/hello:1.0# 运行容器if docker ps -a | grep -i hello; then  docker rm -f hellofidocker 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.ymldocker-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://xxxxdocker -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
原创粉丝点击