一、在运维及项目开发中,标准的Docker使用姿态是先建立Dockerfile,然后build这个Dockerfile生成image。之后就可以运行image。生成的image储存在本地docker仓库(Registry)。
二、Dockerfile的构建:
- FROM:指定image的基础容器。
- WORKDIR:添加容器内的用户工作目录。
- ADD:建立本地和容器工作目录的映射关系,例如:ADD . /app。
- RUN:容器内运行命令。
- EXPOSE:容器内的开放端口。
- ENV:设置容器内的环境变量。
- CMD:运行有参数的命令,例如:CMD [“python”, “app.py”]。
三、Dockerfile编译成image:docker build -t friendlyhello .(-t为指定tag),然后使用docker images查看所有image。
四、容器的运行(docker run [OPTIONS] IMAGE [COMMAND] [ARG …]):
- docker run -p 4000:80 friendlyhello(-p建立外部和容器的端口映射关系)。
- docker run -it friendlyhello /bin/bash(-i交互模式,-t建立伪终端,/bin/bash为[COMMAND])。
五、Docker镜像的常用命令:
- docker images:查看所有镜像。
- docker pull:从仓库里拖镜像。
- docker search:仓库里查找镜像。
- docker rmi:删除镜像。
- docker rmi $(docker images -q):删除所有镜像。
- docker inspect 镜像名称:查看镜像情况。
六、Docker容器的常用命令:
- docker run:运行docker镜像。同一个选项可以使用多次,例如:-v path1:path1 -v path2:path2。
- docker ps:查看正在运行的容器。
- docker stop:停止容器。
- docker log:查看容器内部的标准输出。
- docker [COMMAND] --help:首选的查看帮助文档的命令。
- docker top:查看容器内部的进程列表。
- docker rm:删除容器。
- docker rm $(docker ps -a -q):删除所有容器。
- docker exec:执行容器内的命令。
- 进入一个已经在运行的容器:sudo docker exec -it ******** /bin/bash。
- docker inspect 容器id:查看容器情况。
- docker inspect --format=’{{.Name}} -
{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ $(docker ps -q):查看所有容器IP地址。
七、使用docker-compose批处理组合管理多个容器。构建docker-compose.yml,配置组合服务,每个服务的选项对应docker run命令的选项。
八、使用docker swarm和docker stack构建集群。
九、举例:建立一个mongodb的docker环境:docker run -it --rm mongo /bin/sh。
十、Windows机器启动docker:
- docker-machine create default,创建一个docker machine。
- docker-machine start default,然后就可以使用docker。
- cygwin终端融入docker管理:eval $(docker-machine.exe env)。
- 通过docker machine的IP地址访问容器暴露的服务。
- 在cygwin下报错:If you are using mintty, try prefixing the command with ‘winpty’。解决方法:到Docker Quickstart Terminal下执行docker run。
- docker-machine ssh可以进入default虚机。
- boot2docker用户和密码:docker/tcuser,可以通过sudo -i (docker用户下执行)切换到root。
- virtualbox共享目录必须安装增强版插件。
- 无法运行entrypoint.sh:pycharm中更改换行模式为LF(UNIX类型的换行)。
十一、Docker-compose的使用:
- docker-compose down:停止并删除所有容器。
- docker-compose build:编译镜像。
- docker-compose up -d:后台启动所有容器。
十二、Docker Hub加速器(Windows/Mac Docker Toolbox)
- docker-machine create --engine-registry-mirror=https://******.mirror.aliyuncs.com -d virtualbox default eval “$(docker-machine env default)”
十三、Docker Hub加速器(CentOS/Ubuntu Docker Toolbox)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://******.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
十四、Docker实例
- docker run -d --name es -p 9200:9200 -p 9300:9300 -e “discovery.type=single-node” elasticsearch:7.4.1