Dcoker 学习

第一本docker书

  • 第一章
    • docker简介
  • 第二章
    • 安装docker
  • 第三章
    • docker入门
  • 第四章
    • 使用 docker 镜像和仓库
  • 第五章
    • 在测试中使用 Docker
  • 第六章
    • 使用 Docker 构建服务
  • 第八章
    • 使用 Docker API

第一章

  • docker 简介
  • 容器不需要模拟层和管理层,仅仅只是调用系统api
  • Docker 组件
    • docker 客户端和服务器
      • c/s 架构,client 只需要向server发出请求,server 完成并返回结果
      • Dcoker 学习_第1张图片
    • docker 镜像
      • 用户基于镜像运行自己的容器
      • 镜像是 docker 生命周期中构建或者打包阶段
    • Registry
      • 保存镜像
    • Docker 容器
      • 容器是启动或者执行阶段
      • 一个镜像格式
      • 一系列操作
      • 一个执行环境
      • 容器相当于是镜像的一个实例
  • docker 技术组件
    • namespace:用于隔离文件系统、进程、和网络

第二章

  • 安装 docker 参考
  • 使用脚本: wget -qO- https://get.docker.com/ | sh
  • 配置 docker 守护进程,配置文件:/etc/default/docker
    • -H 调整进程绑定监听的方式
    • 查看运行情况: service docker status | systemctl status docker

第三章

  • docker 入门
  • 查看 docker 信息
    • 查看 docker server 信息
      • sudo docker info
    • 查看 docker
      • sudo docker inspect name|id
  • 运行一个容器 ,使用 docker help 查看帮助
    • sudo docker run -i -t ubuntu /bin/bash
    • hostname 获取主机名称
    • sudo docker ps -a 查看系统存在的容器
  • 容器命名
    • sudo docker run --name test -i -t ubuntu /bin/bash
  • 重新启动已经停止的容器
    • sudo docker start name | id
    • sudo docker restart name | id
  • 重新启动的容器会沿用以前的参数,这个时候我们可以使用 attach 命令进入到 tty
    • sudo docker attach name | id
  • 创建守护试容器
    • 长期运行的容器,适用于应用程序和服务
    • sudo docker run --name test -d -i -t ubuntu /bin/bash
  • 停止守护式容器
    • sudo docker stop name|id
  • 容器内部都在干什么?
    • 使用 sudo docker logs name|id 查看容器日志
  • 查看容器内的进程
    • sudo docker top name|id 使用top命令
  • 在容器内部运行进程
    • docker exec
    • sudo docker exec -i -t test1 /bin/bash 添加一个交互式 tty
  • 自动重启容器
    • 使用 --restart = [alaways|on-failure]
      • alaways:无论容器退出时什么,都会重启容器,
      • on-failure:退出代码为非0时才会重启容器
  • 删除容器
    • sudo docker rm name|id 删除单个
    • sudo docker rm `docker ps -a -q` 删除全部

第四章

  • 使用 docker 镜像和仓库
  • 什么是 Docker 镜像?
    • Dock 镜像是由文件系统叠加而成。docke 使用联合加载,会在 root 文件系统上加载更多的只读文件系统。
    • 一个容器启动后,会被加载到内存中。
    • Dcoker 学习_第2张图片
  • 列出系统中的镜像
    • sudo docker images
    • 本地镜像都保存在 /var/lib/docker 下
    • 容器都在 ** /var/lib/docker/containers** 下
    • docker hub
      • 存放镜像的仓库
    • sudo docker pull name 下载 docker 镜像
    • sudo docker search 查找 docker hub 上的镜像
    • 构建镜像
      • dcoker commit 命令
      • docker buidl 和 dockerfile 文件推荐
    • sudo docker ps -l -q 查看创建的容器id
    • 使用 dcoker commit
      • sudo docker commit src_contain dst_contain
        • sudo docker commit -m="test touch file" --author="dengyichuan" c7878c80eaa3 ubuntu
        • sudo docker inspect ubunt 查看镜像信息
    • 使用 dockerfile
      • 创建上下文环境
      • 创建Dockerfile
      • sudo docker build -t="dyc/web:v0.1" . 执行 build 创建镜像
      • sudo docker history dyc/web 查看镜像构建过程
      • dockerfile 和构建缓存
        • docker buidl的过程中都会提交为镜像,它把之前的镜像当作缓存
        • docker build --no-cache 标志
      • sudo docker run --name "test" -d -p 80 dyc/web:v0.1 nginx -g "daemon off;"
      • 查看新镜像
        • docker images
      •  
      • attach 可以再指定命令么?
      • docker 指令
        • CMD 指定一个容器启动时要运行的命令,会被 docker run 命令覆盖
        • ENTRYPOINT 跟 CMD 命令类似,不会被 docker run 覆盖
        • WORKDIR 指定工作目录,CMD 和 ENTRYPOINT 命令都会在这个目录下执行
        • ENV 设置环境变量
        • USER 指定镜像以什么用户去运行
        • VOLUME 添加卷:一个卷是存在一个或者多个容器内的特定的容器
        • ADD 复制构建环境下的文件复制到镜像中,如果是压缩文件,还会进行解压
        • COPY 类似 ADD ,不会解压
      • 推送镜像
        • sudo docker push
      • 删除镜像
        • sudo docker rmi name|id
FROM ubuntu
# MAINTAINER dengyichuan "[email protected]"
RUN apt-get update
RUN apt-get install nginx
RUN  echo "hi ,i am dengyichuan" > /usr/share/nginx/html/index.html

第五章

  • 在测试中使用 Docker
  • 使用 Dcoker 测试一个静态网站、创建一个 Web 应用
  • 使用 Docker 用于持续集成
  • 使用 Dcoker 测试一个静态网站
  1 FROM ubuntu              
  2 ENV REFRESHED_AT 2014-06-01
  3 RUN apt-get update
  4 RUN apt-get -y -q install nginx
  5 RUN mkdir -p /var/www/html
  6 ADD nginx/global.conf /etc/nginx/conf.d/
  7 ADD nginx/nginx.conf /etc/nginx/nginx.conf
  8 EXPOSE 80
 wget https://raw.githubusercontent.com/jamtur01/dockerbook-code/master/code/5/sample/website/index.html
  • 创建容器
    • sudo docker run -d -p 80 --name website -v $PWD/website:/var/html/website dyc/nginx nginx
    • -v 使用卷
  • 容器重启时会改变 ip 地址解决这个办法的方法是是使用 --link 参数

第六章

  • 使用 Docker 构建服务
    • 实践章节
      • 做一个有Python 版本控制 Nginx 环境 和 Go 环境的容器
      • vim +BundleInstall +qall
FROM ubuntu            
RUN apt-get update
RUN apt-get -y -q install nginx
RUN apt-get -y -q install vim
RUN apt-get -y -q install git
RUN apt-get -y -q install python
# 虚拟环境
RUN pip install virtualenv
# 版本控制
Run git clone git://github.com/yyuu/pyenv.git ~/.pyenv
RUN echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
RUN echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
RUN echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
RUN exec  $SHELL

RUN mkdir -p /var/www/html
RUN mkdir -p /root/workspace
ADD nginx/global.conf /etc/nginx/conf.d/
ADD nginx/nginx.conf /etc/nginx/nginx.conf
ADD go1.10.0.linux-amd64.tar.gz /usr/local/ 
RUN git clone https://github.com/gmarik/Vundle.vim.git  ~/.vim/bundle/Vundle.vim
ADD bash_aliases /root/.bash_aliases
ADD vim /root/.vimrc
RUN echo "export GOPATH=/root/workspace" >> /root/.bashrc
RUN echo "GOROOT=/usr/local/go" >> /root/.bashrc
RUN echo "export PATH=$PATH:/usr/local/go/bin" >> /root/.bashrc

第八章

  • 使用 Docker API
    • Registry API:提供存储 Docker 镜像的 Docker Registry 集成功能
    • Docker HUB API:提供了与 Docker Hub 集成的功能
    • Docker Remote API:提供与 Docker 守护进程集成的功能
  • "-H" 指定自己的主机名称或者编辑配置文件
    • Ubuntu:/etc/default/docker
    • RedHat: /etc/sysconfig/docker 或者 /usr/lib/systemed/systemd/docker.service

你可能感兴趣的:(Linux)