常用命令
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: true
docker 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
表示执行权限