晚上在搞python做一個(gè)項(xiàng)目時(shí)候全度,順便搞了一下docker python環(huán)境嘹屯。
真是一堆坑
- 用到的一些docker命令 注意區(qū)分imageId和containerId
docker images //查看所有鏡像
doker ps //查看當(dāng)前運(yùn)行的容器
docker history {imageId} //查看鏡像的歷史記錄
exit //退出當(dāng)前鏡像 退出后可以提交
docker commit -a "提交信息" {containerid}:{tag} //提交改動(dòng)
docker tag {imageId} {imagename}:{tag} //這個(gè)可以用來(lái)對(duì)鏡像和tag重命名
docker run -i -t -v {host_dir}:{container_dir} -p {host_port}:{container_port} {imageId} env LANG=C.UTF-8 /bin/bash
/*
-i: 以交互模式運(yùn)行容器评肆,通常與 -t 同時(shí)使用慢蜓;
-t: 為容器重新分配一個(gè)偽輸入終端亿絮,通常與 -i 同時(shí)使用
-v 目錄掛載(非拷貝)
-p 端口映射
env LANG=C.UTF-8 指定utf-8編碼肛响,默認(rèn)編碼無(wú)法顯示中文
/bin/bash 進(jìn)入container bash環(huán)境
*/
- 進(jìn)入docker container有兩種方案:
//進(jìn)入container岭粤,退出時(shí)停止container
//使用attach命令
docker attach containerId
//進(jìn)入container,退出時(shí)不停止conainer
//使用exec 命令特笋。還有一些中文環(huán)境設(shè)置 建議在.bashrc中添加快捷函數(shù)
function docker_exec() {
docker exec -it $1 env LANG=C.UTF-8 /bin/bash
}
之后調(diào)用就可以 docker_exec containerId
- docker運(yùn)行中的動(dòng)態(tài)端口映射命令是
// $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
但是 無(wú)奈我是mac iptables不存在 代替的是pfctl 剃浇。。 算了 還是睡覺(jué)了