docker简单使用
镜像命令
查看镜像(本地)
[root@vultrguest ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 f965319e89de 2 weeks ago 448MB
各项说明
- REPOSITORY:表示镜像的仓库源
- TAG:镜像的标签
- IMAGE ID:镜像ID
- CREATED:镜像创建时间
- SIZE:镜像大小
OPTIONS说明
- -a:列出本地所有镜像
- -q:只显示镜像ID
- --digests:显示镜像的摘要信息
- --no-trunc:显示完整的镜像信息
搜索镜像( Docker Hub 网站来搜索镜像)
[root@vultrguest ~]# docker search redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 8170 [OK]
bitnami/redis Bitnami Redis Docker Image 145 [OK]
sameersbn/redis 80 [OK]
grokzen/redis-cluster Redis cluster 3.0, 3.2, 4.0, 5.0, 6.0 67
rediscommander/redis-commander Alpine image for redis-commander - Redis man… 39 [OK]
各项说明
- NAME: 镜像仓库源的名称
- DESCRIPTION: 镜像的描述
- OFFICIAL: 是否 docker 官方发布
- stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
- AUTOMATED: 自动构建。
OPTIONS说明
- --no-trunc:显示完整的镜像信息
- -s:列出收藏数不少于指定值的镜像
- --automated‘:只列出automated build类型的镜像
拖取镜像
[root@vultrguest ~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
54fec2fa59d0: Already exists
9c94e11103d9: Pull complete
04ab1bfc453f: Pull complete
a22fde870392: Pull complete
def16cac9f02: Pull complete
1604f5999542: Pull complete
Digest: sha256:399a9b17b8522e24fbe2fd3b42474d4bb668d3994153c4b5d38c3dafd5903e32
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest
说明
通过docker pull 镜像名:TAG
可以下载指定版本的镜像
删除镜像
[root@vultrguest ~]# docker rmi redis
Untagged: redis:latest
Untagged: redis@sha256:399a9b17b8522e24fbe2fd3b42474d4bb668d3994153c4b5d38c3dafd5903e32
Deleted: sha256:f9b9909726890b00d2098081642edf32e5211b7ab53563929a47f250bcdc1d7c
Deleted: sha256:7bd7286c61dee81eb691f022d070202ba2840574c460f6dcbc21792f8bf22a7f
Deleted: sha256:ba618723adf8eb28ec3d2b2003442599e3f947b4d66875b80dc6582c61f89a27
Deleted: sha256:cd3c331f934414f0d7a2a3ceb80935a54252dba553f1c1ee823961a07e8d1957
Deleted: sha256:09f9b5d7722b181ae2acd61396c20549afdea66ee31f921850191db5afe6738a
Deleted: sha256:3bd2921d0d3dd52dbcdc462f35b11cb89df901205284b0fea03c19bb8359907a
说明
docker rmi -f redis
:有时会因为镜像之间的相互依赖无法删除,可以通过-f
参数强制删除
容器命令
新建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
[root@vultrguest ~]# docker run -it --name="centOS_test" centos
[root@ceb1026225bd /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
OPTIONS说明(常用)
- --name="新容器的名字":为容器指定一个名字
- -d:后台运行容器,并返回一个容器ID,也就是启动守护式容器
- -i:以交互模式运行容器,通常与-t同时使用
- -t:为容器重新分配一个伪终端,通常与-i同时使用
- -P:随机端口映射
- -p:指定端口映射,有一下四种格式
- ip:hostPort:ContainerPort
- ip::containerPort
- hostPort:containerPort
- containerPort
列出当前所有正在运行的容器
[root@vultrguest ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ceb1026225bd centos "/bin/bash" 2 minutes ago Up 2 minutes centOS_test
OPTIONS说明(常用)
- -a:列出当前所有正在运行的容器+历史上运行过的容器
- -l:显示最近出创建的容器
- -n:显示最近n个创建的容器
docker ps -n 3
- -q:静默模式,只显示容器的编号
- --no-trunc:不截断输出
退出容器
- 容器内命令行输入
exit
停止并退出 - 快捷键
ctrl+P+Q
容器不停止退出
启动容器
docker start 容器名或容器ID
重启容器
docker restart 容器名或容器ID
停止容器
docker stop 容器名或容器ID
强制停止容器
docker kill 容器名或容器ID
删除已经停止的容器
- 删除单个
docker rm 容器名或容器ID
- 删除多个
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
重点
启动守护式容器
当时用docker run -d centos
启动容器时,可能会遇到容器启动后秒退出,这是因为:Docker容器后台运行,就必须又一个前台进程。容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就会自动退出。可以使用docker run -d centos /bin/sh -c "while true;do echo hello world;sleep 2;done"
是的centos容器在它的前台执行命令
查看容器日志
docker logs -f -t --tail 容器名或容器ID
- -t:加入时间戳
- -f:跟随最新的日志打印
- --tail n:显示最后n条
查看容器内运行的进程
docker top 容器名或容器ID
进入正在运行的容器并以命令行交互
docker exec -it 容器名或容器ID bashShell
- 不进入容器,执行bashShell,例如:
docker exec -it trusting_shtern ls
- 进入容器,
docker exec -it trusting_shtern /bin/bash
- 不进入容器,执行bashShell,例如:
docker attach 容器名或容器ID
- 两者区别
- attach 直接进入容器启动命令的终端,不会启动新的进程
- exec实在容器中打开新的终端,并且可以启动新的进程
从容器内拷贝文件到主机上
docker cp 容器名或容器ID:容器内路径 目的主机路径
注:容器内路径使用绝对路径