Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
将container中的端口映射到宿主机
在docker run时,通过-p参数将container中的服务端口映射到宿主机:
docker run --name=<container-name> -d -p 80:80 <image-name>
挂载本地目录到container
通过 -v 参数来将本地目录挂载到container中:
docker run --name=<container-name> -d -p 80:80 -v <host-file-path>:<container-file-path> <image-name>
挂载目录如果权限不足,可以通过 –privileged=true 来为容器加特权操作:
docker run --name=<container-name> --privileged=true -d -p 80:80 -v <host-file-path>:<container-file-path> <image-name>
在container和宿主机之间互相复制文件
从container中向宿主机复制文件:
docker cp <containerId>:/file/path/within/container /host/path/target
从宿主机向container复制文件:
# 查询container名称 docker ps # 获取完整的container id docker inspect -f '{{.Id}}' <container-id> # 复制文件 sudo cp path-file-host /var/lib/docker/devicemapper/mnt/<full-container-id>/rootfs/<file-path-in-container>
如何进入docker的container中
一般对于一个VPS来说,可以通过使用SSH的方式来进入到系统中,从而对系统进行管理。但在docker中,不建议这样做。而是建议使用nsenter来进行操作。假设主机中已经存在了nsenter命令。
首先查看当前运行中container的pid号:
docker inspect --format "{{.State.Pid}}" <container-id>
使用nsenter及pid号进入到container的命名空间中:
nsenter --mount --uts --ipc --net --pid --target <pid>
在docker节点之间导出与导入images
可以通过save与load命令在节点之间进行镜像的导入与导出:
docker save hliang/imagename > ./hliang-imagename.tar
docker load < ./hliang-imagename.tar