Docker命令
下载镜像
命令 | 命令 | 示例 |
---|---|---|
docker search 镜像名 | 检索镜像 | docker search nginx |
docker pull 镜像名 | 下载镜像 | docker pull nginx |
docker images / docker image ls | 查看镜像列表 | / |
docker rmi 镜像名/IMAGE ID | 删除指定镜像 | docker rmi nginx / docker rmi e784f4560448 |
镜像名:
标签:版本
(不写版本默认最新)
启动容器
命令 | 命令 | 示例 |
---|---|---|
docker run 镜像名 | 运行一个新容器 | docker run nginx |
docker ps [-a] | 查看/查看所有 容器 | / |
docker stop 容器名/容器ID | 停止指定容器 | docker stop keen_blackwell |
docker start 容器名/容器ID | 启动指定容器 | docker start 592 |
docker restart 容器名/容器ID | 重启指定容器 | docker restart 592 |
docker stats 容器名/容器ID | 查看容器资源占用情况 | docker stats 592 |
docker logs 容器名/容器ID | 查看容器日志 | docker logs 592 |
docker exec -it 容器名/容器ID /bin/bash | 以交互模式进入容器内部 | docker exec -it mynginx /bin/bash |
docker rm [-f] 容器名/容器ID | (强制)删除指定容器 | docker rm [-f] 592 |
容器ID可不写全,只要能做到唯一确定即可。
[参数]:可写参数
参数详解
参数项 | 定义 | 举例 |
---|---|---|
CONTAINER ID | 容器ID(唯一) | eef32e954a0f |
COMMAND | 使用的镜像名 | nginx |
CREATED | 当前容器的启动命令 | “/docker-entrypoint.…” |
STATUS | 启动时间 | 21 seconds ago |
PORTS | 启动状态(UP:启动;Exited (0):停止) | Up 20 seconds |
NAMES | 占用端口号 | 80/tcp |
IMAGE | 应用容器名(随机) | boring_murdock |
命令详解
docker run [参数] 镜像名
常用参数:
-d
:后台启动;--name
:自定义容器名;-p
:端口映射,例如:-p 88:80
,其中88为外部端口,80为内部端口;-v
:目录挂载,例如:-v /app/nghtml:/usr/share/nginx/html
,其中冒号前为外部地址,后为内部地址;-e
:设置环境变量--network
:指定网络
如果想使用更多或查看可添加的参数,可以在命令结尾处添加
--help
调出命令文档,
例如,使用docker run --help
即可调出docker run的详细语法和参数
保存镜像
命令 | 作用 | 示例 |
---|---|---|
docker commit -m "描述信息" 容器名/容器ID 新镜像名 | 提交容器变化打成一个新的镜像 | docker commit -m “update index.html” mynginx mynginx:v1.0 |
docker save -o 文件名.tar 镜像名 | 保存镜像为指定文件 | docker save -o mynginx.tar mynginx:v1.0 |
docker load -i 指定tar包名 | 加载镜像 | docker load -i mynginx.tar |
分享社区
命令 | 作用 | 示例 |
---|---|---|
docker login | 登录 docker hub | / |
docker tag 原镜像名 新镜像名 | 重新给镜像打标签 | docker tag mynginx:v1.0 leifengyang/mynginx:v1.0 |
docker push 镜像名 | 推送镜像 | docker push leifengyang/mynginx:v1.0 |
$(docker命令):动态调用命令。
Docker存储
两种方式,注意区分:
- 目录挂载:
-v /app/nghtml:/usr/share/nginx/html
- 卷映射:
-v ngconf:/etc/nginx
示例代码:
docker run -d -p 99:80 \
-v /app/nghtml:/usr/share/nginx/html \
-v ngconf:/etc/nginx \
--name app03 \
nginx
卷映射:-v ngconf:/etc/nginx,其中初始化以内部文件为准,且里外都可以修改
卷存储位置:/var/lib/docker/volumes/
docker volume 卷操作
docker volume 1s 列出所有卷
Docker网络
创建自定义网络,实现主机名作为稳定域名访问。
命令 | 作用 | 示例 |
---|---|---|
docker network create 网络名 | 自定义网络 | docker network create mynet |
docker run --network 自定义网络名 镜像名 | 运行容器并使该容器加入指定网络 | docker run --network mynet nginx |
docker为每个容器分配唯一ip,使用容器ip+容器端口可以互相访问
ip由于各种原因可能会变化
Docker Compose
在日常使用中,我们往往不止会启用一个镜像,如果每次都需要手动去依次开启镜像,明显效率低下。
使用Compose,可以通过YAML文件来配置应用程序的服务,然后使用单个命令即可创建并启动所有服务。
常用命令:
命令 | 作用 | 示例 |
---|---|---|
docker compose -f 指定compose文件名.yaml up -d | 后台启动指定 compose.yaml 文件 | docker compose -f compose.yaml up -d |
docker compose -f 指定compose文件名.yaml down | 关闭指定 compose.yaml 文件 | docker compose -f compose.yaml down |
具体语法详见官方参考:https://docs.docker.com/compose/compose-file/
示例:
name: myblog
services:
mysql:
container_name: mysql
image: mysql:8.0
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=wordpress
volumes:
- mysql-data:/var/lib/mysql
- /app/myconf:/etc/mysql/conf.d
restart: always
networks:
- blog
wordpress:
image: wordpress
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: 123456
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress:/var/www/html
restart: always
networks:
- blog
depends_on:
- mysql
volumes:
mysql-data:
wordpress:
networks:
blog:
特性:
- 增量更新
- 修改 Docker Compose 文件。重新启动应用。只会触发修改项的重新启动。
- 数据不删
- 默认就算down了容器,所有挂载的卷不会被移除。比较安全
Dockerfile
官方文档:https://docs.docker.com/reference/dockerfile/
常见指令 | 作用 |
---|---|
FROM | 指定镜像基础环境 |
RUN | 运行自定义命令 |
CMD | 容器启动命令或参数 |
LABEL | 自定义标签 |
EXPOSE | 指定暴露端口 |
ENV | 环境变量 |
ADD | 添加文件到镜像 |
COPY | 复制文件到镜像 |
ENTRYPOINT | 容器固定启动命令 |
VOLUME | 数据卷 |
USER | 指定用户和用户组 |
WORKDIR | 指定默认工作目录 |
ARG | 指定构建参数 |
推荐资料:
- Docker - 快速通关 (3h) (yuque.com)