2,225
edits
No edit summary |
|||
Line 8: | Line 8: | ||
=== Install === | === Install === | ||
==== | ==== Stable Version ==== | ||
On Debian-based systems Docker may be installed via Apt (taken from the [https://docs.docker.com/install/linux/docker-ce/ubuntu/ official documentation]): | On Debian-based systems Docker may be installed via Apt (taken from the [https://docs.docker.com/install/linux/docker-ce/ubuntu/ official documentation]): | ||
Line 49: | Line 49: | ||
* [https://hub.docker.com/editions/community/docker-ce-desktop-windows Windows] | * [https://hub.docker.com/editions/community/docker-ce-desktop-windows Windows] | ||
==== Running as Non-Root ==== | ==== Running as Non-Root (no sudo) ==== | ||
=== Create Containers === | === Create Containers === | ||
==== Basic Creation ==== | |||
These are my go-to recipes for daily container creation: | These are my go-to recipes for daily container creation: | ||
Line 76: | Line 78: | ||
docker create -ti -m 1G -c 1.5 --restart unless-stopped --rm -e MYENV=myenv ubuntu:18.04 | docker create -ti -m 1G -c 1.5 --restart unless-stopped --rm -e MYENV=myenv ubuntu:18.04 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== Container Information ==== | |||
Here's some commands on how to query info about containers | |||
<syntaxhighlight lang=bash> | |||
# List existing containers (started) | |||
docker ps | |||
# List existing containers (all) | |||
docker ps -a | |||
# Get container info (IP address, for example) | |||
docker inspect mycontainer | |||
</syntaxhighlight> | |||
=== Use Containers === | |||
==== Basic Usage ==== | |||
Very basic container usage: | |||
<syntaxhighlight lang=bash> | |||
# Start the container | |||
docker start mycontainer | |||
# Open a shell in the container | |||
docker exec -ti mycontainer bash | |||
# Stop the container | |||
docker stop mycontainer | |||
</syntaxhighlight> | |||
==== Common Initial Setups ==== | |||
Here's my goto recipe when creating a container from scratch. | |||
'''In the container''' | |||
<syntaxhighlight lang=bash> | |||
# Load up apt caches | |||
apt update | |||
# Install common packages | |||
apt install git build-essential autoconf Libtool autotools emacs vi | |||
</syntaxhighlight> | |||
You can also setup SSH for network access. | |||
'''In the container''' | |||
<syntaxhighlight lang=bash> | |||
# Install ssh server and sudo for your new user | |||
apt install sudo openssh-server | |||
# Create a new user (to avoid using root to access) | |||
adduser ridgerun | |||
# Give it root access | |||
adduser ridgerun sudo | |||
# Manually start ssh server (every time container is started) | |||
service ssh start | |||
# Exit the container | |||
exit | |||
</syntaxhighlight> | |||
==== Running Long Processes ==== | |||
Sometimes you need to keep a long running process on the container in a remote server, and disconnect from the server and go to sleep. Here's how to run a command and disconnect from the container without stopping the session. | |||
<syntaxhighlight lang=bash> | |||
# Option 1: detach at creation time | |||
docker exec -d -ti mycontainer /long_running_script.sh | |||
</syntaxhighlight> | |||
Alternatively: | |||
'''In the container''' | |||
<syntaxhighlight lang=bash> | |||
# Option 2: detach from the shell | |||
./long_running_script.sh | |||
# Now press ctrl+p ctrl+q to detach | |||
</syntaxhighlight> | |||
[[Category:docker]][[Category:tutorial]] | [[Category:docker]][[Category:tutorial]] |