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.
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
- 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
- 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
- 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
- How to run binary
./controller -LogOutput /var/log/canal/controller.log -SelfStoreEndpoint ${IP}:4003 &
- 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
- 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
- kubernetes run