Docker 的点点滴滴

Docker 是一个开源的应用容器引擎,基于 Go 语言 并听从Apache2.0协议开源。git

Docker 可让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,而后发布到任何流行的 Linux 机器上,也能够实现虚拟化。docker

容器是彻底使用沙箱机制,相互之间不会有任何接口(相似 iPhone 的 app),更重要的是容器性能开销极低。ubuntu

Docker 的架构:vim

原文转转来自:https://blog.csdn.net/S_gy_Zetrov/article/details/78161154 架构

一.镜像(Image)

镜像是静态的、能够被用户互相分享的文件。咱们玩过双系统和虚拟机的人都知道,首先你须要一个.iso镜像,才能安装系统。Docker中的镜像也是这个东西,镜像是静态的,你不能对他操做,只能pull别人的镜像或者push本身的镜像。app

二.容器(Container)

镜像是静态不可操做的,只能被分享和下载,那什么是能被操做的呢?就是容器里!容器能够理解为镜像的动态状态,也就是咱们虚拟机中系统装好后的状态,其实这么说是不对的,容器最符合的描述应该是Linux的iso文件的Live CD模式,好比咱们玩双系统时都进入过Live CD模式,不安装系统而直接进入系统,很神奇是吧,Docker的容器就是这个概念,只不过更加轻量更加迅速便捷。可是Live CD的害处就是你关机后做出的修改安装的软件所有gg,容器也是同样,一旦被直接推出,以前安装的gcc啊vim啊啥的就会所有gg掉。若是要保存修改,就须要将当前容器封装成一个新的镜像,这样下次启动这个新的镜像后以前做出的修改还都在。性能

三.仓库(Repository)

Docker中的仓库很像git的代码仓库,你能够pull本身以前push到本身仓库的镜像到本地,也能够pull别人push到公共仓库的镜像到本身本地。你还能够下载(pull)别人分享的镜像到本身的本地,别人也能够下载(pull)你的镜像,由于Docker仓库都是公共的。固然,每一个免费用户有一个名额把本身的一个镜像设为私有,也就是禁止被分享给别人ui

安装docker

使用命令:spa

sudo apt install docker.io

查看docker的版本.net

docker -v

获取镜像

sudo docker search ubuntu

pull 拉去到本地,默认是latest版本 (:lastes)=tag

sudo docker pull ubuntu

查看本地镜像

sudo docker images

运行本地镜像

-it 表示运行在交互模式

sudo docker run -it ubuntu
root@8f0fb5bd974f:/#

此处已是root用户状态,

运行的镜像就是咱们本地的容器,在本地容器环境中安装软件

apt install vim

提示:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package vim

由于当前系统是精简镜像,因此必须先apt update一次才能够。

apt update
.....
apt install vim

退出容器

使用 exit命令

exit

保存容器环境

exit退出容器后,在运行镜像发现,vim 或安装的软件不存在,已经还原了,由于退出容器的时候没有保存环境,要保存容器,就要把容器转换为镜像。使用commit 命令

先获取容器ID

sudo docker ps -a

 其实,在docker run 以后就能够看到container的id了

 

执行commit命令

-m指定说明信息

-a指定用户信息

a50efd41c14d容器的id

my_repo:vvim指定目标镜像的用户名、仓库名和 tag 信息

sudo docker commit -m "ubuntu with vim " -a "dxb8888" a50efd41c14d my_repo:vvim

 

删除镜像、容器

sudo docker rm container_id  # 删除容器
sudo docker rmi image_id    # 删除镜像

删除镜像的时候必需要删除属于镜像下的容器,不然回报错误:Error response from daemon: conflict: unable to remove repository reference "ubuntu" (must force) - container 718c03f5fd16 is using its referenced image 94e814e2efa8 

若是删除镜像提示 Error: No such image: my_repo,表示tag不惟一,   就要带上镜像的tag

sudo docker rmi image_id:tag

 

将本地镜像保存到hub

1:注册hub https://hub.docker.com

2:终端登录hub帐户

docker login

输入用户名与密码

3:使用tag命令将本地镜像添加到新的标签(与hub上新建的仓库同样)

sudo docker tag my_repo:vvim dxb8888/ubuntu_env:vvim

此时,本地有了另一个镜像 dxb8888/ubuntu_env

4:将镜像push到hub

sudo docker push dxb8888/ubuntu_env:vvim

相关文章
相关标签/搜索