Skip to content

Instantly share code, notes, and snippets.

@tpai
Last active April 28, 2017 08:34
Show Gist options
  • Save tpai/b80acc62d7694a9b1c1c to your computer and use it in GitHub Desktop.
Save tpai/b80acc62d7694a9b1c1c to your computer and use it in GitHub Desktop.
My docker note for building private game server

Docker Installation

Mac

https://docs.docker.com/docker-for-mac/

Windows

https://docs.docker.com/docker-for-windows/

Ubuntu

https://docs.docker.com/engine/installation/ubuntulinux

// check version
lsb_release -a
uname -r

AWS

http://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html#install_docker

Docker Machine Installation

https://docs.docker.com/machine/install-machine/#installing-machine-directly

curl -L https://github.com/docker/machine/releases/download/v0.5.6/docker-machine_linux-amd64 >/usr/local/bin/docker-machine && \
chmod +x /usr/local/bin/docker-machine

Install Virtualbox Driver

apt-get purge "^virtualbox-.*"
apt-get autoremove | apt-get autoclean | apt-get clean

/etc/apt/sources.list.d/oracle-vbox.list

deb http://download.virtualbox.org/virtualbox/debian vivid contrib  

Download public key

wget -q -O - https://www.virtualbox.org/download/oracle_vbox.asc | sudo apt-key add -  

Install Virtualbox 5

apt-get update
apt-get install dkms virtualbox-5.0

Ref: VirtualBox 5.0 installation

Create Docker Machine

docker-machine create --driver virtualbox --virtualbox-cpu-count=4 --virtualbox-memory=4096 --engine-insecure-registry [domain:port] [name]

Ref:

Update v1.13: https://lostechies.com/gabrielschenker/2016/12/12/containers-cleanup-your-house-revisited/

Machines

# machine list
$ docker-machine ls

# machine config
$ docker-machine inspect [name]

# active machine
$ eval "$(docker-machine env [name])"

Images

# image list
$ docker images

# build image
$ docker build -t author/repo path/to/dockerfile

# remove image
$ docker rmi [id|name]

# remove <none> images
$ docker rmi -f $(docker images | grep "<none>" | awk "{print \$3}")

Containers

# container list
$ docker ps -a

# restart container
$ docker restart [id]

# run container and bind to specific port
$ docker run -p [port]:[expose] author/repo

# run container and open command line
$ docker run --rm -it [id|name] bash

# remove container
$ docker rm -f [id|name]

# remove all containers
$ docker rm $(docker ps -aq)

# remove all Exited containers
$ docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs sudo docker rm

# ssh into running container
$ docker exec -it [id|name] bash

Build phpMyAdmin

$ docker run --name myadmin -d -e PMA_HOSTS=192.168.x.x,192.168.o.o -e PMA_PORT=3306 -p 8080:80 phpmyadmin/phpmyadmin

Port Forwarding From VM To Local

$ VBoxManage controlvm [docker-machine-name] natpf1 "tcp-port25565,tcp,,25565,,25565"; 

Ref: boot2docker-docker-django-on-mac-os-x

Modify my.cnf for importing large sql dump file.

Dockerfile

FROM mariadb:10

WORKDIR /etc/mysql

ENV TERM dumb
ENV MYSQL_DATABASE mysql
ENV MYSQL_ROOT_PASSWORD password

RUN sed 's/max_allowed_packet[^;]*/max_allowed_packet = 128M/g' my.cnf > custom.cnf; \
cat custom.cnf > my.cnf

RUN sed 's/connect_timeout[^;]*/connect_timeout = 50/g' my.cnf > custom.cnf; \
cat custom.cnf > my.cnf

RUN sed 's/wait_timeout[^;]*/wait_timeout = 600/g' my.cnf > custom.cnf; \
cat custom.cnf > my.cnf

Dockerfile

FROM debian:wheezy
MAINTAINER Tony Pai <[email protected]>

RUN apt-get -y update
RUN apt-get -y install libpcre3 libpcre3-dev openssl libssl-dev wget

WORKDIR /data
VOLUME /data

# Setup ngx openresty
RUN wget https://openresty.org/download/ngx_openresty-1.9.7.1.tar.gz
RUN tar -xvzf /data/ngx_openresty-1.9.7.1.tar.gz
RUN /data/ngx_openresty-1.9.7.1/configure --prefix=/usr/share --user=root --group=root --with-http_stub_status_module --with-luajit
RUN make && make install

# Install verynginx
COPY VeryNginx /usr/share/nginx/html/verynginx
COPY nginx.conf /usr/share/nginx/conf/nginx.conf
RUN chown -R root:root /usr/share/nginx

EXPOSE 80

# Start nginx server
CMD /usr/share/nginx/sbin/nginx

Ref:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment