第一本docker书
- 第一章
- docker简介
- 第二章
- 安装docker
- 第三章
- docker入门
- 第四章
- 使用 docker 镜像和仓库
- 第五章
- 在测试中使用 Docker
- 第六章
- 使用 Docker 构建服务
- 第八章
- 使用 Docker API
第一章
- docker 简介
- 容器不需要模拟层和管理层,仅仅只是调用系统api
- 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 server 信息
- 运行一个容器 ,使用
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时才会重启容器
- 使用 --restart = [alaways|on-failure]
- 删除容器
sudo docker rm name|id
删除单个sudo docker rm `docker ps -a -q`
删除全部
第四章
- 使用 docker 镜像和仓库
- 什么是 Docker 镜像?
- 列出系统中的镜像
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 "947834020@qq.com" 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