dockerDocker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

docker

将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