docker学习笔记
镜像操作
搜索镜像
docker search 镜像名称
1 | [root@bogon ~]# docker search centos |
获取镜像
docker pull 镜像名称
1 | # 示例 |
查看镜像信息
docker images
1 | # 示例 |
删除镜像
docker rmi 镜像名称
1 | # 示例 |
创建镜像
基于已有镜像的容器创建
docker commit …
1 | -a, --author="" 作者信息 |
1 | # 示例 |
容器操作
新建容器
docker create -it …
1 | # 示例 |
上述为新建一个容器,但是处于停止状态,可以使用docker start命令启动它。
1 | # 示例 |
新建并启动容器
启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一种是将在终止状态的容器重新启动。所需命令为docker run,等价于先执行docker create命令,再执行docker start命令。
1 | # 示例 |
启动一个bash终端,允许用户进行交互:
1 | # 示例 |
守护状态运行
通过“-d”参数实现
1 | # 示例 |
终止容器
可以通过docker stop终止运行中的容器,命令格式为docker stop [-t|—time[=10]]。它会首先向容器发送SIGTERM信号,等待一段时间后(默认为10秒),再发送SIGKILL信号终止容器
1 | # 示例 |
进入容器
在使用-d进入后台后,如果需要进入容器进行操作,可以使用docker attach、docker exec、nsenter工具等。
docker attach
1 | # 示例 |
删除容器
docker rm删除一个处于停止状态的容器
1 | -f, --force=false 强行终止并删除一个运行中的容器。 |
1 | # 示例 |
仓库
registry镜像方式搭建本地私有仓库
1 | # 示例 |
此时,这将下载并启动一个监听5000端口的registry容器,创建本地私有仓库服务。默认情况下,会将仓库创建在容器的/tmp/registry目录下,可以通过-v参数来将镜像文件存放在本地其他指定路径下:
1 | # 示例 |
上传镜像
1 | # 查看镜像 |
192.168.1.187为仓库地址,接下来上传至仓库
1 | # 示例 |
这里出错,提示不是HTTPS协议,docker官方强烈推荐https协议,如果没有,可在docker配置文件中添加“insecure-registries”:[“192.168.1.187:5000”]指定:
1 | # 示例 |
重启docker并再次push操作
1 | # 示例 |
这样,就能push上去了,可在其他docker客户端配置中下载:
1 | # 示例 |
数据管理
数据卷(volume)配置与本地host主机挂载,配置选项-v:
1 | # 示例 |
上述配置信息看到b2相关的volume存储位置在/data目录中,而挂载的宿主机的位置为:/var/lib/docker/volumes/d40f1da12c8409119d25d847b9e17242d3ae2fe4bca7936764c04446b87cee44/_data,我们可以在宿主机的这个目录中和b2的volume中分别测试验证挂载:
1 | # 示例 |
可以看到挂载成功,如果我们要指定宿主机的挂载位置只要在选项参数-v后添加相关位置即可,格式为:-v 宿主机位置:容器位置(例如:-v /data/volume/b2:/data),这种别称为绑定挂载卷
1 | # 示例 |
把容器b2的/data目录挂载至宿主机的/data/volume/b2目录下,这样访问容器b2的/data目录中的数据实际是访问的宿主机的/data/volume/b2目录下的数据资源。
1 | # 示例 |
docker容器网络
容器虚拟化网络
大家知道Linux内核支持六中名称空间:
UTS
管理主机名和域名
User
用户管理
Mount
挂载管理
IPC
管理进程间通信
Pid
进程id
Net
网络管理
所谓网络名称空间是为了协议栈的隔离
未完待续。。。