美文网首页
docker常用命令

docker常用命令

作者: SevenLonely | 来源:发表于2019-04-26 11:22 被阅读0次

1. 查看运行容器

docker ps

2. 查看所有容器

docker ps -a

3. 进入容器

其中字符串为容器ID:

docker exec -it d27bd3008ad9 /bin/bash

4.停用全部运行中的容器:

docker stop $(docker ps -q)

5.删除全部容器:

docker rm $(docker ps -aq)

6.一条命令实现停用并删除容器:

docker stop $(docker ps -q) & docker rm $(docker ps -aq)

7. 搜索可以使用的镜像

docker search java
搜索出java 的docker镜像

8. 下载安装镜像

docker pull node:latest

9. 启动镜像容器

# 正常启动一个node容器
docker run -it node:latest /bin/bash

# 加参数 --name 表示启动一个名为node的容器
docker run --name node -it node /bin/bash

# -p 80:80:将容器的80端口映射到主机的80端口
docker run -p 80:80 --name mynginx  -it node /bin/bash

10.查看镜像

docker images
镜像列表

11.删除镜像

删除<none>这个镜像

# docker rmi  <镜像ID>
docker rmi 3871

12.删除并停止所有的容器

docker container prune

13.列出所有的容器 ID

docker ps -aq

14.停止所有的容器

docker stop $(docker ps -aq)

15.删除所有的容器

docker rm $(docker ps -aq)

16.删除所有的镜像

docker rmi $(docker images -q)

17.复制文件

docker cp mycontainer:/opt/file.txt /opt/local/docker cp /opt/local/file.txt mycontainer:/opt/

更新 : @snakeliwei 的提醒, 现在的docker有了专门清理资源(container、image、网络)的命令。 docker 1.13 中增加了docker system prune的命令,针对container、image可以使用docker container prunedocker image prune命令。

  • docker image prune --force --all 或者 docker image prune -f -a : 删除所有不使用的镜像

  • docker container prune: 删除所有停止的容器

18.运行Dockerfile文件

docker build -t showroow:v1 .

这条命令的意思是利用当前目录下的Dockerfile来创建一个叫做showroow的镜像标签为v1

19.运行新创建的容器

docker run -it my/python:v1 /bin/bash

20. 保存容器到镜像

docker commit -m="备注" 你的CONTAINER_ID 你的IMAGE

21.优化镜像体积

自动缩减 docker 镜像的体积的工具。大幅度缩减 docker 镜像的体积,方便分发,使用命令

docker-slim build --http-probe your-name/your-app

22. 发布镜像

首先要在dockerhub仓库上新建仓库,如下图所示


image.png

创建好后,在命令提示符里登录

docker login

登录完后,把所需上传的容器变为镜像

docker commit containerId dockerUserName/XXX

注:containerId为你需要上传的容器id,dockerUserName为dockerHub的登录名,xxx为仓库名,当然也不一定非得是dockerUserName/xxx,只是为了方便起见

接下来为存在于本地的镜像打标签

docker tag imageName dockerUserName/xxx[:tag]

注:imageName为你需要上传的镜像name,dockerUserName为dockerHub的登录名,xxx为仓库名,必须和你在dockerhub中新建的仓库名相同,tag不指定就是latest

打包好之后,就把打包好的镜像上传

docker push dockerUserName/xxx[:tag]

注:tag不指定就是latest

最后就去dockerhub上查看是否上传成功

23.常用的docker命令

#查找Docker Hub上的镜像
$ docker search imageName/ID

#获取Docker Hub上的镜像
$ docker pull ImageName/ID

#显示本地主机上的镜像列表
$ docker images 

#运行本地主机上的镜像
$ docker run ImageName/ID

#列出正在运行的容器
$ docker ps 

#查看正在运行容器的网络端口映射情况
$ docker port ContainerID 

#查看正在运行容器的内部正在进程运行
$ docker top ContainerID 

#查看正在运行容器的内部底层信息
$ docker inspect ContainerID 

#停止正在运行容器
$ docker stop ContainerID/ 

#重启已经停止的容器
$ docker start ContainerID 

#删除不需要的容器(必须在容器已经停止的情况下)
$ docker rm ContainerimageID

#移除本地镜像,移除前需要把该镜像下所有的容器删除
$ docker rmi ImageName/ID

#登录docker
$ docker login

#运行ubuntu:16.04镜像并创建容器和启动bash终端
$ docker run -t -i ubuntu:16.04 /bin/bash 

#重命名容器名
$ docker rename wonderful_kepler Ubuntu16.04 

#构建镜像
$ docker commit -m="has update" -a="SpiffyEight77" ff5d623e2d61 spiffyeight77/ubuntu:16.04

#提交镜像到docker hub 需要登录
$ docker push spiffyeight77/ubuntu 

部分参数说明
-d: 守护模式 后台运行
-p: 是容器内部端口绑定到指定的主机端口
-P: 是容器内部端口随机映射到主机的高端口
-f : 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出
-l : 查询最后一次创建的容器
-t : 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
-i : 则让容器的标准输入保持打开
-m:提交的描述信息
-a: 指定镜像作者
--rm: 停止容器后移除容器
ff5d623e2d61: 容器ID
spiffyeight77/ubuntu:16.04: 指定要创建的目标镜像名

进入容器是提示

sudo docker exec -it  569f05d5f4fc /bin/bash  

提示错误

rpc error: code = 13 desc = invalid header field value "oci runtime error: 
\ exec failed: container_linux.go:247: 
\ starting container process caused \"exec: \\\"/bin/bash\\\": 
\ stat /bin/bash: no such file or directory\"\n"

尝试

sudo docker exec -it  569f05d5f4fc /bin/sh  

or

sudo docker exec -it  569f05d5f4fc bash

相关文章

网友评论

      本文标题:docker常用命令

      本文链接:https://www.haomeiwen.com/subject/yympuftx.html