docker info: 显示docker基本信息, 可以用来检查安装是否正确.docker pull [options] [<域名/ip>[:端口号]]<imageName>[:tag]: 拉取镜像到本地. tag是版本.默认最新版docker images [options] [repository[:tag]]: 查看本地镜像docker ps: 查看容器状态docker rm <contaienrId>: 删除特定containerdocker rm $(docker ps -a -q -f status=exited): 删除所有已经退出了的containerdocker rmi <imageName>: 删除指定镜像docker run -d -P --name static-site prakhar1989/static-site: -d表示detach终端, -P将容器监听的所有端口映射到主机的随机端口. --name给容器设置名字docker port <containerName>: 显示容器端口到主机端口对应关系docker run -p <hostPort>:<containerPort> prakhar1989/static-site: 启动容器, 将containerPort映射到主机hostPortdocker stop <containerId>: 结束一个detach状态的容器docker build -f Dockerfile -t <username>/<imageName> .: 根据指定目录的Dockerfile创建镜像, -t指定tag, username是hub.docker.com用户名. imageName是镜像名..指定build的上下文. -f指定配置文件docker login: 登录docker push <username>/<imageName>: 将本地镜像推送到仓库docker start -ai <containerName>: 启动一个已有的容器docker tag <imageName> username/repository:tagdocker swarm init: 初始化并将本机启动为swarm模式. 成为swarm managerdocker swarm join: 节点通过这个命令加入到swarm成为workerdocker swarm leave --force: 强制当前节点脱离当前swarm以worker身份加入swarm, 其中token, ip, port根据具体swarm进行替换
docker swarm join \
--token <token> \
<ip>:<port>
docker stack deploy -c docker-compose.yml <APPName>: 根据docker-compose.yml启动一个名为APPName的服务docker stack ps <APPName>: 查看启动的AppName服务状态docker stack rm <APPName>: 关闭APPName服务
service docker start:启动docker守护进程service docker stop:关闭docker守护进程service docker restart:重启docker守护进程docker pull [选项] [Docker Registry地址]<仓库名>[:标签]
具体选项通过docker pull --help查看
[用户名/]<软件名>, 对于Docker Hub如果不给出用户名, 默认为library, 也就是官方镜像如docker pull ubuntu:14.04
docker run -it --rm ubuntu:14.04 bash
-i: 交互式操作-t: 终端--rm: 容器退出后将其删除docker run -d -p 80:80 --name webserver nginx镜像有两种类型
Dockerfile包含docker客户端在创建镜像时需要执行的命令. 这些命令基本上和对应的Linux命令一致.
FROM指定镜像的base image:
FROM python:3-onbuild
接下来通常是编写命令复制文件并安装依赖. 通常onbuild版本镜像会自动执行这些操作.
下一步指定我们需要对外暴露的端口:
EXPOSE 5000
最后一步是编写运行程序的命令, 如python ./app.py. CMD命令告诉容器启动之后执行那个命令.
CMD ["python", "./app.py"]
编写好Dockerfile之后执行docker build根据文件指令创建镜像
mac下docker依次选择: Preference -> Advanced, 添加Registry mirrors
然后添加加速镜像地址

"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
通过使用docker容器, 在新版nginx发布时我们只需要替换整个容器就可以完成升级. 我们只需要维护nginx配置文件和内容.
本文重点关注docker 容器下nginx的配置.
mkdir -p ~/docker-nginx/html
cd ~/docker-nignx/html
vim index.html
内容如下:
<html>
<head>
<title>Docker nginx Tutorial</title>
</head>
<body>
<div class="container">
<h1>Hello Digital Ocean</h1>
<p>This nginx page is brought to you by Docker and Digital Ocean</p>
</div>
</body>
</html>
链接本机目录到容器. 就可以在容器内直接访问本机对应目录. 这样只需要更新本机文件即可实现同步更新.
nginx容器默认在/usr/share/nginx/html下查找首页.
docker run --name docker-nginx -p 80:80 -d -v ~/docker-nignx/html:/usr/share/nginx/html nginx
与-p一样. -v将指定容器目录映射到本机目录
此时访问首页.显示的就是刚才新建的文件.
现在新建about.html也可以立即从浏览器访问到
docker可以方便扩容,负载均衡
镜像推送到托管镜像仓库后.添加docker-compose.yml配置镜像运行参数:
version: "3"
services:
web:
image: qiudeqing/friendlyhello:latest
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "80:80"
networks:
- webnet
networks:
webnet:
主要功能如下:
web容器通过网络负载均衡工具webnet共享80端口webnet网络(负载均衡)docker swarm init
docker stack deploy -c docker-compose.yml <appName>
其中appName自己指定
Docker通过创建swarm集群实现多机.多容器扩容.
swarm是一组运行Docker并且加入了集群的机器. 机器加入集群之后运行的普通任务通过swarm manager机器进行管理, swarm manager可以添加worker到集群中. worker在集群中只是作为资源角色供manager调度, 本身不能执行授权和命令操作.
启动swarm模式的机器将成为swarm manager. 在上面操作的命令都会同步到swarm中所有机器.
可以通过集群中任意机器的ip访问服务. 负载均衡会自动在集群中选择机器提供服务, 所以即使访问固定ip也不用担心该机器超负荷工作.
为了保证负载均衡正常工作. 需要保证节点的以下端口可以使用:
设置好集群和配置文件之后. 日常维护只需要执行以下操作:
docker-compose.ymldocker stack deploy: 应用最新修改docker stack rm: 关闭应用docker swarm join: 节点以worker加入到集群docker stack deploy: 节点加入集群之后应用最新资源docker pull nginxmkdir -p ~/docker-nginx/html sudo docker run --name docker-nginx -p 80:80 -d -v /Users/songmengjiao/Desktop/project/crm/crm-fe-admin/dist:/usr/share/nginx/html nginx