docker使用问题
一.docker内使用中文
如果docker已创建
vim ~/.bashrc
export LANG=C.UTF-8
source ~/.bashrc
如果使用Dockerfile
ENV LANG C.UTF-8
二.docker 创建容器常用选项
先给个总的 比较常用的创建选项:
sudo nvidia-docker run --name ${Docker_Container_Name} --shm-size="128g" --cpus ${CPU_Num} -p 5066:22 --user root -itv ${宿主机路径1}:${docker内路径1} -v ${宿主机路径2}:${docker内路径2} ${镜像名称}:${镜像版本} bash
或者
sudo docker run --name ${Docker_Container_Name} --shm-size="128g" --gpus all --cpus ${CPU_Num} -p 5066:22 --user root -itv ${宿主机路径1}:${docker内路径1} -v ${宿主机路径2}:${docker内路径2} ${镜像名称}:${镜像版本} bash
1、 容器联网问题
创建docker的时候 添加 --net=host可以使用宿主机网络联网, 使用这个会跟宿主机公用一个netnamespace
也可以使用桥接方式 --net=bridge,则每个容器都会有一个netnamespace。
还有两个选项(–net=none和–net=container),我觉得上面两个够用了,就不细说了。
2、 容器使用ssh远程链接配置
添加 -p 5066:22 可以使用ssh远程连接docker
docker 内需要安装ssh服务
apt-get install ssh
vim /etc/ssh/sshd_configure
#修改或者添加以下两项
Port 22
PermitRootLogin yes
#然后重启ssh服务
service ssh restart
3.关于GPU使用
如果使用nvidia-docker创建,则不需要特意配置
若使用docker创建, 则需要指定GPU ,使用 --gpus ${gpu-id} 或者 --gpus all
三.docker 镜像容器常用操作
1、 批量删除docker
docker rm -f `docker ps -a -q` # 删除所有容器
docker rmi -f `docker images -q` # 删除所有的镜像
2、 开启、重启、关闭docker操作
systemctl start docker #启动docker服务
systemctl restart docker #重启docker服务
systemctl stop docker #关闭docker服务
3、 拉取docker镜像
docker pull xxx/imageName
PS:
Xxx为镜像路径
ImageNmae为镜像名
镜像可以在https://hub.docker.com/search?q=&type=image中搜索找到
4、 导入导出本地容器镜像
容器生成新的镜像:
docker commit ${CONTAINER_ID} ${New_Image_Name}
导出镜像
docker save -o ${保存路径} ${镜像名称:标签}
# 例如:
docker save -o ./ubuntu18.tar ubuntu:18.04
docker save d3949e34634c > /home/centos7.4.tar
导出容器
docker export ${容器名} > ${保存路径}
# 例如:
docker export ubuntu18 > ./ubuntu18.tar
导入容器/镜像
docker import ubuntu18 > ./ubuntu18.tar #导入本地容器
docker load --input ./ubuntu18.tar #导入本地镜像
5、 查看docker输出日志
docker logs -f ${docker_ID}
6、 使用dockerfile创建docker
docker build --network=host -f dockerfile -t dockername:v1.01 ./
PS:
dockerfile为dockerfile文件
–network=host 设置docker容器内网络模式
dockername:v1.01 容器名字以及版本号
7、 使用–mac-address创建虚拟网卡
设置虚拟网卡是为了访问宿主机的redis或者mysql等数据库
–mac-address=”ee: ee: ee: ee: ee: ee:ee”
8、 修改已创建容器属性
docker container update --restart=always ${容器名字}
9、 容器默认跟随系统启动并自动执行命令
sudo nvidia-docker run --name ${Docker_Container_Name} --shm-size="128g" --cpus ${CPU_Num} -p 5066:22 --user root --restart=always -itv ${宿主机路径1}:${docker内路径1} -v ${宿主机路径2}:${docker内路径2} ${镜像名称}:${镜像版本} bash /path/your/code/run.sh