docker(2):基本操作
title: docker(2):基本操作
date: 2017-12-02 23:07:22
tags:
- docker
categories: docker
镜像操作
Docker Hub镜像操作
- 搜索镜像
|
|
- 从docker hub上下载镜像到本地
|
|
本地镜像操作
- 列出所有本地镜像
|
|
如果给镜像打tag前,镜像已经有tag,则打完tag,通过docker images可以查询出多条对应同一个镜像的记录。每一个tag对应一条记录。此时,需要要删除多余的tag,可以通过docker rmi进行删除
创建镜像
- 基于本地旧的镜像创建新的镜像
基于旧的镜像创建一个容器,在容器内安装新的软件包,然后将这个容器转换为一个新的本地镜像。转换的命令如下:
|
|
转换后,可以通过docker images查看到新创建的镜像,然后可以基于新镜像创建容器:
- 基于Dockerfile创建镜像
创建一个文件,文件名叫Dockerfile,内容如下:
|
|
编译成本地仓库的一个镜像:
|
|
容器操作
容器基本操作
- 创建一个容器(不立即运行,处于停止状态)
|
|
- 创建并运行一个容器
|
|
- 如果本地没有此镜像,会自动从远程Docker Hub中先下载镜像,再基于此镜像创建对应的容器。
- 后面的参数是指定容器启动后运行的命令。容器将在命令运行结束后停止。之后容器可以通过docker start container_name重新启动
- 运行一个交互式的容器
|
|
- -t表示指定一个容器内的伪tty。-i表示创建一个交互式连接。
- 命令运行后,将会进入shell交互式界面,可执行任意的命令。
- 启动一个后台运行的容器
默认参数下,启动的容器将在前端运行。如果需要让容器在后台运行,则需要指定-d参数:
|
|
- 创建一个带名称的容器
|
|
- 开始/停止/强制停止一个的容器
|
|
- 删除一个容器
|
|
默认情况下只允许已经处于停止状态的容器。如果要删除处于停止状态的容器,需要加-f参数。
- 查询容器的端口通过哪一个主机端口映射
|
|
- 列出所有的容器
|
|
- 如果指定-a参数,则列出所有状态下的容器,包含处于stop状态的容器。如果没有带-a参数,则只显示出处于运行状态的容器。
- -l参数表示只列出最后一个启动的容器。
- 查看容器的后台日志
|
|
-f类似于Linux tail的-f参数。
- 查看容器的进程
|
|
- 查看容器的详细状态信息
|
|
容器操作示例
- 运行一个后台运行的Web容器(随机端口映射)
|
|
-P参数表示根据容器的需求,映射主机的随机端口到容器内。
- 运行一个后台运行的Web容器(指定端口映射)
|
|
-p参数表示主机的6000端口映射到容器的5000端口。
容器网络管理
基本使用
- 查询所有网桥
所有的容器默认挂在一个叫bridge的交换机(网桥)下,网桥可以通过如下命令查询:
|
|
- 创建一个新的网桥
|
|
示例
- 创建一个叫web的容器,挂在默认网桥下:
|
|
可以看到该容器的IP地址是172.17网段IP:
|
|
再创建一个叫db的容器,挂在新创建的my-bridge-network网桥下
|
|
可以看到该容器的IP地址是172.18网段IP:
|
|
将web容器改为挂载到my-bridge-network下:
|
|
然后,再登录web容器,发现可以ping通db容器:
|
|
数据卷
- 创建一个数据卷,数据存储在主机的随机目录下,数据随容器的删除而删除
创建一个名叫web的容器,指定创建一个数据卷,数据卷挂载到容器内的/webapp目录下:
|
|
查看该容器的挂载信息
|
|
可以看到该数据卷存储在主机的/var/lib/docker/volumes/目录下。
- 创建一个数据卷,数据存储在主机的指定目录下,数据随容器的删除而删除
同上,但手工指定主机的目录。如下将主机的/opt/test目录映射到容器内的/webapp目录:
|
|
备注:可以通过指定多个-v参数来映射多个数据卷。
也可以只映射指定的文件,而不是整个目录。将主机的/opt/test/hello文件映射到容器内的/webapp/file文件:
|
|
备注:通过vi等工具 修改挂载的文件可能会造成文件inode的改变,从而导致错误。因此,不推荐挂载文件的方式。
- 以只读方式挂载
在容器内的挂载目录后加上”:ro”即可:
|
|