Docker常用命令
前面有说到docker的三大核心概念是:镜像、容器和仓库,对于docker的常用命令我们也从这三大核心着手说明
一、Docker镜像相关
当运行容器时,是以镜像为模版创建,若使用的镜像不在本地保存,docker就会自动从镜像仓库中下载,默认是从Docker Hub公共镜像源下载。
-
1、搜索镜像
我们可以在Docker Hub网站上来所有所需镜像,也可以直接使用命令来搜索
docker search http
- NAME: 镜像仓库源的名称
- DESCRIPTION: 镜像的描述
- STARS: 类似 Github 里面的 star,表示点赞、喜欢的意思
- OFFICIAL: 是否 docker 官方发布
- AUTOMATED: 自动构建。
-
2、下载镜像
docker pull image_name
,如下载http镜像,image_name通过search可以确认,docker pull httpd
-
3、查看本地镜像
docker images
-
4、删除本地镜像
docker rmi image_name
,如:docker rmi httpd
-
5、导出/导入镜像以及从归档文件中创建镜像
- 导出:
docker save [OPTIONS] IMAGE [IMAGE...]
,如:docker save -o image.tar.gz image_name
- 导入:
docker load [OPTIONS]
,如:docker load -i image.tar.gz
- 从归档文件中创建镜像:
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
,如:docker import image.tar.gz new_image_name
- 导出:
-
6、创建镜像
当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。-
(1) 从已经创建的容器中更新镜像,并且提交这个镜像
假设对已存在的容器做好了定制化的更新之后,使用commit命令进行提交
基本语法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
如:docker commit -m "shuoming" -a "auth" 31d22a1554df postgresql-test
[NOTE]
-m:提交的描述信息;
-a:指定镜像作者
31d22a1554df:容器ID
postgresql-test:指定要创建的目标镜像名 -
(2) 使用 Dockerfile 指令来创建一个新的镜像
基本语法:docker build -f Dockfile -t image_name
,其中-f是指定Dockfile文件路径,不添加的话是默认使用当前目录下的Dockfile,-t后指定镜像的名字以及标签,对于Dockfile文件后续会再做说明。
-
-
7、设置镜像标签
docker tag 镜像ID 用户名/repository-name:标签名
,如:docker tag 860c279d2fec test/centos:dev
二、Docker容器相关
直接输入docker
可以查看到Docker客户端的所有命令选项
可以通过docker command --help
命令更深入的查看指定的command的使用方法,如:docker stats --help
-
1、启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
,如:docker run -it httpd /bin/bash
[NOTE]
-i: 交互式操作。
-t: 终端。
httpd: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash,要退出的话直接输入exit -
2、查看所有容器
docker ps -a
-
3、启动已经停止运行的容器
docker start 容器名或容器ID
-
4、后台运行容器
docker run -itd httpd /bin/bash
,其中-d代表后台运行 -
5、查看所有运行的容器
docker ps
-
6、停止一个容器
docker stop 容器名或容器ID
-
7、登录一个容器
docker attach
,如docker attach 6b5ee0283251
,但是退出之后会导致容器停止,只是为了进入容器进行操作的话,不建议使用这个命令docker exec
,建议使用,长配合-it
和/bin/bash
一起使用,如:docker exec -it 6b5ee0283251 /bin/bash
-
8、删除容器
docker rm 容器名或容器ID
-
9、其他
docker top 容器名或容器ID
,实现查看container中正在运行的进程docker logs -f 容器名或容器ID
,跟踪查看container的日志输出。--since显示某个开始时间的所有日志,--tail仅列出最新的N条容器日志docker port 容器名或容器ID
,列出指定的容器的端口映射docker stats
,查看容器硬件状态,可以加上--no-stream
参数避免显示结果实时刷新
三、Docker仓库相关
-
1、登录
docker login [OPTIONS] [SERVER]
,如登录到Docker Hub,docker login -u 用户名 -p 密码
-
2、登出
docker logout [OPTIONS] [SERVER]
,如登出Docker Hub,docker logout
-
3、从仓库中下载镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
,如docker pull java
-
4、上传镜像至仓库
docker push [OPTIONS] NAME[:TAG]
,如docker push myweb:t0