### Ubuntu18下docker安装
* step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
* step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
* Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
* Step 4: 更新并安装 Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
### 其他版本Ubuntu下安装Docker
1. 清除之前安装的
sudo apt-get remove docker docker-engine docker.io
2. 更新系统库
sudo apt-get update
3. 安装curl等工具
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
4. 添加镜像源key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
5. 添加镜像源
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
6. 安装docker-ce
sudo apt-get install docker-ce
7. 再安装docker-compose
sudo apt-get install docker-compose
### Docker基础命令
* docker login 登录docker
* docker logout 退出登录
* docker search imageName 搜索指定镜像名的镜像
* docker pull ImageName:Version 拉取指定版本镜像
* docker commit containerID tagName 提交容器更改到镜像
* docker tag sourcetag newtag 打标签
* docker push tagName 将自己的镜像推送到仓库
* docker build -t tagName -f DOCKERFILEPath contextPath 创建镜像,指定镜像tag和DOCKERFILE文件路径以及上下文路径,若未指定DOCKERFILE的路径则会查找上下文路径下的DOCKERFILE文件(镜像打包方式会将上下文路径下的所有文件都传到docker服务端进行打包操作,所以指定上下文时需保证上下文路径下都是打包需要用到的文件,COPY等文件操作时也需要保证需要操作的文件处于上下文路径下)
* docker save imageName fileName 将指定镜像打包成文件
* docker load -i fileName 加载指定镜像文件
* docker run ImageName -i让容器标注输入打开 -t分配一个伪终端 -d后台运行 -p newPort:originPort指定映射出的端口 -v newVolumns:originVolimns指定卷 --mount source=volumnName|dirPath,target=filePath(in container) --name containerNmae 指定启动容器的名字
* docker start containerName 启动一个已经停止了的容器
* docker logs [containerID|NAMES] 查看一个容器的日志
* docker stop containerName 终止一个容器
* docker exec -it containerNmae bash 使用bash进入容器内部
* docker attach container 进入容器(但exit来退出时容器也会终止)
* docker import originFile tagName 从指定文件或者地址导入镜像为指定标签
* docker rm containerName 删除指定容器
* docker rmi imageName 删除置顶镜像(删除前确认是否还有由镜像启动的容器,也需要删除)
* docker volumn create volumnName 创建一个数据卷
* docker volumn inspect volumnName 查看一个数据卷信息
* docker volumn rm volumnName 移除一个数据卷
### DOCKERFILE文件规则
* FROM baseOSName 指定基础镜像
* MAINTAINER maintainerInfo 维护人员信息
* RUN cmd 执行命令行命令(1.shell方式:直接执行shell命令,2.exec方式:RUN [可执行文件,参数1,参数2]),可以多个命令用&&符链接
* COPY [--chown=<user>:<group>] originFilePaths aimPath 将上下文下的文件拷贝到镜像中的指定目录(originFilePath支持正则匹配GO语言的filepath.Match)
* ADD [--chown=<user>:<group>] origin aimPath 拷贝指定文件到指定目录下(支持origin为网络地址,且所有网络地址下载的文件权限都为600,若指定文件为tar文件压缩格式为gizp、bzip2及xz时,ADD命令会自动解压改文件到指定目录下)
* CMD <命令>|["可执行文件","参数1","参数2"] 执行命令,一般用作指定启动主进程命令
* ENTRYPOINT "<CMD>" 执行程序入口(主进程),当指定ENTRYPOINT后CMD命令即会被作为参数传入到ENTRYPOINT命令中,docker启动时也可以通过指定--entrypoint参数来指定程序入口,程序需为绝对路径!
* ENV <key> <value>|key1=value1 key2=value2 指定环境变量,RUN命令以及镜像内应用都可以使用这些环境变量
* ARG key1=value1 key2=value2 指定构建参数,同环境变量一样,只是指定的环境变量在容器中不可以使用
* VOLUME ["<路径1>","<路径2>"...]|<路径> 定义匿名卷,所有向匿名卷写入的内容都不会保存在容器的存储层,docker容器启动时可以指定挂载来替代,-v aimPath:VolumePath这样将容器中的目录指定到镜像外的目录(永久保存)
* EXPOSE <端口1>|[<端口2>...] 声明开放端口(仅仅声明,实际端口开放需要另外操作)做容器服务端口的映射到宿主机可以在启动容器时指定 -p 宿主机端口:容器提供服务器端口
* WORKDIR <工作目录路径> 指定工作目录即为指定当前所处目录
* USER <用户名>[:<用户组>] 指定当前用户
#### 注意事项
RUN、CMD、ENTRYPOINT的区别
RUN 为系统安装软件
CMD 镜像启动时执行的指令,会被docker run中的指令替换
ENTRYPOINT 指定程序入口,指令和路径需为全路径 

最新文章

  1. WPF自定义控件与样式(13)-自定义窗体Window &amp; 自适应内容大小消息框MessageBox
  2. UITapGestureRecognizer响应顺序是怎么样的
  3. ChainOfResponsibility
  4. Java—Map.Entry
  5. python分页和session和计算时间差
  6. spring定时器 @component
  7. 递归删除.DS_Store文件
  8. Javascript高级程序设计读书笔记(第三章)
  9. JAVA中IO和NIO的详解分析,内容来自网络和自己总结
  10. luogu2420 让我们异或吧
  11. github pages + Hexo + 域名绑定搭建个人博客增强版
  12. obj-c属性的新的特性
  13. [Kubernetes]深入解析Pod对象
  14. Windows 7 64bit VS2015 配置CUDA
  15. 矩阵游戏 HYSBZ - 1059(最大流)
  16. 一款易搭建,运行快的Git服务器:Gitea安装教程
  17. Linux基础命令---切换用户su
  18. (转)live555学习笔记-UsageEnvironment和TaskScheduler
  19. Python正则表达式 学习笔记
  20. C关键字typedef及argc,argv,env参数含义

热门文章

  1. C# 与 Java 的一些差异
  2. &lt;compilation debug=&quot;true&quot; targetFramework=&quot;4.5.2&quot;&gt; 报错解决方案
  3. MySql 获取数据库的所有表名
  4. Mvc中模拟模型
  5. Python - 基础语法 - 第一天
  6. PIE SDK归一化水体指数法
  7. mac上使用Sequel Pro工具SSH连接数据库
  8. ELK + kafka 分布式日志解决方案
  9. 01java中常用的一些算法工具——map转xml和xml转map
  10. JMETER 生成测试报告