Docker命令行的基本使用
docker命令行的规则基本遵循“docker + 管理的对象(比如容器,镜像) + 具体操作(比如创建,启动,停止,删除)”
# 查看docker版本
docker version
# 查看docker信息
docker info
# 查看container相关命令
docker container --help
# 查看image相关命令
docker image --help
Docker的image和container
- image镜像
- Docker image是一个
read-only
文件 - 这个文件包含文件系统,源码,库文件,依赖,工具等一些运行application所需要的文件
- 可以理解成一个模板
- docker image具有分层的概念
- Docker image是一个
- container容器
- 可以理解成一个运行中的
docker image
- 实质是复制image并在image最上层加上一层
read-write
的层 (称之为container layer
,容器层) - 基于同一个image可以创建多个container
- 可以理解成一个运行中的
创建第一个容器
执行这条命令即可创建一个nginx容器。该命令首先会去本地查找是否有本地的nginx镜像,如若没有则去仓库中拉取。
sudo docker container run -d -p 8088:80 --name web nginx
这条命令在执行后发生了什么?
- 在本地查找是否有nginx这个image镜像,但是没有发现
- 去远程的image registry查找nginx镜像(默认的registry是Docker Hub)
- 下载最新版本的nginx镜像 (nginx:latest 默认)
- 基于nginx镜像来创建一个新的容器,并且准备运行
- docker engine分配给这个容器一个虚拟IP地址
- 在宿主机上打开8080端口并把容器的80端口转发到宿主机上
- 启动容器,运行指定的命令(这里是一个shell脚本去启动nginx)
以下是容器常用命令:
操作 | 命令(全) |
容器的创建 | docker container run <image name> |
容器的列出(up) | docker container ls |
容器的列出(up和exit) | docker container ls -a |
容器的停止 | docker container stop <name or ID> <name or ID> |
容器的重启 | docker container start <name or ID> <name or ID> |
容器的删除 | docker container rm <name or ID> <name or ID> |
容器的批量停止 | docker container stop $(docker container ls -aq) |
容器的批量删除 | docker container rm $(docker container ls -aq) |
# 可以快速对系统进行清理,删除停止的容器,不用的image,等等
docker system prune -a -f
Docker容器的attached和detached模式
- attached模式是容器运行在前台,也是默认模式。
- detached模式是容器运行在后台,可以通过运行时
docker container run -d
带上参数进入后台模式。后台模式中,也可通过docker container attach <name or ID>
重新进入前台模式
Docker容器交互模式
由于通过-d参数,我们使容器进入了后台运行模式,那我们如何获取容器的运行日志呢?
# 该命令可以刷新容器的日志输出
sudo docker container logs -f <name or ID>
但是获取日志这个并不是我们的真正需求,我们希望能够直接进入容器,与容器进行交互。有两种方式:
# 方法一,创建一个容器时并进入交互式模式
sudo docker container run -it [COMMAND] [ARG...]
# 方法二,在一个已经运行的容器里执行一个额外的command
sudo docker exec -it [COMMAND] [ARG...]
# 该参数可以创建一个命令执行后自动删除的镜像
sudo docker container run -it --rm [COMMAND] [ARG...]
Docker镜像的获取
- pull from
registry
(online) 从registry拉取- public(公有)
- https://hub.docker.com/
- private(私有)
- public(公有)
- build from
Dockerfile
(online) 从Dockerfile构建【Dockerfile入门指南】 - load from
file
(offline) 文件导入 (离线) - commit from container 容器转化
以下是镜像常用命令:
操作 | 命令(全) |
镜像的拉取 | docker pull [OPTIONS] NAME[:TAG|@DIGEST] |
镜像的查看 | docker image ls |
镜像的删除 | docker image rm [OPTIONS] IMAGE [IMAGE…] |
镜像的导出 | docker image save -o ~/桌面/nginx_image.tar IMAGE |
镜像的导入 | docker image load -i ~/桌面/nginx_image.tar |
Docker容器生成镜像
还有一种方式可以生成镜像文件,就是将当前容器提交生成镜像。
sudo docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Docker镜像的分享
当我们创建自己的镜像后 ,如何将镜像分享到官方的DockerHub中呢?
# 首先需要登录,然后输入dockerHub中的账号密码
sudo docker login
# 设置镜像REPOSITORY带上dockerHub ID开头和设置tag
docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
# 上传镜像,即可在dockerHub中的my profile中查看镜像
sudo docker image push [OPTIONS] NAME[:TAG]