Docker Container - hqzhang/cloudtestbed GitHub Wiki

Before I use virtual machine to delivery our applications and development environment, Right now I can use lightweight virtual machine: docker container to do the same things.

How to write Dockerfile

FROM golang

ARG A_VARIABLE.            # docker build --build-arg A_VARIABLE=somevalue
ENV an_env_var=$A_VARIABLE # docker run --env an_env_var=othervalue

WORKDIR /app #like cd 
USER root.         #like su switch user
RUN go version     #Debug purpose
RUN go env         #Debug purpose
COPY ./main.go .
ADD ./ngin.conf .  #like copy but can unzip
RUN ls -al.        #Debug purpose
RUN go build -o main main.go 
RUN ls -al.        #Debug purpose
VOLUME  vol1 # not suggust
RUN ls -al /app    #Debug purpose
RUN ./main         #Debug purpose
ONBUILD COPY ./src  . # just execute when use it as base image
EXPOSE 8080        #app listening
CMD [ "./mymain"]
CMD [ "./main"].  #Override above, cli can override it
ENTRYPOINT ["echo", "hello"] #can not be Overrided, cli just append it.
CMD ["hongqi"].   # append to ENTRYPOINT


DOCKER_BUILDKIT=0 docker build .
0. Mac remotely
   socat -d TCP-LISTEN:2376,range=127.0.0.1/32,reuseaddr,fork UNIX:/var/run/docker.sock
start: 
open /Applications/Docker.app
stop:
killall Docker
  1. Install Docker
  apt-get install apt-transport-https ca-certificates
  apt-key adv \
                --keyserver hkp://ha.pool.sks-keyservers.net:80 \
                --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
  echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | tee /etc/apt/sources.list.d/docker.list
  apt-cache policy docker-engine
  apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
  apt-get install -y docker-engine=1.10.3-0~trusty
  usermod -a -G docker vagrant
  1. Docker command
   1) docker run -it --name "mycontainer" ubuntu:latest   //run container as interactive
   2) docker run -dt --name "mycontainer" ubuntu:latest   //run container as background
   3) docker exec -it containerId bash                    //run command inside container
   4) docker ps -a                                        //check running status                
   5) docker network create -d bridge my-bridge-network   //create a network
   6) docker build -t name:tag -f dockerfile              //create docker image
   7) docker volume create my-vol                           //create a docker volume
   8) docker system info
   9) docker inspect contid
   10) docker service ls
   11) docker container ls
   12) docker checkpoint ls contid
   13) docker plugin ls
   14) docker deploy(run/create) option
       1)network
       2)volume
       3)portmap
       4)name
       5)image
       6)entryport
15e601838c9d        couchbase           "/entrypoint.sh co..."   3 weeks ago         Up 11 minutes       0.0.0.0:8091-8094->8091-8094/tcp, 11207/tcp, 11211/tcp, 0.0.0.0:11210->11210/tcp, 18091-18094/tcp   db
       
   15) Swarm command
  secret      Manage Docker secrets
  stack       Manage Docker stacks
  service     Manage services
  swarm       Manage Swarm
  node        Manage Swarm nodes
  1. How to create image from dockerfile
cat <<EOF >> dockerfile
FROM ubuntu:14.04
MAINTAINER Hongqi Zhang <[email protected]>
RUN apt-get update 
RUN ln -sf /dev/stdout /var/log/upstart/controller
COPY opt/cni/bin/cni  /opt/cni/bin/
COPY opt/cni/bin/loopback   /opt/cni/bin/
RUN chmod a+x /opt/bin/controller
RUN chmod a+x /opt/bin/etcd
RUN touch /var/log/controller.log
EOF
docker build -t controller -f dockerfile 
  1. How to run binary
  ./controller  -LogOutput /var/log/canal/controller.log -SelfStoreEndpoint ${IP}:4003  &
  1. Docker run
docker run --name controller -d -t \
          -v /etc/cni/net.d/:/etc/cni/net.d/           \
          controller \
          /opt/bin/canal-controller \
          -SelfStoreEndpoint ${IP}:4003 
  1. Docker compose up:
cat <<EOF >> docker-compose.yml
version: '2'
services:
  controller:
    image: controller
    links:
      - etcd
    command: 
      - /opt/bin/controller 
      - -SelfStoreEndpoint 
      - ${IP}:4003 
    volumes:
      - /etc/cni/net.d/:/etc/cni/net.d/
EOF
docker-compose up  
  1. kubernetes run
⚠️ **GitHub.com Fallback** ⚠️