Docker 常用命令总结

115 阅读1分钟
原文链接: www.jianshu.com

列出镜像列表

docker images

获取新的镜像

docker pull centos:7.0

查找镜像

docker search httpd

更新镜像

docker commit -m="提交的信息" -a="作者" e218edb10161 更改后的镜像名

删除镜像

docker rmi 49c614fbbea8

Error response from daemon: conflict: unable to delete 49c614fbbea8 (must be forced) - image is referenced in multiple repositories

# 这个报错说明它被其他的镜像依赖,所以需要先删除依赖的image


[root@FantJ ~]# docker rmi 49c614fbbea8
Error response from daemon: conflict: unable to delete 49c614fbbea8 (must be forced) - image is being used by stopped container ffd74d6603e0

#这个报错说明它被容器所使用,所以需要先删除容器
[root@FantJ ~]# docker rm ffd74d6603e0
ffd74d6603e0


#如果发现它被很多个容器占用,就用批量命令
[root@FantJ ~]# docker rm $(docker ps -a -q)
27298d317f59
955bbef03be9
95889edc40c8
518eff5fed00
c0b7ca7b267b
ce5935dfa127
63c212771b1e
906780ebb103
[root@FantJ ~]# docker rmi 49c614fbbea8
Untagged: learn/pingtag:latest
Deleted: sha256:49c614fbbea80b328834ecde9a39d8f5bb812c32851e0e5ae39b514642426984
Deleted: sha256:1de562b8b13c8b7af429a9072ef19a35e3c9085a202ffee5ed5c8aef4046cad4

运行容器

我们通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力

  • -t:在新容器内指定一个伪终端或终端。

  • -i:允许你对容器内的标准输入 (STDIN) 进行交互。

[root@FantJ ~]# docker run -i -t REPOSITORY:TAG /bin/bash
root@dc0050c79503:/#

REPOSITORY:TAG 表示的是 镜像仓库源:镜像版本标签

在容器中执行ls
在完成操作之后,输入 exit命令来退出这个容器

后台启动

  • -d:让容器在后台启动

查看正在运行的容器

[root@FantJ ~]# docker ps

查看容器内控制台打印

[root@FantJ ~]# docker logs id
docker logs -f 7a38a1ad55c6

跟踪查看日志

停止容器

[root@FantJ ~]# docker stop 112f9e089c33

运行容器并设置端口

docker run -d -p 5000:5000 training/webapp python app.py

容器内部的 5000 端口映射到我们本地主机的 5000 端口上。

docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py

这样我们就可以通过访问127.0.0.1:5001来访问容器的5000端口

查看 容器端口

docker port 7a38a1ad55c6

查看容器运行进程

docker top determined_swanson

构建镜像

后面章节讲

设置镜像标签

docker tag 860c279d2fec fantj/ip-web:1.0

使用本地配置运行nginx镜像

docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs  -d nginx 
  • -p 80:80:将容器的80端口映射到主机的80端口

  • --name mynginx:将容器命名为mynginx

  • -v $PWD/www:/www:将主机中当前目录下的www挂载到容器的/www

  • -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机中当前目录下的nginx.conf挂载到容器的/etc/nginx/nginx.conf

  • -v $PWD/logs:/wwwlogs:将主机中当前目录下的logs挂载到容器的/wwwlogs

进到docker里的某一服务

docker exec -it id bash