镜像命令

查询镜像
docker search <关键词>
拉取镜像
docker pull <镜像名>
删除镜像
docker rmi <镜像名>
# 删除none标签的镜像,通常是打包过程中失败的过程镜像
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
用dockerfile创建镜像
docker build -t <镜像名> <镜像所在的相对路径>

容器命令

查询
docker ps #当前正在运行的容器
docker ps -a #查询所有容器
容器存放的位置
/var/lib/docker 存放镜像,容器,容器配置文件
/var/lib/docker/containers 存放容器的配置文件
查看容器内的资源使用情况
docker stats <容器名>

ctrl + c退出监控

创建容器(并运行一个命令)
docker run [option] <镜像名> <命令>

[option] :
-i -t 为容器分配一个输入终端;
-d 不创建终端,容器在后台运行,不会把输出结果打印到宿主机上(可以用docker logs查看输出结果),它和容器是否长久运行无关,执行完命令后自动停止;
--name <容器名> 为容器指定名字;
-p 8080:80 宿主机的8080端口绑定到容器的80端口,在一个指定端口上只可以绑定一个容器;可以有多个 -p 参数;
-P 随机分配一个宿主机的端口给容器的端口;
-v <本地绝对目录>:<挂载点> 把本地目录映射到容器中,方便多个容器共享数据,镜像内不保存这些数据;
--net=<网络名> 指定容器在哪个网络中运行;
--volumes-from <某容器名> 把某容器里的所有卷加入新创建的容器,保证容器间共享同样的卷;
<命令>/bin/bash,docker必须运行一个进程,否则会退出,这个作用就是启动容器后启动bash,阻塞docker让docker不退出;
比如,这次创建容器的时候:
搜索一个anaconda镜像,拉取第一个官方的镜像

docker search anaconda
[然后显示了一堆nanconda相关的镜像]
docker pull continuumio/anaconda3

然后想要创建一个容器,容器名叫anitaDocker:

docker run -d --name anitaDocker -p 8080:80 -p 6601:22 -p 6602:5000 -v $PWD:/home/myDocker continuumio/anaconda3 
docker exec -it anitaDocker /bin/bash

第二句就报错了,说Container is not running,进不去容器,这是因为docker run后面没有加<命令>,容器创建完就主动退出了,换成

docker run -it --name anitaDocker -p 8080:80 -p 6601:22 -p 6602:5000 -v $PWD:/home/myDocker continuumio/anaconda3 /bin/bash

或者

docker run -dit --name anitaDocker -p 8080:80 -p 6601:22 -p 6602:5000 -v $PWD:/home/myDocker continuumio/anaconda3

就进去容器了

退出容器

这样退出容器,退出后容器会停止:

exit

快捷键退出不会停止:

Ctrl+P+Q
删除容器

先要让容器停止运行

docker stop <容器名>

删除容器

docker rm <容器名>
修改容器名
docker rename <原容器名> <新容器名>
宿主机和容器间传递(复制)文件

命令都是在宿主机上执行,不是在容器内执行。
1.把文件从从宿主机复制到容器中:
docker cp <文件的相对路径> <容器名>:<容器内的绝对路径>,如下

docker cp /hostlocal/filefolder/file.txt anitaDocker:/home/txts/

2.文件从容器复制到宿主机上:
docker cp <容器名>:<容器内的绝对路径> <文件的相对路径>