Skip to main content
  1. Posts/

Notes on Docker -- s3

·529 words·3 mins·
Table of Contents

Personal notes on docker usage.

docker: permission denied when pushing
#

When I run the docker command, I got the following error:

docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied.See ‘docker run –help’.

This is because docker normally requires root right to run. We can create a docker group and add current user to this group:

sudo groupadd docker
sudo usermod -aG docker $USER

Restart to make the change take effect. Now we should be able to run docker command without errors.

Ref:

How do I push a container to another remote repo
#

Suppose we have a local container and we want to push it to another remote repository, how do we do it?

First, we need to tag it:

docker tag IMAGE:[tag] remote_repo_address/user/name:tag

Instead of using names, you can also use CONTAINER ID or NAMES in the output docker ps. The all refer to the same container.

Then we can push to the remote repo:

docker push remote_repo_address/user/name:tag

Ref:

how to map multiple ports
#

In using docker, we can use -p <host_port>:<container_port> to expose container port to host port. If we need to expose multiple ports, we simply need to use multiple -p followed by port mappings.

docker run -it -p <host_port1>:<container_port1> -p <host_port2>:<container_port2>

Ref:

Docker logging file
#

By default, docker will record the output to stdout and stderr in a container. The log file is stored on the host machine. The log file location for a container is:

/var/lib/docker/containers/<container-id>/<container-id>-json.log

or you can directory find the log location for a container using the following command:

docker inspect <container-id> |grep LogPath

Each line in the log file is in JSON format, recording the log message, stream, and time, like this:

{"log":"echo test\r\n","stream":"stdout","time":"2021-03-23T06:32:05.401925782Z"}

Note that the time shown above is neither the time on your host machine nor your container. Based on issue here and post here, it seems that docker is using UTC time zone. So the time shown in the log file may not be the time on your host machine or docker container.

To show the incoming logs in a container, use docker logs -f <container-id> (like what tail -f does).

Ref

name or rename a docker container
#

By default, when we use docker run to start a container, docker will use a random name for this container. We can also use a custom name by using the --name option:

docker run -it --name my_service ...

We can also rename a running container:

# rename container with the name foo to bar
docker rename foo bar

Ref:

Add zsh completion for docker command
#

Adding subcommand and option completion for docker command would be very helpful. Here is how to do it with the help of zinit.

# use docker completion script provided by Oh-my-zsh: https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/docker
zinit ice as"completion"
zinit snippet OMZ::plugins/docker/_docker

autoload -Uz compinit  && compinit -i

Related

Install pyav inside Ubuntu Docker
··491 words·3 mins
Install Python3 in Ubuntu Docker
·176 words·1 min
Docker 学习系列 --- 2
··406 words·2 mins