Docker Commands

docker search image-name
docker pull image-name:version
docker images
docker run image-name:version
Docker run -d image-name:version
Docker run -d -p6000:6327 image-name:version
docker run -d -p60001:6379 –name redid-older redis:4.0
docker run -id –privileged=true -p 13012:3012 -p 13001:3001 -v f:\workspace:/home/host_workspace –name my_centos mycentos:0.01
docker run -id -p 13012:3012 -p 13001:3001 -v f:\workspace:/home/host_workspace –name my_centos mycentos:0.01 /usr/sbin/init
docker run -d -p 27018:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_PASSWORD=password –name mongodb –net mongo-network mongo
-i Keep STDIN open even if not attached
-d Run container in background and print container ID
–privileged Give extended privileges to this container
-p Publish a container’s port(s) to the host
-v Bind mount a volume
–name Assign a name to the container

docker exec -it container-id /bin/bash

Docker start container-id
Docker stop container-id #停止後,容器狀態會保持
Docker ps
Docker ps -a

Docker logs container-id
Docker logs container-id | tail
Docker logs container-id -f

docker commit c3f279d17e0a svendowideit/testimage:version3
Docker network ls
Docker network create mongo-network

Docker logs container-id
Docker logs container-id | tail
Docker logs container-id -f

Docker compose
Docker-compose -f mongo.yaml up
Docker-compose -f mongo.yaml down
mongo.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: '3'
services:
mongodb:
image: mongo
ports:
- 27018:27017
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=password
mongo-express:
image: mongo-express
ports:
- 8080:8081
environment:
- ME_CONFIG_MONGODB_ADMINUSERNAME=admin
- ME_CONFIG_MONGODB_ADMINPASSWORD=password
- ME_CONFIG_MONGODB_SERVER=mongodb

Docker-compose -f docker-compose.yaml up //image创建成功后,就可以使用Docker-compose来批量的启动服务
Docker-compose -f docker-compose.yaml down //如果需要修改image,那么先使用docker-compose来down所有的服务

Dockerfile

1
2
3
4
5
6
7
FROM node:13-alpine
ENV MONGO_DB_USERNAME=admin \
MONGO_DB_PWD=password
RUN mkdir -p /home/app
COPY ./app /home/app
WORKDIR /home/app
CMD ["node","server.js"]

RUN 和 CMD的区别:CMD仅运行docker的继承线最后一个,被继承的Dockerfile中的CMD不会被运行。RUN无论处于被继承的image中还是最后的image中,都会被执行。

Docker build -t my-app:1.0 .
Docker rmi my-app:1.0 //删除之前docker build的image

Docker Volumes
3 Volume types:
Host volume: Docker run -v /home/mount/data:/var/libe/mysql/data
Anonymous Voulume: Docker run -v /var/lib/mysql/data
Named volumes: docker run -v name:/var/lib/mysql/data

windows環境下,配置docker容器代理:
~/.docker/config.json

1
2
3
4
5
6
7
8
9
10
11
{
"proxies":
{
"default":
{
"httpProxy": "http://192.168.1.12:3128",
"httpsProxy": "http://192.168.1.12:3128",
"noProxy": "*.test.example.com,.example2.com,127.0.0.0/8"
}
}
}

https://docs.docker.com/network/proxy/