- Currently the
dockercommand doesnt work withouthsudoinside the container- This is due to the fact that the
dockersocket is mounted into the Container- Workaround: set
alias docker="sudo docker"in your `.zshrc
- Workaround: set
- This is due to the fact that the
- My most critical tools in a docker container that i can run anywhere
I need to have my workstation or my most crucial Tools operational and didnt want to run into problems because some update on my laptop screwed something up.
So the basic concept of devcon comes from the devcontainer Project (hence the name) but on a more permanent basis.
I wanted to always be able to have a working environment that is consistent and reproducible. I also work in an environment that is highly controlled so im not able to freely install software on my workstation.
But what i have is a git client and a docker client.
I have this container running on my workstation and if i cant access my usual worksation i have this container running on my most important docker hosts.
So even if i dont have access to my workstation all i need is to be able to ssh into one of my docker hosts.
- I would recommend that you fork this repo, set i to private and use it as a base for your own image.
- You can then from time to time sync your fork with this repo to get updates.
- Beware of Merge Conflicts!
- Fork this Repo
- Clone your new repo
- Copy the
example.envto.env - Copy the
example.docker-compose.ymltodocker-compose.yml - Edit the
.envfile to your needs (especially important the username, password and hostname)- The
.gitignoreis configured to ignore.envfiles
- The
- Edit the
Dockerfileto your needs- It is based on the latest ubuntu LTS Image
- Why ubuntu?
- Because the package availablity is big
- LTS Release is important for stability (for me)
- Why ubuntu?
- It is based on the latest ubuntu LTS Image
- Build the image via the
build-image.shscript - Edit the
docker-compose.ymlto your needs - In my workflow i bind every folder under the
/workspace/directory- Makes it easier for me to not spread out my work
- Run
docker-compose up -dto start the container - Run
docker exec -it _container-name-from-your-compose-file_ zshto get a shell into the container- The container is configured to run
zshas the default shell and always restarts
- The container is configured to run
- Install your tools you want and live in the user directory
If you want to setup your Terminal Application to always use the container add the docker-exec command shown above as your Start command
- Update the
.envwith the new Name:Tag you want - Generate new image via
build-image.shScript, or pull the image from a registry - Stop the container
- Run
docker-compose up -dto start the container
- Backup your home directory volume
I have chosen to use a docker volume as the home directory of the user.
The reason is that many antivirus scanner dont like to have dumped thousands of tiny files into a directory.
I tried it in the beginning and the perfomance impact on my laptop was huge.
So i chose the docker volume approach. Given the fact that multiple Container can use the same volume this is a good approach for me.
That also means however that you have to install software that resides in the user directory manually once.
An example would be LazyVim or my .ssh config.
If you choose to use the .env file for your username and password declaration like i described above (in the First-time-setup ) you should be aware that you dont want to push that image to a public registry.
If you want your image to be public then you should set the ENV VAR USER_PASSWORD to something generic and later add the following to your docker-compose.yml in the command: section:
command: "passwd $USER_NAME your-personal-password-here"