Docker命令全解 镜像操作 - `docker search`: 搜索Docker Hub上的镜像。 $ docker search nginx - `docker pull`: 从Docker Hub拉取指定镜像和版本。 ```bash $ docker pull nginx:latest ``` - `docker push`: 将本地镜像推送到Docker Hub或其他仓库。 $ docker push repo1:v1.0 - `docker images`: 查看本地所有镜像。 $ docker images - `docker rmi`: 删除一个或多个镜像。 $ docker rmi mynginx:1.0 mynginx:2.0 - `docker image prune`: 删除未标记或未使用的镜像。 $ docker image prune - `docker tag`: 给镜像添加新的标签。 $ docker tag mynginx:1.0 nginx1 - `docker save`: 将镜像保存为.tar文件。 $ docker save mynginx:1.0 > mynginx_v1.tar - `docker load`: 从.tar文件中载入镜像。 $ docker load -i mynginx_v1.tar - `docker commit`: 根据容器创建新的镜像。 $ docker commit [CONTAINER] [new_image_name]
容器操作 - `docker create`: 创建一个新的容器。 $ docker create --name mynginx_1 -it -p 8080:80 mynginx:1.0 - `docker start`: 启动一个已创建的容器。 $ docker start mynginx_1 - `docker run`: 创建并启动一个新的容器。 $ docker run --name mynginx_1 -it -p 8080:80 mynginx:1.0 - `docker ps`: 查看正在运行的容器。 $ docker ps - `docker ps -a`: 查看所有容器,包括停止运行的。 $ docker ps -a - `docker stop`: 停止一个正在运行的容器。 $ docker stop mynginx_1 - `docker restart`: 重启一个容器。 $ docker restart mynginx_1 - `docker rm`: 删除一个容器。 $ docker rm mynginx_1 - `docker container prune`: 删除已停止运行的所有容器。 $ docker container prune - `docker cp`: 从容器复制文件到宿主机,或从宿主机复制文件到容器。 $ docker cp myweb_1:/index.html index.html - `docker exec`: 在运行的容器中执行命令。 $ docker exec -it mynginx_1 /bin/bash - `docker port`: 查看容器端口映射。 $ docker port mynginx_1 - `docker diff`: 查看容器内已修改的文件。 $ docker diff mynginx_1 - `docker logs`: 查看容器日志。 $ docker logs web - `docker top`: 查看容器内运行的进程。 $ docker top web - `docker inspect`: 查看容器或镜像的底层信息。 $ docker inspect web - `docker stats`: 查看运行容器的统计数据。 $ docker stats
网络操作 - `docker network`: 管理Docker的网络设置。 $ docker network create mynet $ docker network connect mynet mycontainer - `docker network rm`: 删除一个网络。 $ docker network rm mynet Dockerfile编写实例 Dockerfile是一个文本文件,包含了一系列命令,用于定义如何构建一个新的Docker镜像。以下是一个简单的Dockerfile示例,用于部署一个Python Web应用: ```Dockerfile # 使用官方Python 3.8.3版本的Alpine Linux作为基础镜像 FROM python:3.8.3-alpine # 设置工作目录 WORKDIR /usr/src/app # 设置环境变量,确保Python输出直接打印到控制台,不会被缓存 ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 # 复制当前目录下的所有文件到工作目录下 COPY . . # 使用Alpine Linux的包管理器安装PostgreSQL的依赖 RUN apk update && \ apk add postgresql-dev gcc python3-dev musl-dev # 复制entrypoint.sh到工作目录 COPY ./entrypoint.sh . # 设置容器启动时执行的命令,这里的entrypoint.sh脚本会启动Web应用 ENTRYPOINT ["/usr/src/app/entrypoint.sh"] ``` 在这个Dockerfile中,我们使用了`FROM`指令来指定基础镜像,`WORKDIR`来设置工作目录,`COPY`来复制文件,`RUN`来执行命令,`ENV`来设置环境变量,以及`ENTRYPOINT`来指定容器启动时执行的命令。 请注意,这只是一个示例,实际的Dockerfile可能会根据您的具体需求有所不同。您可以根据需要添加更多的指令,如`EXPOSE`来暴露端口,`VOLUME`来创建数据卷等。