常用命令
docker image prune -f -a: 删除所有不使用的镜像docker container prune -f: 删除所有停止的容器docker ps: 列出所有运行的容器docker exec -it ${name} /bin/bash`: 进入正在运行的容器,其中 `${name}为容器名称docker compose down: 停止当前所有的运行的容器并删除容器docker compose up -d: 启动当前所有的容器, 其中-d表示后台运行; 这个命令可以只启动某个容器:docker compose up -d ${name}`: `${name}启动的容器名称docker compose stop ${name}: 停止指定的容器docker rmi ${name}`: 删除指定容器, `${name}待删除的容器名称; 通常需要重启指定容器的时候,需要执行: 7、8、6 的命令docker images: 列出所有的镜像docker network create ${name}`: 创建一个名为 `${name}的网络。通常再多个容器共用一个网络时, 例如: 多个compose文件里面的服务都需要连接同一个mysql时。通常还需要在compose配置文件中添加以下内容:version: '3.8' services: my_service: image: my_image networks: - shared_network networks: app-network: name: share-network external: truedocker network ls: 查看所有的网络列表docker build -t <image_name>:<tag> <path_to_dockerfile>:tag为可选;构建镜像,例如:docker build -t app .docker -it run ${name} bash: 运行容器并进入容器中exit: 退出容器
docker compose 项目部署流程
通常通过 docker 部署项目时流程如下:
- 拉取代码
git pull origin master:master - 停止之前的服务
docker compose down xx - 删除旧的服务镜像
docker rmi xx - 重新构建镜像
docker build -t xx . - 重启服务
docker compose up xx -d
以上流程中 xx 都是服务名称,整个一套流程比较多, 也比较繁琐,通常可以将此逻辑整理为脚本直接执行脚本, 例如在项目根目录(包含 Dockerfile 的目录)下新建 start.sh,然后将下面的代码复制进去:
#!/usr/bin/env bash
git pull origin master:master
docker compose down xx
docker rmi xx
docker build -t xx .
docker compose up xx -d
然后再每次需要部署的时候, 只需要执行 ./start.sh 就行了。
如果是第一次执行
sh文件可能会报权限不足, 这个时候添加chmod u+x start.sh来赋予权限
上面赋予权限的命令中u表示所有者,+表示添加权限,x表示执行权限