Docker学习笔记
推荐阮一峰老师的Docker入门教程
安装
镜像(image)
镜像相关的命令,采取规范的格式比较容易记忆:
docker image ls
docker image rm [image_name]
docker image pull [image_name]
docker image build -t [image_name] [dockerfile_path]
容器(container)
同样的,容器相关命令的规范形式:
docker container ls # 列出正在运行的容器
docker container ls --all # 列出所有容器,包括停止终止的
docker container kill [container_id]
docker container rm [container_id]
docker container run [-it] [-p xxx:xxx] [image_name] [script]
docker 与 kubernetes
就在Docker容器技术被炒得热火朝天之时,大家发现,如果想要将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理。
就在这个时候,K8S出现了。
K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。
其他
因为使用集群的镜像,不能随意修改更新镜像,有诸多限制。部分曲线救国的方法:
获取容器内的root权限
首先你的container得正在运行
可通过sudo docker container ls或者sudo docker ps查看容器的CONTAINER ID
最后执行命令(其中7509371edd48 为上面查到的CONTAINER ID)
sudo docker exec -it -u root 7509371edd48 bash
更换容器内软件的版本
比如说更新cmake的版本。
看了看PATH中包含/usr/local/bin目录,而此目录下为空,我们可以将外部的软件(或符号链接)目录直接挂载为该目录,这样系统在查找相应的软件时,可以使用我们自己挂载的版本。
无sudo权限以及非root的用户apt安装软件
虽然通过前面的方法可以获取容器的root权限,但注意在容器内做出的修改并不能保存。
因为apt-get install不能指定安装路径,我们直接使用apt-get安装的软件在容器退出之后不能留存,下次启动容器仍然无法使用。
方法一:
通过源码方式安装软件,可以指定其安装路径。
因此我们可以先安装到自己有权限访问的目录下,然后将安装目录挂载为系统PATH中的目录(也可以每次启动docker后修改PATH变量),这样就可以使用该软件了。
方法二:
获得sudo权限后,直接使用apt-get安装,然后使用dpkg -L package-name
命令查看安装位置,将所需的目录进行拷贝,下次启动容器时挂载到对应位置。