Skip to main content

Posts

Showing posts from January, 2016

_PyErr_ReplaceException for virtualenv in Python 2.7

After upgraded Python 2.7 to latest version, it may occur to _PyErr_ReplaceException sometimes in virtualenv created by former version of python. For example: >>> import io Traceback (most recent call last): File " ", line 1, in File "/usr/lib/python2.7/io.py", line 51, in import _io ImportError: /home/ubuntu/ikaka/leanStudy/venv/lib/python2.7/lib-dynload/_io.so: undefined symbol: _PyErr_ReplaceException This is because the virtualenv had copied the python executable binary but linked lib directory. So just replace the python executable binary in virtualenv with the one in /usr/lib, like cp /usr/bin/python /bin/python

Change the default user when start a docker container

When run(start) a docker container from an image, we can specify the default user by passing -u option in command line(In https://docs.docker.com/engine/reference/run/#user ). For example docker run -i -t -u ubuntu ubuntu:latest /bin/bash We can also use the USER instruction in DOCKERFILE to do the same thing(In https://docs.docker.com/engine/reference/builder/#user), note that the option in command line will override the one in the DOCKERFILE. And there is actually another way to start a container with neither DOCKERFILE nor -u option, just by a command like: docker run -i -t ubuntu:latest /bin/bash # with ubuntu as the default user This happens when your start the container from an image committed by a container with ubuntu as the default user. Or in detail: Run a container from some basic images, create ubuntu user inside it, commit the container to CUSTOM_IMAGE:1 . Run a container from CUSTOM_IMAGE:1 with "-u ubuntu" option, and commit the container to CUSTOM