文章目录
什么是容器什么是DockerDocker的基本组成Docker Client客户端Docker Daemon守护进程Docker Image镜像Docker Container容器Docker Registry仓库共有私有
Docker在线演示地址
Docker的C/S模式Docker的守护进程Docker的远程访问守护进程设置客户端配置
Dcoker的容器容器的基本操作Docker 守护式容器启动守护式容器查看容器日志查看容器内进程在运行中的容器中启动新进程停止守护式容器
在Dokcer中部署静态网站设置容器的端口映射Nginx 部署流程
Docker 镜像列出镜像查看镜像删除镜像查找镜像拉取镜像推送镜像如何在本地构建镜像?Dockerfile指令FROMMAINTAINERRUNEXPOSECMDENTERYPOINTADDCOPYVOLUMEWORKDIRENVUSERONBUILD
Dockerfile的构建过程Dockerfile的执行过程构建镜像的中间层调试Dockerfile 的镜像缓存查看镜像的构建过程
Docker容器的网络基础
什么是容器
依托于linux内核的虚拟化技术
什么是Docker
能够把应用程序自动部署到容器的开源引擎
Docker的基本组成
Docker Client客户端
Docker Daemon守护进程
Docker Image镜像
容器的基石
层叠的只读文件系统
联合加载
Docker Container容器
通过镜像启动
启动和执行阶段
写时复制
Docker Registry仓库
共有
Docker Hub
私有
Docker在线演示地址
Docker的C/S模式
Docker的守护进程
查看守护进程 ps -ef | grep docker systemctl status docker使用service命令管理 sudo service docker start/stop/restartDocker 的启动选项 docker -d [OPTIONS]
运行相关: -D,–debug=false -e,–exec-driver=‘native’ -g,–graph=’/var/lib/docker’ -icc=true -l,–log-level=‘info’ –label=[] -p,–pidfile=’/var/run/docker.pidDocker服务器连接相关 -G,–group=‘docker’
-H,–host=[] -tls=false -tlsverify=falseRemote API相关 –api-enable-cors=false存储相关 -s,–storage-driver=’’ –selinux-enabled=false –storage-opt=[]Registry 相关 –insecure-registry=[] –registry-mirror=[]
启动配置文件 /etc/default/docker/
Docker的远程访问
守护进程设置
修改配置文件 /etc/default/dcoker DOCKER_OPTS=" --label name=docker_server_1 -H tcp://0.0.0.0:2375" 重启docker service docker resart
客户端配置
使用环境变量 export DOCKER_HOST='tcp://ip:端口' (这里的ip是要连接的远程主机IP)
Dcoker的容器
容器的基本操作
启动容器 docker run IMAGE [COMMAND][ARG...] run 在新容器中执行命令 eg : docker run centos echo 'hello world'启动交互式容器 docker run -i -t IMAGE /bin/bash 要开启以下设置 为容器始终打开标准输入 -i --interactive=true|false 默认是false 为创建的容器分配一个tty终端 -t --tty=true|false 默认是false 查看容器 docker ps [-a] [-l] 查看容器的信息 docker inspect ID/NAMES eg: docker inspect 71f344799cfc自定义容器名字 docker run --name=自定义名字 -i -t IMAGE /bin/bash 重新启动已经停止的容器 docker start [-i] 容器名删除容器 docker rm 容器名
Docker 守护式容器
什么是守护式容器?
能够长期运行没有交互式会话适合运行应用程序和服务
启动守护式容器
方法1 docker run --name=容器名 -i -t /bin/bash 使用Ctrl + p Q退出,不使用exit 附加到运行中的容器: docker attach 容器名
方法2 docker run -d 镜像名 [COMMAND] [ARG...]
查看容器日志
docker logs [-f] [-t] [--tail] 容器名 -f --follows=true 默认为false -t --timestamps=true 默认为false –tail=“all”
查看容器内进程
docker top 容器名
在运行中的容器中启动新进程
docker exec [-d] [-i] [-t] 容器名 [COMMAND] [ARG...]
停止守护式容器
docker stop 容器名 给运行中的容器发送一个停止信号,等待容器停止后,命令会返回容器的名字。docker kill 容器名 立刻杀死
可以使用man命令查看docker具体命令的详细介绍
例如:`man docker exec`
在Dokcer中部署静态网站
设置容器的端口映射
docker run [-P] 大写P 为容器暴露的所有端口进行映射。端口映射命令: docker run -P -i -t centos /bin/bashdocker run [-p] 指定映射哪些端口
容器端口 containerePort docker run -p 80 -i -t centos /bin/bash宿主机端口:容器端口 HostPort:containerPort docker run -p 8080:80 -i -t centos /bin/bashIP::容器端口 IP:containerPort docker run -p 0.0.0.0:80 -i -t centos /bin/bashIP:宿主机端口:容器端口 ip:HostPort:containerPort docker run -p 0.0.0.0:8080:80 -i -t centos /bin/bash
Nginx 部署流程
创建映射80端口的交互式容器 docker run -p 80 --name web -i -t centos /bin/bash安装Nginx yum install nginx安装文本编辑器Vim yum install vim创建静态页面修改Nginx配置文件运行Nginx验证网站访问
Docker 镜像
容器的基石
层叠的只读文件系统
联合加载技术
列出镜像
docker images [OPTIONS] [REPOSITORY]
-a ,–all=false 显示所有镜像 -f ,–filter=[] –no-trunc=false 不使用截断的方式显示数据 -q, --quiet=false 只显示镜像的唯一ID
REPOSITORY 一系列镜像的集合 Registry 仓库 是docker镜像的存储服务TAG 镜像的标签。 创建容器时可以指定 镜像标签,不指定默认使用latest
查看镜像
docker inspect [OPTIONS] CONTAINER | IMAGE [CONTAINER | IMAGE] 既支持容器的查看,也支持镜像的查看。
删除镜像
docker rmi [OPTIONS] IMAGE [IMAGE] ... -f, --force=false –no-prune=false
查找镜像
Docker Hub 官网
https://registry.hub.docker.com docker search [OPTIONS] TERM
–automated=false–no-trunc=false-s,–stars=0 星级 最低几个星星
拉取镜像
docker pull [OPTIONS] NAME [:TAG] -a, --all-tags=false 如果慢的话可以使用国内的docker仓库镜像服务器拉取 使用 --registry-mirror 选项
修改:/etc/default/docker添加:DOCKER_OPTS="–registry-mirror=http://xxxx" xxx从daocloud获取
推送镜像
docker push [REPOSITORY NAME]
如何在本地构建镜像?
保存对容器的修改,并再次使用自定义镜像的能力以软件的形式打包并分发服务及其运行环境
docker commit 通过容器构建 docker commit [OPTINOS] CONTAINER [REPOSITORY[:TAG]] -a,–author="" -m,–message="" -p,–pause=true docker build 通过Dockerfile文件构建 创建第一个Dockerfile
FROM ubuntu:14.04
MAINTAINER liunan
"youremail@outlook.com"
RUN
apt-get update
RUN
apt-get install nginx
EXPOSE 80
创建目录 mkdir -p dockerfile/df_test编写 dockerfile文件 执行 docker build 命令 docker build [OPTIONS] PATH | URL | - –force-rm=false –no-cache=false –pull=false -q,–quiet=false –rm=true -t,–tag="" 指定构建的镜像的名字 使用刚才build 的镜像 docker run -d --name nginx_use_df -p 80 ln/df_test nginx -g "daemon off;"
Dockerfile指令
注释 # 指令 命令大写
FROM
已经存在的镜像基础镜像必须是第一条非注释的指令
FROM
<image
>
FROM
<image
>:
<tag
>
MAINTAINER
指定镜像的作者信息,包含镜像的所有者和联系信息
MAINTAINER liunan
"liunan@gmail.com"
RUN
指定当前镜像中运行的命令
RUN (shell模式)
/bin/sh -c
command
RUN
echo hello
RUN [“executable” ,“param1”,“param2”] (exec模式)
RUN
["/bin/bash" ,
"-c" ,
"echo hello"]
EXPOSE
指定运行该镜像的容器使用的端口
EXPOSE
<port
> [<port
> ...
]
使用EXPOSE指定了端口,启动容器的时候 也要指定端口 docker run -p 80 -d youimages nginx -g "daemon off;"
CMD
指定在容器运行时执行的命令
ENTERYPOINT
指定在容器运行时执行的命令
ADD
设置镜像的目录文件 ADD包含类似tar的解压功能
COPY
设置镜像的目录文件 如果单纯的复制文件,Docker推荐使用COPY
VOLUME
设置镜像的目录文件 VOLUME["/data"]
WORKDIR
镜像在构建 及 运行时的环境设置
WORKDIR /path/to/workdir
ENV
镜像在构建 及 运行时的环境设置
ENV
<key
><value
>
ENV
<key
>=<value
>....
USER
镜像以什么样的用户运行
USER daemon
USER nginx
(使用哪个用户启动docker)
USER user:group
USER user:gid
ONBUILD
镜像触发器 当一个镜像被其他镜像作为基础镜像时执行 会在构建过程中插入指令
Dockerfile的构建过程
Dockerfile的执行过程
从基础镜像运行一个容器执行一条指令,对容器作出修改执行类似 docker commit 的操作,提交一个新的镜像层再基于刚提交的镜像运行一个新容器执行 Dockerfile 中的下一条指令,直至所有指令执行完毕
构建镜像的中间层调试
以上步骤中,中间层容器会在执行完后删除,但中间层镜像不会被删除。 中间层镜像的优点:
使用中间层镜像进行调试查找错误
Dockerfile 的镜像缓存
Dockerfile构建过程中可以 构建缓存
构建缓存 use cache不使用缓存$ docker build --no-cache
ENV REFRESH_DATE 2015-04-01
查看镜像的构建过程
$ docker
history [image
]
Docker容器的网络基础
Liunx 虚拟网桥特点
可以设置IP地址相当于拥有一个隐藏的虚拟网卡
sudo yum
install bridge-utils
sudo brctl show