Docker
启动/停止Docker服务
启动:systemctl start docker
停止:systemctl stop docker
查看状态:systemctl status docker
设置开机自启:systemctl enable docker
查看版本与信息
版本信息:docker version
系统信息(包括容器和镜像统计):docker info
帮助文档
查看所有命令帮助:docker --help
查看特定命令帮助(如run):docker run --help
镜像管理
查看本地镜像:docker images [OPTIONS]
(例如:docker images -a
显示所有镜像,包括未使用的)。
拉取镜像:docker pull [仓库名]:[标签]
(默认拉取latest版本)。
删除镜像:docker rmi -f [镜像ID/名称]
删除所有未使用的镜像:docker rmi -f $(docker images -aq)
构建镜像:docker build -t [标签] [路径]
(例如:docker build -t myapp:1.0 .
)。
保存为tar包镜像:docker save -o [文件名] [镜像名]
从tar包加载镜像:docker load -i [文件名]
容器操作
创建并后台运行容器:docker run -d --name [容器名] -p [宿主机端口]:[容器端口] [镜像名]
docker run -d --name web -p 80:80 nginx
查看正在运行的容器:docker ps
所有容器(含停止的):docker ps -a
启动已停止的容器:docker start [容器ID/名称]
停止运行的容器:docker stop [容器ID/名称]
重启容器:docker restart [容器ID/名称]
强制删除正在运行的容器:docker rm -f [容器ID/名称]
删除所有停止的容器:docker rm $(docker ps -a -q)
进入容器内部:docker exec -it [容器ID/名称] /bin/bash
docker exec -it web /bin/bash
网络配置
列出所有网络:docker network ls
或 docker network ls --format "{{.Name}}"
(显示网络名称)。
创建自定义网络: docker network create --driver bridge [网络名]
docker network create mynet
将容器加入自定义网络: docker run --name [容器名] --network=[网络名] [镜像名]
docker run --name web --network=mynet nginx
docker-compose
运行 docker-compose up
运行并挂起 docker-compose up -d
停止 docker-compose down
删除:先删除container(images运行时的的状态) 可以使用命令docker ps来查看正在运行的container,对于已经退出的container,则可以使用docker ps -a来查看
docker ps -a
docker rm 117843ade696
docker images
docker rmi 117843ade696
更新镜像:docker-compose up -d
Yaml 配置
version: '3'
services:
服务名称:
image: */*:latest
restart: no
container_name: 名字
volumes:
- ./yaml同级文件夹/:/data/
ports:
- "5799:80"
# environment: # 环境
# - WEBSOCKET_ENABLED=true
# privileged: true # root权限
# no 容器退出时,不自动重启容器。这是默认值
# on-failure[:max-retries] 当容器以非零状态码(正常退出时状态码为0)退出时,重新启动。max-retries为最大重试次数(可选),限制Docker守护程序尝试的重新启动重试次数。如不指定最大重试次数,默认为不断重试。
# always 无论退出状态如何,始终重新启动容器
# unless-stopped 无论退出状态如何,重新启动容器。如果容器在Docker守护程序停止之前已经处于停止状态,那么守护程序启动时,容器不会重新启动
# restart: unless-stopped
简单的Web应用和数据库服务组合
version: '3.8'
services:
web:
image: nginx
ports:
- "8080:80"
volumes:
- ./website:/usr/share/nginx/html
networks:
- app-network
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: appdb
volumes:
- db-data:/var/lib/mysql
networks:
- app-network
volumes:
db-data:
networks:
app-network:
driver: bridge
restart
- no 容器退出时,不自动重启容器。这是默认值
- on-failure[:max-retries] 当容器以非零状态码(正常退出时状态码为0)退出时,重新启动。max-retries为最大重试次数(可选),限制Docker守护程序尝试的重新启动重试次数。如不指定最大重试次数,默认为不断重试。 on-failure:3,在容器非正常退出时重启容器,最多重启3次
- always 无论退出状态如何,始终重新启动容器
- unless-stopped 无论退出状态如何,重新启动容器。如果容器在Docker守护程序停止之前已经处于停止状态,那么守护程序启动时,容器不会重新启动
Dockerfile
FROM basse镜像
MAINTAINER 镜像作者
COPY 复制当前目录文件到镜像
COPY src dest
COPY ["src","dest"]
ADD 一样,复制并自动解压(tar,zip,tgz,xz)
EXPOSE 监听端口
WORKDIR 设置工作目录
VOLUME 存储
RUN 在容器中运行的命令
CMD 容器启动时的命令