晚上在搞python做一个项目时候,顺便搞了一下docker python环境。
真是一堆坑
- 用到的一些docker命令 注意区分imageId和containerId
docker images //查看所有镜像
doker ps //查看当前运行的容器
docker history {imageId} //查看镜像的历史记录
exit //退出当前镜像 退出后可以提交
docker commit -a "提交信息" {containerid}:{tag} //提交改动
docker tag {imageId} {imagename}:{tag} //这个可以用来对镜像和tag重命名
docker run -i -t -v {host_dir}:{container_dir} -p {host_port}:{container_port} {imageId} env LANG=C.UTF-8 /bin/bash
/*
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-v 目录挂载(非拷贝)
-p 端口映射
env LANG=C.UTF-8 指定utf-8编码,默认编码无法显示中文
/bin/bash 进入container bash环境
*/
- 进入docker container有两种方案:
//进入container,退出时停止container
//使用attach命令
docker attach containerId
//进入container,退出时不停止conainer
//使用exec 命令。还有一些中文环境设置 建议在.bashrc中添加快捷函数
function docker_exec() {
docker exec -it $1 env LANG=C.UTF-8 /bin/bash
}
之后调用就可以 docker_exec containerId
- docker运行中的动态端口映射命令是
// $1 是host_port $2是container_port $3是imageId
containerIP='docker inspect --format="{{.NetworkSettings.IPAddress}}" $3'
iptables -t nat DOCKER -p tcp --dport $1 -j DNAT --to-destination ${containerIP}:$2
但是 无奈我是mac iptables不存在 代替的是pfctl 。。 算了 还是睡觉了