docker容器介绍及部分使用
docker 介绍
docket的介绍网上有很多,说的也很详细。但是我当时在看的时候感觉不是很好理解。但是还是推荐去看官网介绍,以下自己的看法总结
容器技术出现已经很久了,2013年发布后发展很快。具体的docker应用明天详细写出(具体语法)。今天说一下docker的概念。
简单的来说docker就是一个类似于虚拟机的东西,不同之处在于它是可以共享宿主机的资源,而且资源消耗很低,同时也提供了很便利的接口。
对于程序开发来说,使用docker可以很好的做到资源隔离、方便部署。但是缺点也很明显,一旦出现问题不能及时分析,日志分析困难等。但是只要是优点大于缺点那么它就是成功了大半。如果让你部署200台服务器,你也不可能一个一个去配置吧!docker的镜像容器技术就很好的解决了这个问题。
docker有三个重要概念:镜像、容器、仓库。
镜像:可以理解为一个特殊的系统,包括容器运行的所有依赖文件和资源,不包括动态资源,一旦建立就不会改变
容器:其实就是镜像+你自己的资源,就是相当于镜像的本地定制
仓库:就是存放镜像的地方
当我们从公开仓库拿到部分公开资源镜像后,通过加入自己开发的东西建立符合自己需求的容器,然后把容器变成镜像,这样此镜像就是自己程序的镜像了,上传仓库里,只要是有机器需要就pull下来,运行容器就可以在相同配置文件下运行程序而不用担心配置或其他方面的错误。
其实我觉得docker很类似Git之类的代码托管。只不过Git是做代码托管,而docker托管的是整个系统(包括操作系统,配置文件,静态资源等等,就是一套从系统到自编软件的所有资源托管,有些夸大了,反正就是那个意思)
docker常用命令
镜像相关命令
-
docker images # 查看已有镜像
-
docker sava 镜像唯一标识 > 保存路径 # 保存镜像至本地
-
daocker load 镜像文件 # 加载镜像文件
-
daocker rmi 镜像唯一标识 # 删除镜像, 删除镜像前必须先将与之相关联的所有容器删除
容器相关命令
-
docker ps [-a] [-q] # 查看当前运行的容器 -a:查看所有容器 -q:查看容器ID
-
docker stop|start|restart 容器标识 # 停止|开启|重启 容器
-
docekr run -i -t [-d:后台运行] [-p:端口映射] [--name:命名] 容器标识 [bash:打开命令行] # 创建容器|进入容器
-
docker exec -i -t 容器标识 # 进入已经运行的容器,与run相比,exit后不会停止容器
-
Dockerfile 创建镜像 Dockerfile 没有后缀名,内容如下 FROM 镜像标识 --------关联镜像 ENV 变量 --------设置环境变量 MAINTAINER 信息 --------维护人信息(不推荐) LABEL maintainer="信息" -----维护人信息(推荐) RUN 命令1 && 命令2 && 命令3 ----创建镜像时执行的命令(尽量少写run,命令合并) EXPOSE 端口1 端口2 --------开启端口 ADD 文件或路径 --------复制文件到镜像中 VOLUME 路径 ------------容器挂载路径 WORKDIR 路径 -----------容器运行时内部工作路径 CMD ['命令1', '命令2', ...] -----容器创建或启动时执行的命令 # 部分命令案例 # ENV JAVA_HOME /usr/local/jdk... # CMD ['python', 'app.py'] CMD['pypy3', 'app.pyc']
私有仓库相关命令
-
需要先建立私有仓库(阿里仓库https://cs.console.aliyun.com/index2?accounttraceid=7a8a8f85e1aa4720b5cc6701e6d4bec4sixn#/k8s/cluster/list
具体操作可看https://cr.console.aliyun.com/repository/cn-hangzhou/zgf_docker/dockers/details)
-
docker login --username=用户名 registry.cn-hangzhou.aliyuncs.com # 登录账号
-
docker pull registry.cn-hangzhou.aliyuncs.com/命名空间/仓库名:[镜像版本号]
-
sudo docker tag 镜像id 想改成的名字:版本号 # 使用"docker tag"命令重命名镜像,
-
docker push 镜像名:版本
udo docker tag 镜像id 想改成的名字:版本号
# 使用"docker tag"命令重命名镜像,
```
-
docker push 镜像名:版本