We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
随着Docker技术的不断成熟,越来越多的企业开始考虑使用Docker持续集成、版本控制、可移植性、隔离性和安全性的优势上有着不可替代的优势,在看似稳定而成熟的场景下,使用Docker的好处越来越多,所以趁着开年摸鱼期间,学习了一下docker的基本应用
以下特性是我复制粘贴的😆
文件系统隔离: 每个进程容器运行在完全独立的根文件系统里。
资源隔离: 可以使用cgroup为每个进程容器分配不同的系统资源,例如CPU和内存。
网络隔离: 每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和IP地址。
写时复制: 采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间。
日志记录: Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
变更管理: 容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。
交互式Shell: Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。
镜像
只读模板
仓库
集中存放镜像文件的地方,和git的概念类似,有公开和私有之分,用户创建自己的镜像后可以使用push上传到仓库,在使用时随时pull下来
容器
区别于镜像的唯一区别在于容器是可读写的
docker pull
从仓库拉取镜像
例如: docker pull node
docker pull node
相当于 docker pull registry.hub.docker.com/centos:lastest
docker pull registry.hub.docker.com/centos:lastest
从其他仓库下载时需要指定完整的仓库地址
docker images
列出了所有顶层镜像,每个顶层下隐藏了多个镜像层
docker build 或 docker commit
docker build
docker commit
mkdir 85ido cd 85ido vim Dockerfile #这里需要到Dockerfile下修改这个文件
docker build -t 85ido/node:1.0 .
其中-t 来标识添加的tag,指定新的镜像用户信息, "." 是Dockerfile所在的路径(当前路径),也可以替换为一个具体的Dockerfile路径,但是不能一个镜像不能超过127层
更详细的语法说明请参考 Dockerfile
然后我们用docker images来看下镜像列表
使用 docker commit 来扩展一个镜像比较简单,但是不方便在一个团队中分享
docker push
例如:
在上传之前,需要先登录自己的docker hub账号
docker login
docker tag 85ido/node:1.0 chikinlee365/node:1.0 #将要发布的镜像改到自己的账户名下 我的账户名 chikinlee365
docker push chikinlee365/node:1.0 #推送到自己账户下的docker hub
docker create <image-id>
docker create 命令为指定的镜像(image)添加了一个可读写层,构成了一个新的容器。注意,这个容器并没有运行,docker create 命令提供了许多参数选项可以指定名字,硬件资源,网络配置等等。
创建一个node的容器,可以使用仓库+标签的名字确定image,也可以使用image-id 来指定,返回image id
#仓库+标签 docker create -it --name node_container chikinlee365/node:1.0 #使用image-id docker create -it --name node_container_by_id 6cf2124ba2a6 bash 查看目前已存在的容器列表,不加-a只显示当前运行中的容器 docker ps -a
docker create -it --name node_container_golf -v ../../work/project/golfOperator node
·docker start <container-id>
docker start <container-id>
Docker start命令为容器文件系统创建了一个进程隔离空间。注意,每一个容器只能够有一个进程隔离空间。
#通过名字启动 -i为启动并进入docker容器 $ docker start -i node_container_golf #通过容器ID启动 $ docker start -i 2c22396edcbb
docker exec <container-id>
在当前容器中执行新命令,如果增加 -it参数运行bash 就和登录到容器效果一样的。
docker exec -it 2c22396edcbb bash
docker stop <container-id>
docker rm <container-id>

docker rmi <image-id>
这里注意,由于同一个image id被两个资源所引用,所以会提示无法删除的问题
这里可以使用 REPOSITORY:TAG的方式删除镜像
REPOSITORY:TAG
你也可以使用-f来强制删除只读层(镜像)
docker commit <container-id>
把容器(I/O)变为了一个镜像(O)
docker save <image-id>
#保存镜像node(id或者REPOSITORY:TAG)到node.tar文件 docker save -o node.tar 6cf2124ba2a6
创建一个镜像的压缩文件,这个镜像文件可以在其他docker上使用(如:堡垒机)和下面的export不一样的是save可以保存每层的元数据,只对镜像有效
docker export <container-id>
创建了一个tar文件,并且移除掉元数据和不必要层,将多个层压缩,export后的容器import到docker中时,不会有历史镜像,而save可以
docker inspect <container-id> or <image-id>
提取出容器或者镜像最顶层的元数据
The text was updated successfully, but these errors were encountered:
No branches or pull requests
前言
随着Docker技术的不断成熟,越来越多的企业开始考虑使用Docker持续集成、版本控制、可移植性、隔离性和安全性的优势上有着不可替代的优势,在看似稳定而成熟的场景下,使用Docker的好处越来越多,所以趁着开年摸鱼期间,学习了一下docker的基本应用
特性
以下特性是我复制粘贴的😆
文件系统隔离: 每个进程容器运行在完全独立的根文件系统里。
资源隔离: 可以使用cgroup为每个进程容器分配不同的系统资源,例如CPU和内存。
网络隔离: 每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和IP地址。
写时复制: 采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间。
日志记录: Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
变更管理: 容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。
交互式Shell: Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。
应用场景
概念
镜像
只读模板
仓库
集中存放镜像文件的地方,和git的概念类似,有公开和私有之分,用户创建自己的镜像后可以使用push上传到仓库,在使用时随时pull下来
容器
区别于镜像的唯一区别在于容器是可读写的
操作
获取镜像
docker pull
从仓库拉取镜像
例如:
docker pull node
相当于
docker pull registry.hub.docker.com/centos:lastest
从其他仓库下载时需要指定完整的仓库地址
查看镜像列表
docker images
列出了所有顶层镜像,每个顶层下隐藏了多个镜像层
创建镜像
docker build
或docker commit
docker build
docker build -t 85ido/node:1.0 .
其中-t 来标识添加的tag,指定新的镜像用户信息, "." 是Dockerfile所在的路径(当前路径),也可以替换为一个具体的Dockerfile路径,但是不能一个镜像不能超过127层
更详细的语法说明请参考 Dockerfile
然后我们用
docker images
来看下镜像列表docker commit
使用 docker commit 来扩展一个镜像比较简单,但是不方便在一个团队中分享
上传镜像
docker push
例如:
在上传之前,需要先登录自己的docker hub账号
docker login
docker tag 85ido/node:1.0 chikinlee365/node:1.0 #将要发布的镜像改到自己的账户名下 我的账户名 chikinlee365
docker push chikinlee365/node:1.0 #推送到自己账户下的docker hub
创建容器
创建
docker create <image-id>
docker create 命令为指定的镜像(image)添加了一个可读写层,构成了一个新的容器。注意,这个容器并没有运行,docker create 命令提供了许多参数选项可以指定名字,硬件资源,网络配置等等。
例如:
创建一个node的容器,可以使用仓库+标签的名字确定image,也可以使用image-id 来指定,返回image id
将本地目录挂在到容器中
启动容器
·
docker start <container-id>
Docker start命令为容器文件系统创建了一个进程隔离空间。注意,每一个容器只能够有一个进程隔离空间。
#通过名字启动 -i为启动并进入docker容器 $ docker start -i node_container_golf #通过容器ID启动 $ docker start -i 2c22396edcbb
进入容器
docker exec <container-id>
在当前容器中执行新命令,如果增加 -it参数运行bash 就和登录到容器效果一样的。
docker exec -it 2c22396edcbb bash
停止容器
docker stop <container-id>
删除容器
docker rm <container-id>

删除镜像
docker rmi <image-id>
这里注意,由于同一个image id被两个资源所引用,所以会提示无法删除的问题
这里可以使用
REPOSITORY:TAG
的方式删除镜像你也可以使用-f来强制删除只读层(镜像)
commit 容器
docker commit <container-id>
把容器(I/O)变为了一个镜像(O)
镜像保存
docker save <image-id>
#保存镜像node(id或者REPOSITORY:TAG)到node.tar文件 docker save -o node.tar 6cf2124ba2a6
创建一个镜像的压缩文件,这个镜像文件可以在其他docker上使用(如:堡垒机)和下面的export不一样的是save可以保存每层的元数据,只对镜像有效
容器导出
docker export <container-id>
创建了一个tar文件,并且移除掉元数据和不必要层,将多个层压缩,export后的容器import到docker中时,不会有历史镜像,而save可以
容器提取
docker inspect <container-id> or <image-id>
提取出容器或者镜像最顶层的元数据
The text was updated successfully, but these errors were encountered: