Docker浅尝(一)

一 Container和Image

  • Docker底层技术支持
Namespaces:隔离pid/net/ipc/mnt/uts;
Control groups:资源限制;
UnionFileSystem:容器和镜像的分层;
  • Image
Image是文件和meta data的集合,文件为rootfs;
Image分层,且可以共享layer,本身只读;
Image获取 build from dockerfile / pull from registy
  • Container
Container通过Image创建,并在其之上创建一个可读写的ContainerLayer;
Container类似于Image对象的实例,Image负责app的存储和分发,Container负责app的运行;
  • Dockerfile
FROM:为了安全尽量使用官方的Image作为base image
FROM scratch #制作base image 
FROM centos  #使用base image

LABEL:定义Image的mata data
LABEL maintainer="lvzhiweiheal@163.com"
LABEL version="1.0"
LABEL description="This is my email."

RUN:每运行一次生成新的一层
RUN yum update && yum install -y vim \
  python-dev #&&避免分层,\换行

WORKDIR:切换到新目录,尽量使用绝对路径
WORKDIR /test
WORKDIR demo
RUN pwd ##/test/demo

ADD/COPY:COPY优先于ADD,ADD额外解压,远程目录或文件选择curl/wget

ENV:设置环境变量,尽量使用
ENV MYSQL_VERSION 5.6

CMD VS ENTRYPOINT
CMD:
容器启动时默认执行的命令,如果docker run指定其他命令,CMD会被忽略,定义多个CMD,执行最后一个
ENTRYPOINT:
不会被忽略,一定会被执行,让容器以应用程序或者服务的方式执行
  • Container limit
底层通过Control groups限制
--memory
--cpu-shares

二 网络

  • bridge
两个容器之间是通过bridge实现通信的,容器与bridge通过veth实现连接;
容器访问外网是通过bridge和nat实现的;
container1  \
              bridge -- nat -- Internet 
container2  /
  • host
无自己独立的networknamespace,与主机共享相同的networknamespace;
  • none
创建孤立的networknamespace,仅类似下面的方式可以访问;
sudo docker exec -it test1 /bin/sh
  • link
创建container2时,使用--link container1,container2可以代替container1的IP而使用container的名字访问,container1不可反向使用;
容器连接到自定义的bridge上面时,自身具备link功能;
sudo docker network create -d bridge mybridge 
##自定义bridge
brctl show 
##show当前的bridge
sudo docker run -d --name test1 --network my-bridge busybox /bin/sh -c "while true; do sleep 3600; done" 
##创建新容器连接到自定义bridge
sudo docker netwrok inspect my-bridgeID 
##查看某个network的具体信息
  • port map
##将容器的80端口映射到虚拟机的80端口
sudo docker run --name web -d -p 80:80 nginx
  • VXLAN
容器网络通过VXLAN实现,底层称为underlay,上层称为overlay;

三 持久化存储

  • Data Volume
#将Docker hub中mysql的Dockfile中的挂载点更改名称
VOLUME ["/var/lib/mysql"]
sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOQ_EMPTY_PASSWORD=true mysql
  • Bind Mounting
#本机目录和容器目录做映射
sudo docker run -d -v $(pwd):/usr/share/nginx/html -p 80:80 --name web lzw/my-nginx

四 Docker Compose多容器部署

  • Docker Compose
Docker Compose是一个工具,通过一条yml文件定义去创建或者管理多个容器
  • docker-compose.yml
##一个yml的案例
version: "3"

services:
  wordpress:
    image: wordpress
    ports:
      - 8080:80
    enviroment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_PASSWORD: root
    networks:
      - my-bridge
  mysql:
    image: mysql
    enviroment:
      - MYSQL_ROOT_PASSWORD: root
      - MYSQL_DATABASE: wordpress
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - my-bridge
volumes:
  mysql-data:
networks:
  my-bridge:
    driver: bridge
  • scale水平扩展和负载均衡
version: "3"

services:
  redis:
    image: redis
  web:
    build:
      context: .
      dockerfile: Dockerfile
    ##因实现水平扩展不能转换端口
    enviroment:
      REDIS_HOST: redis
  lib:
    image: dockercloud/haproxy
    links:
      - web
    ports:
      - 8080:80
    volumns:
      - /var/run/docker.sock:/var/run/docker.sock
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容

  • docker image 相关操作 显示所有 image 拉去 registry 中的已有 image 删除 im...
    Good灿灿阅读 8,670,707评论 0 2
  • 一 、什么是 Docker Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国...
    Blazzer阅读 3,122评论 0 13
  • 菩提无树本清心, 千年静修气沁神。 他日成泥化归去, 方留尘世待人吟。
    非洲鲫鱼阅读 125评论 2 2
  • 匆匆数年,已是大学毕业,二十几岁的年龄,怀揣着对未来的向往,来到了期望已久的社会生活。初入社会,才知原来并非你想...
    南伊公子阅读 416评论 0 1
  • 1、 昨晚和514宿舍的姑娘们在群里闲聊时,她们问起学长的近况。我说,他已经结婚了! 学长就是那个曾让我茶不思饭不...
    双眼皮二狗阅读 2,053评论 4 5