前言:
学习一下docker吧,
有时候做环境和启动环境真的挺方便的。
目录:
docker架构:
先来看看 docker 架构
Client 是客户端,通常来说就是我们的操作界面
可以进行镜像建立、上传下载和运行。
docker_host 是docker虚拟机,
docker daemon 是虚拟机中的一个核心程序
镜像的建立、上传下载和运行 都通过这个程序来实现
而与这个程序进行交互就是 Client
registry 是互联网服务,docker daemon 可以跟这个服务交互,
下面这张图就是以中文形式表现了。
原理还是一样的。
简单使用:
显示镜像:
docker images
运行镜像:
docker run
例如
docker run -p 8080:80 -d daocloud.io/nginx
然后他会返回一个 Controller(控制器) 的 id
-p 参数是 映射
-p 8080:80(本地端口:容器端口) 意思是 将docker容器 80 端口映射到本地 8080 端口
-d 允许这个程序直接返回,也就是 Controller(控制器)做为守护进程来执行
显示正在运行的容器:
docker ps
不过 docker ps 只能显示正在运行的容器
如果加参数 -a ,就可以显示所有历史运行过的容器
比如 docker ps -a
然后我们可以看一下是不是在本地 8080 端口开启了一个 nginx 服务
现在我们有一个简单的 html 文件,然后我们试图更换原有的 nginx 页面
这里拷贝文件可以使用 cp 命令
docker cp # 用于容器与主机之间的数据拷贝。
直接输入
docker cp index.html cafc81008127://usr/share/nginx/html
拷贝完成
然后我们重新刷新页面
但是这个方法并不是永久替换,
如果重新运行容器,又会回到原来的页面
这是因为在 docker 内做的操作,都是暂时的
如果要保存,需要另外的操作
这个时候我们可以使用 commit 命令
docker commit # 从容器创建一个新的镜像。
commit 参数:
-
-a :提交的镜像作者
-
-c :使用Dockerfile指令来创建镜像
-
-m :提交时的说明文字
-
-p :在commit时,将容器暂停。
然后我们直接输入:
docker commit -m 'fun' cafc81008127
这个时候你会发现新出现一个未命名的 docker 容器
如果我们在上条命令后面多写个名称,就可以命名了
比如:
命名为 nginx-fun
docker commit -m 'fun' cafc81008127 nginx-fun
然后这里有两个容器,
实际上是同一个,
只是一个命令了,一个没有
现在我们来把这个 未命名的容器删掉
使用命令
docker rmi 容器id
这样就可以了
清除运行记录
docker rm 容器id
停止容器
docker stop 容器id
总结:
还是要多去实践
命令小结:
- docker pull – 获取 image
- docker build – 创建 image
- docker images – 列出 image
- docker run – 运行 container
- docker ps – 列出 container
- docker rm – 删除 container
- docker rmi – 删除 image
- docker cp – 在host和container之间拷贝文件
- docker commit – 保存改动为新的image