说明 :
[] 方括号表示 => 里面的参数可省
grep name 任何查询结果都可以通过 grep 进行筛选
# 注释符
() 命令解释
<> 必填参数
系统 :
安装容器 :
yum install -y epel-relase # 安装依赖
yum install docker-io # 安装docker
容器服务 : systemctl <[start,stop,restart]> docker.service | service docker start
容器版本 : docker version
仓库 : 仓库是集中存放镜像的地方[公有仓库,私有仓库] (注册服务器:存放仓库的具体服务器)
公有仓库 : Docker Hub => https://hub.docker.com/
docker login 输入用户信息登录到 => Docker Hub => 本地 .dockercfg保存用户的认证信息
docker search # 不需要登录
# 官方的镜像一般为 基础镜像或者根镜像 => docker.io/mysql
# 个人用户的镜像一般为 用户名/镜像名称 => sokminyo/mysql-1
docker pull www.self.com/mysql # 指定网站拉取镜像
自动创建 : 用户通过 Docker Hub指定跟踪一个目标网站上的项目,若有提交,则自动执行创建
创建和使用私有库 :
创建 : docker run -d -p 5000:5000 registry # 通过 registry镜像 来创建私有库,默认容器地址为 /tmp/registry,最好先拉取 docker pull registry
创建指定 : docker run -d -p 5000:5000 -v /data/nginx/html:/tmp/registry registry # 指定路径创建
打上标签 : docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] => docker tag <33fbbf4a24e5> 127.0.0.1:5000/tt
上传镜像 : docker push 127.0.0.1:5000/tt
镜像 :
获取镜像 : docker pull <名称>[:TAG(标签)] => docker pull php
查看镜像 : docker images [名称] => docker images
查看详情 : docker inspect <名称或Id> => docker inspect php [-f(指定内容),...] docker inspect php -f {{'.Id'}}
搜索镜像 : docker search [OPTIONS] TERM => docker search php:7.1-fpm
删除镜像 : docker rmi <名称> => docker rmi [-f(强制删除)] php:7.1-fpm # 正在运行的镜像无法删除
存出镜像 : docker save -o <存出的文件名.格式(php.tar)> <镜像名称或Id> => docker save -o php.tar 894f8d826f6a
载入镜像 : docker load --input php.tar(文件名称)
容器 :
新建容器 : docker create -it <镜像名称或ID(php:7.1-fpm)> # 默认情况下为不启动
新建并启动容器 : docker run
查看容器 : docker ps # 查看当前运行的容器 docker ps -a # 查看所有容器
运行容器 : docker run <容器名orID>
停止容器 : docker stop <容器名orID>
开启容器 : docker start <容器名orID>
终止容器 : docker kill <容器名orID>
重启容器 : docker restart <容器名orID>
容器日志 : docker logs <容器名orID>
容器端口 : docker port <容器名orID>
删除容器 : docker rm <容器名orID>
进入容器 : docker exec -it <容器名orID> /bin/bash
导出容器 : docker export <容器名orID> >文件名.格式 => docker export mysql >mysql.tar
导入容器 : docker import 文件名.格式
容器中 :
安装vi|vim : apt-get install -y vi|vim
更新apt : apt-get update # 安装其他功能时,更新-安装-更新
数据卷 : 供容器使用的特殊目录 volume(卷)
创建 : 在运行的时候加上 -v 可以使用多个
docker run -d -p -v /data/nginx/html:/usr/share/nginx/html (将本机的文件映射到容器中的文件)
docker run -p 8080:80 --name test_nginx -v /data/nginx/html:/usr/share/nginx/html -d docker.io/nginx
-p 8000:80 把容器80端口映射到服务8000
--name 设置名字
-d 后台运行|守护
-v /data/nginx/html:/usr/share/nginx/html (将本机的文件映射到容器中的文件)
more :
-a stdin : 指定标准输入输出内容类型 , 可选 STDIN/STDOUT/STDERR 三项
-d : 后台运行容器 , 并返回容器ID
-i : 以交互模式运行容器 , 通常与 -t 同时使用
-p <port(主机)>:<port(容器)> : 端口映射
-t : 为容器重新分配一个伪输入终端 , 通常与 -i 同时使用
--name <defineName> : 为容器指定一个名称
--dns 8.8.8.8 : 指定容器使用的DNS服务器 , 默认和宿主一致
--dns-search example.com: 指定容器DNS搜索域名 , 默认和宿主一致
-h "mars": 指定容器的hostname
-e username="ritchie": 设置环境变量
--env-file=[]: 从指定文件读入环境变量
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行
-m :设置容器使用内存最大值
--net="bridge": 指定容器的网络连接类型 , 支持 bridge/host/none/container: 四种类型
--link=[]: 添加链接到另一个容器
--expose=[]: 开放一个端口或一组端口
数据卷容器 : 容器之间共享数据(挂载在同一个文件夹中)
docker run -it -v /dbData --name dbData php # 删除卷 docker rm -v dbData
docker run -it --volumes-from dbData --name db1 php
docker run -it --volumes-from dbData --name db2 php
数据卷迁移数据 : 备份和恢复(自行了解)
端口映射实现访问容器 :
端口映射 : docker run -p 端口:端口
自定义名称 : docker run --name 名称
容器互联 : docker run --link 容器名称
docker公开连接 : 环境变量(env) 或 更新 /etc/hosts文件
使用Dockerfile创建镜像 : 文本格式的配置文件
指令 : 一般格式为 instruction(指令) arguments(参数) , 指令包括 from , maintainer(维护者) , run , cmd 等 .
组成部分(一般而言) : 基础镜像信息 , 维护者信息 , 镜像操作指令 , 容器操作指令
eg :
# 第一行必须指定基于的基础镜像
# FROM <image>[:<tag>]
FROM php:7.1
# 维护者信息
# MAINTAINER <name>
MAINTAINER huangzhhui <h@swoft.org>
# ENV <key> <value> 指定一个环境变量 , 可供 RUN 命令使用 , 并在容器中保持运行
ENV PHPREDIS_VERSION 4.0.0
ENV HIREDIS_VERSION 0.13.3
ENV SWOOLE_VERSION 4.0.3
# 镜像操作指令(可以有多个)
# RUN <command> 在shell终端中运行命令,即 /bin/sh -C
# 或者
# RUN ["executalbe","param1","param2"] 这里的[]非说明中的 , 使用 exec 执行
RUN curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/composer \
&& composer self-update --clean-backups
# 容器暴露的端口号
# EXPOSE <port> [<port>...]
EXPOSE 80 22 443
# 容器操作指令
......
# (只能有一个,如果有多个只会执行一个)
# CMD ["executalbe","param1","param2"] 这里的[]非说明中的 , 使用 exec 执行 (推荐)
# 或者
# CMD command param1 param2 在 /bin/sh 中执行
# 或者
# CMD ["param1","param2"] 提供给 entrypoint 的默认参数
CMD /usr/sbin/nginx
其他指令 :
ADD <src> <dest> : 复制指定的 src 到容器中的 dest
COPY <src> <dest> : 复制本地的 src 到容器 dest
ENTRYPOINT : 配置容器启动后执行的命令 ,只能有一个 , 如果有多个只会执行一个(最后一个生效)
1 : ENTRYPOINT command param1 param2 在 /bin/sh 中执行
or
2 : ENTRYPOINT ["param1","param2"]
VOLUME : VOLUME ["/data"] # 创建一个可以从本地主机或其他容器挂载的挂载点 , 一般用于存放数据和保持数据
USER : USER daemon # 指定运行容器是的用户名或UID
WORKDIR : WORKDIR /path/to/workdir # 为后续 RUN , CMD , ENTRYPOINT 等指令配置工作目录 . 可多个 如果后续路径为相对路径,则会基于之前的指令
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd # /a/b/c
ONBUILD : ONBUILD [INSTRUCTION]
创建镜像 : 完成 dockerFile 后 , 可通过 docker build [option] 来创建镜像
可配置 .dockerignore 文件 , 来忽略 docker 路径下的 目录和文件
常见问题 :
docker组没有 : could not change group /var/run/docker.sock to docker: group docker not found
uname -r 查看内核
Why:SELinux不支持 overlay2 graph driver
Solve :
vi /etc/sysconfig/docker,在docker里禁用selinux-enabled=false,
挂载失败 : /usr/bin/docker-current: Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/b35b5d54a4bb354ff5bbf4b8906db3acce819339c8c9bf378d9e388d9dedbed7-init/merged: invalid argument.
Solve :
rm -rf /var/lib/docker # 会删除docker images
vi /etc/sysconfig/docker-storage # 指定 DOCKER_STORAGE_OPTIONS="--storage-driver overlay"
vi /etc/sysconfig/docker # 删除 --selinux-enabled
图片介绍 :
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。