docker永久修改容器编码

由于最近需要使用百度的paddlepaddle框架,所以想搞个容器,  pycharm远程连接docker里面的python解释器。

 

1. 修改容器编码

在网上拉了个ufoym/deepo镜像,这个镜像比较大,包含了当前比较流行的DL框架,创建容器之后,发现容器并不能显示中文,容器的编码是这样的:

docker永久修改容器编码_第1张图片

永久修改容器编码:在原有容器的基础上使用Dockerfile构建新的镜像。

From ufoym/deep0:v2_paddlepaddle
ENV LANG C.UTF-8
EXPOSE 8080 22 80
#From 说明在那个原有的镜像基础上构建
#ENV LANG 表示你的容器编码
#EXPOSE 表示你的容器对外暴露的端口号

然后直接在Dockerfile所在的目录下运行:

sudo docker build -t ufoym/deepo:v2 .
# ufoym/deepo:v2你的新镜像名字
# . 表示你的Dockerfile文件所在路径(Dockerfile就在当前路径下)

sudo nvidia-docker run   --name ykk -it  -p 8080:8080 -p 10022:22 -p 18888:80    -v /home/hdj/yk/data:/data  ufoym/deepo:v2

#创建容器,宿主机端口号8080映射到容器端口8080,宿主机端口号10022映射到容器端口22,宿主机端口号18888映射到容器端口80

如下图:

docker永久修改容器编码_第2张图片

注:最好在一个单独的目录下创建Dockerfile

地址:https://blog.csdn.net/tiandaochouqin99/article/details/80082743

当使用Dockerfile Build镜像时,

现象1. 有时会发现发送到Daemo的内容过大,如下:

Sending build context to Docker daemon 218.2 MB

现象2. 并导致生成的docker image过大

而,Dockerfile中的内容却不多,

FROM ceph-client
MAINTAINER dev 

RUN yum clean all && yum makecache && yum install -y metaview-server metaview-cli

ADD entrypoint.sh /entrypoint.sh

WORKDIR /
ENTRYPOINT ["/entrypoint.sh"]

百度后发现,docker client会默认把Dockerfile同级所有文件发给docker Deamon中,因为目录下有备份的tar文件,有几百兆

解决办法有两种:

1.使用.dockerignore文件,设置黑名单,该文件包含的目录不会被发送到Docker daemon中

2.将Dockerfile迁移后其他目录中执行。

3.将不需要的文件删除

 

2. 远程连接pycharm

#进入容器
sudo docker exec -it yk bash



#修改root用户密码

passwd

# 检查容器内部是否以安装 openssh-server与openssh-client 若没安装执行一下命令安装
apt-get update
apt-get install openssh-server
apt-get install openssh-client

# 修改SSH配置文件以下选项

vim /etc/ssh/sshd_config

# PermitRootLogin prohibit-password # 默认打开 禁止root用户使用密码登陆,需要将其注释
RSAAuthentication yes #启用 RSA 认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
PermitRootLogin yes #允许root用户使用ssh登录

# 启动sshd服务

/etc/init.d/ssh restart

# 退出容器,连接测试

ssh [email protected] -p 10022

# 输入密码成功进入容器内部即配置成功

 

 

三、使用Pycharm远程连接

1、打开配置界面docker永久修改容器编码_第3张图片

2、按照远程服务器信息配置信息:配置好后可以点击测试连接测试是否能够连接成功

docker永久修改容器编码_第4张图片

点击测试连接

docker永久修改容器编码_第5张图片

 

 

你可能感兴趣的:(docker永久修改容器编码)