安装:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
- docker images:显示镜像列表
-a 显示所以镜像
-q 只显示id
- docker search -f 镜像名称:搜索镜像
- docker rmi 镜像id:删除镜像
docker rmi -f $(docker images -aq) 删除所有镜像
- docker pull 镜像名称[:tag]:下载镜像
- docker run image:启动容器
--name="name" 容器名字
-d 后台运行
-it 使用交互方式,进入容器查看内容
-p 指定端口
-p 主机端口:容器端口 端口映射
-P 随机指定端口
-v 本地目录:容器目录 指定数据卷(数据同步)
-e 环境配置
--net 指定使用的网络
--restart=always 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
docker run -it 容器名称 /bin/bash :启动并进入容器
列子:docker run -d --name nginx01 -p 8081:80 nginx
- docker ps:显示运行中的容器
-a #显示所有包括已经停止的容器
- exit:退出容器
exit 容器停止并退出
ctrl+p ctrl+q 容器不停止并退出
- docker rm 容器id:删除容器
-f 强制删除
docker rm -f $(docker ps -aq) 删除所有容器
- 启动和停止
docker start 容器id 启动容器
docker restart 容器id 重启容器
docker stop 容器id 停止容器
docker kill 容器id 强制停止容器
- 后台启动容器
docker run -d 镜像名称: #没有前台应用,会自动停止
- docker logs:查看日志
-tf #显示全部和时间戳
--tail 条数 #显示指定数量
- docker top:查看进程
- docker inspect 容器id:查看容器信息
- 进入容器
docker exec -it 容器id /bin/bash #进入容器后开启新的终端
docker attach 容器id /bin/bash #进入容器当前终端
- 拷贝文件
docker cp 容器id:容器路径 目的主机路径 #容器内文件拷贝到主机
- docker stats :查看cpu状态
- docker commit:提交镜像成为一个新的副本
docker commit -m="提交的描述" -a="作者" 容器id 目标镜像名[:tag]
- 数据卷
docker run -it -v 本地目录:容器目录
匿名挂载:-v 容器目录
具名挂载:-v 卷名:容器目录
指定路径挂载:-v 本地目录:容器目录
不指定本地目录,本地目录默认为:/var/lib/docker/volumes/xxx/_data
docker volume ls #查看数据卷
-v 容器目录:ro|rw ro:只读,rw:读写
- dockerfile:通过脚本生成镜像
1. 命令
FROM #基础镜像
MAINTAINER #镜像作者
RUN #镜像构建时需要运行的命令
ADD #添加内容,会自动解压
WORKDIR #镜像工作的目录
VOLUME #挂载的目录,["主机目录:容器目录"]
EXPOSE #配置端口映射信息
CMD #指定容器启动时运行的命令,只有最后一个生效,可被替代
ENTRYPOINT #指定容器启动时运行的命令,可追加命令
ONBUILD #当构建一个被继承dockerfile时运行的指令
COPY #类似ADD,将文件拷贝到镜像中
ENV #构建时设置环境变量
2. 构建
docker build -f dockerfile文件路径 -t 镜像名[:tag] .
- docker history 镜像id :查看镜像构建过程
- 发布镜像
docker login -u 用户名 #登录dockerhub
docker push 镜像名称:tag #推送镜像
docker tag 镜像id 镜像名称:tag #设置镜像版本号
- 网络
docker network ls #查看所有网络
docker network rm 网络名称 #删除网络
docker network connect 网络名称 容器名称 #将网络和容器联通
- docker network create 创建网络
--driver #网络连接方式,默认bridge
--subnet #子网地址,192.168.0.0/16
--gateway #网关,192.168.0.1
docker network create --driver bridge --subnet 192.168.0.0/16 名称 #--gateway 192.168.0.1
docker network create --driver overlay docker-net
- docker update 容器选项 容器id:更新容器
docker update --restart=always xxx
- Docker Compose
1. 安装
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2. 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
3.命令
docker-compose up -d #启动
--build #重新构建
docker-compose restart #重启
docker-compose down #停止
docker-compose build #构建
- docker-compose.yxml
version: "3.8"
services:
web:
build: .
depends_on: //配置服务依赖
- db
- redis
ports:
- "8080:80"
redis:
image: redis
db:
image: postgres
- docker swarm
docker swarm init --advertise-addr 192.168.99.107 #初始化docker swarm
docker swarm join-token manager #创建管理节点token
docker swarm join-token worker #创建工作节点的token
docker node ls #查看节点列表
- docker service
docker service create -p 8080:80 --name mynginx nginx #创建服务
--network=docker-net #指定网络,跨主机需要使用overlay网络
docker service update --replicas 数量 服务名 #增加服务副本数量
- systemctl restart docker 重启