Docker
2018-11-02 09:11:53 518 举报
AI智能生成
Docker,Docker学习笔记, ......
作者其他创作
大纲/内容
学习资料
《第一本Docker》
https://baike.baidu.com/item/Docker/13344470?fr=aladdin 【百度百科】
http://www.docker.org.cn/ Docker中文
https://www.cnblogs.com/CloudMan6/p/7096731.html 容器通信方式
https://avnpc.com/pages/build-php-develop-env-by-docker PHP 环境
https://www.jianshu.com/p/0e231a928ee6 Docker集群简介
基础信息
简介
dotCloud 开源 基于LXC 基于go语言
核心组件
Docker 客户端和服务器
Docker 镜像
Registry
Docker 容器
安装
https://www.cnblogs.com/yufeng218/p/8370670.html
目录相关
默认安装位置 /var/lib/docker
graph 镜像的元数据
containers 记录容器相关信息
容器相关
docker run 创建一个容器
--name xxx 容器命名
-i -t 创建一个可交互的shell
-d 放到后台运行
-p 容器和宿主机之间的端口映射
-w 覆盖指定的工作目录
-e 设置环境变量,只在运行时有效
-u 指定容器以什么用户运行
--network 设置网络
--restart 设置容器是否自动重启
docker rm 删除容器
docker ps 列出容器列表
-a 列出所有容器
-q 只列出容器ID
docker start 启动容器
docker stop 停止容器
docker inspect 查看容器详细信息
--format 查看具体配置
docker attach 重新附着到容器
docker exec 在容器内部运行进程
docker logs 查看容器日志
-f 监听实时日志
-t 显示时间
Ctrl+P+Q 退出不关闭容器
镜像相关
基础命令
docker images 列出镜像
docker pull 拉取镜像
docker push 推送镜像
docker rmi 删除镜像
docker search 查找镜像
docker commit 通过修改容器来创建镜像
-m 镜像信息
--author 作者信息
构建自己的Registry
dokcer run -p 5000:5000 registry 创建Registry服务器
docker tag 为镜像打上新标签
docker push 推送镜像
容器间的通信方式
Dockerfile 创建镜像
步骤
创建目录指定镜像的构建环境
创建Dockerfile 文件
docker build 创建容器
指令
# 注释
FROM 指定基于哪个镜像
MAINTAINER 指定作者信息
RUN 执行命令构建镜像层
EXPOSE 指定容器将对外公开的端口
CMD 指定容器启动时要运行的命令 (只能指定一条CMD指令)
ENTRYPOINT 接收容器创建是传递过来的参数
可以与CMD命令合起来用,来设置默认参数
WORKDIR 指定工作目录
镜像创建过程中RUN的工作目录
设置容器创建时的工作目录, CMD和ENTRYPOINT也会在这个目录下执行
ENV 设置镜像构建过程中的环境变量
USER 指定容器以什么用户运行
VOLUME 挂载目录
ADD 将文件复制到镜像中
如果添加的为本地的压缩文件,则docker会自动进行解压缩
COPY 类似与ADD,不同之处在于不会做解压工作
ONBUILD 镜像触发器
在镜像被其他镜像当作基础镜像时触发
只在直接子镜像中触发
ARG 指定一个变量,在构建期间可以使用
docker build 参数 -build-arg 可以指定变量值
docker build
-t 为镜像设置仓库和名称
--no-cache 构建过程中不使用缓存
.dockerignore文件 过滤不需要上传的文件
docker history 查看镜像构建过程
Network 相关
docker network ls 列出网络
docker network inspect 网络名 显示网络信息
docker network create -d 网络类型 网络名 创建网络
docker network connect 网络名 容器名 将容器添加到网络
docker network disconnect 网络名 容器名 将容器移出网络
docker network rm 删除网络
Compose 相关
简介
python YML 定义和运行多个容器的工具
https://www.jianshu.com/p/2217cfed29d7
http://elickzhao.github.io/2016/05/Docker%20Compose%20%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%20yaml%20%20%E5%8F%82%E6%95%B0%E7%AE%80%E5%8D%95%E4%BB%8B%E7%BB%8D/
安装方法 https://blog.csdn.net/gsying1474/article/details/52988784
命令
子主题
YML 配置
https://blog.csdn.net/liguangxianbin/article/details/79556008
image 指定镜像名
build 指定Dockerfile目录
container_name 指定容器名
ports 端口
volumes 挂载
args 指定变量值
command 指定容器启动后的默认执行命令
entrypoint 容器启动后执行的命令
env_file *.env 指定环境变量文件
environment 环境变量配置
expose 指定暴露的端口
external_links 连接外部容器
links 连接内部容器
extra_hosts 添加host
networks 指定网络
depends_on 指定依赖的容器
Docker 操作技巧
国内镜像仓库加速站
Daocloud http://hub.daocloud.io/
时速云 https://hub.tenxcloud.com/
阿里云 https://dev.aliyun.com/
容器、镜像删除
镜像批量删除 docker rmi $(docker images | grep "none" | awk '{print $3}')
删除所有容器 docker rm $(docker ps -a -q)
根据容器名删除 docker rm `docker ps -a |awk '{print $1}' | grep [0-9a-z]`
容器IP地址查看
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
docker 导入导出
https://my.oschina.net/zjzhai/blog/225112
·操作容器
docker export 容器ID > 文件.tar
docker import 文件.tar 镜像名
操作镜像
docker save 镜像ID > 文件.tar
docker load < 文件.tar
docker 瘦身
https://www.cnblogs.com/e2tox/p/4027756.html
http://www.dockerinfo.net/3328.html
Docker 目录挂载失败 https://blog.csdn.net/rznice/article/details/52170085
docker 版本更新 https://www.cnblogs.com/zhishuai/p/8017876.html
tar 解压文件的时候要先cd到目标文件夹
挂载目录无法访问时,添加参数 --privileged=true
Docker 集群
准备
daemon 守护进程
Docker守护进程, 指令其实都是通过向daemon发送请求来实现的
daemon 通信模式
Unix套接字,本地访问
监听Tcp协议和端口, 远程访问
修改 /etc/default/docker 中的DOCKER_OPTS
-H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock
-H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock
访问方式 docker -H tcp://192.168.1.123:2345 ps
远程API, 使用curl远程操作
Kubernetes
简介
Google 2014对外公布
安装
异常排查
https://blog.csdn.net/gsying1474/article/details/53256599
http://blog.51cto.com/tsing/1983480
组成
Service 服务
Pod 基本调度单文
每个Pod都是应用的一个实例
容器管理
一个容器
多个容器
部署在同一物理机上, 相互作用协作成为一个service单位
pod 将这些容器当做一个实体来管理
子主题
Swarm
简介
实践应用
PHP 环境布置
方案
一个容器运行一个应用程序或进程, 形成分布式应用程序模型
compose + network + nginx反向代理
PHP
镜像地址
http://hub.daocloud.io/repos/019c8dce-ec80-4468-bddc-254fc62ef5c7
拓展安装
https://blog.csdn.net/qq_41704259/article/details/79683138
https://moneyslow.com/dockerfile-%E4%B9%8Bphp7%E7%9A%84memcache%E3%80%81memcached%E3%80%81redis%E3%80%81mongodb-%E6%89%A9%E5%B1%95%E5%AE%89%E8%A3%85.html
目录挂载
配置文件
/usr/local/etc/php
日志目录
/var/www/html
代码目录
/var/log/php
Nginx
镜像地址
http://hub.daocloud.io/repos/beb958f9-ffb6-4f68-817b-c17e1ff476c3
目录挂载
配置文件
/etc/nginx/nginx.conf
/etc/nginx/conf.d
日志目录
/var/www/html
代码目录
/var/log/nginx
Apache
Mysql
镜像地址
http://hub.daocloud.io/repos/fa51c1d6-9dc2-49d9-91ac-4bbfc24a1bda
目录挂载
配置文件
/etc/mysql
数据目录
/var/lib/mysql
Redis
镜像地址
http://hub.daocloud.io/repos/beb958f9-ffb6-4f68-817b-c17e1ff476c3
目录挂载
配置文件
/usr/local/etc/redis
持久化目录
/data
Memcache
镜像地址
http://hub.daocloud.io/repos/b6c0b5c1-8be5-4cba-b6b7-9d9bfe275b43
Git
Ftp
lnmp 一键部署源码
链接: https://pan.baidu.com/s/1rQYLtz5DcKBzxM01fXCJcA 密码: qfmh
说明文档 http://note.youdao.com/noteshare?id=e75e0203bb75f37efdc890b5c51db37b&sub=6B1D589332FD422880BF53CD329DBDAB
打个Tag
最近发现了Docker在一些使用上非常方便的地方,打算接下来准备更新一波笔记和部署方法,
顺便记录一下前段时间使用过程中踩的一些坑, 先打个tag免的又拖没了
顺便记录一下前段时间使用过程中踩的一些坑, 先打个tag免的又拖没了
Gitlab 服务器
http://blog.51cto.com/13673090/2096145
Wordpress 服务器
VPN 服务器
私有云 服务器
密码管理工具
离线脑图工具
0 条评论
下一页