blubiu

My Love

上网不网恋,简直浪费电.


初识Docker


前言:

学习一下docker吧,

有时候做环境和启动环境真的挺方便的。


目录:


docker架构:

先来看看 docker 架构

Client 是客户端,通常来说就是我们的操作界面

可以进行镜像建立、上传下载和运行。

docker_host 是docker虚拟机,

docker daemon 是虚拟机中的一个核心程序

镜像的建立、上传下载和运行 都通过这个程序来实现

而与这个程序进行交互就是 Client

registry 是互联网服务,docker daemon 可以跟这个服务交互,

images


下面这张图就是以中文形式表现了。

原理还是一样的。

images


简单使用:

显示镜像:

docker images

images


运行镜像:

docker run

例如

docker run -p 8080:80 -d daocloud.io/nginx

然后他会返回一个 Controller(控制器) 的 id

-p 参数是 映射

-p 8080:80(本地端口:容器端口) 意思是 将docker容器 80 端口映射到本地 8080 端口

-d 允许这个程序直接返回,也就是 Controller(控制器)做为守护进程来执行

images


显示正在运行的容器:

docker ps

不过 docker ps 只能显示正在运行的容器

如果加参数 -a ,就可以显示所有历史运行过的容器

比如 docker ps -a

images


然后我们可以看一下是不是在本地 8080 端口开启了一个 nginx 服务

images


现在我们有一个简单的 html 文件,然后我们试图更换原有的 nginx 页面

images


这里拷贝文件可以使用 cp 命令

docker cp  # 用于容器与主机之间的数据拷贝。

直接输入

docker cp index.html cafc81008127://usr/share/nginx/html

拷贝完成

images


然后我们重新刷新页面

images


但是这个方法并不是永久替换,

如果重新运行容器,又会回到原来的页面

这是因为在 docker 内做的操作,都是暂时的

如果要保存,需要另外的操作

这个时候我们可以使用 commit 命令

docker commit  # 从容器创建一个新的镜像。

commit 参数:

  1. -a :提交的镜像作者

  2. -c :使用Dockerfile指令来创建镜像

  3. -m :提交时的说明文字

  4. -p :在commit时,将容器暂停。


然后我们直接输入:

docker commit -m 'fun' cafc81008127

这个时候你会发现新出现一个未命名的 docker 容器

images


如果我们在上条命令后面多写个名称,就可以命名了

比如:

命名为 nginx-fun

docker commit -m 'fun' cafc81008127 nginx-fun

然后这里有两个容器,

实际上是同一个,

只是一个命令了,一个没有

images


现在我们来把这个 未命名的容器删掉

使用命令

docker rmi 容器id

这样就可以了

images


清除运行记录

docker rm 容器id

停止容器

docker stop 容器id

总结:

还是要多去实践

命令小结:

  1. docker pull – 获取 image
  2. docker build – 创建 image
  3. docker images – 列出 image
  4. docker run – 运行 container
  5. docker ps – 列出 container
  6. docker rm – 删除 container
  7. docker rmi – 删除 image
  8. docker cp – 在host和container之间拷贝文件
  9. docker commit – 保存改动为新的image