docker run:干两步,本地找一下有没有集装箱,有运行,没有远程仓库下载运行。还没有报错。
docker好处:
- 不需要进行物理层模拟,不需要hypervisor
- 利用的内核是宿主机的内核,不需要重新加载Linux内核
镜像相关命令
docker images:展示目前本地所有镜像
options:
1. -a 本地所有
2. -q 只显示镜像id
docker search 镜像名称
options:
1. --limit: 只列出N个镜像默认25
参数 | 说明 |
---|---|
NAME | 镜像名称 |
description | 镜像说明 |
STARS | 点赞数量 |
OFFICIAL | 是否官方 |
AUTOMATED | 是否自动构建 |
docker pull 镜像名称[:TAG]
将远程镜像拉到本地。没有tag就是最新版本,latest。
可以存在不同版本的镜像。
docker system df
查看镜像/容器/数据卷所占用的空间
docker rmi
删除某名字id的镜像:
- -f 镜像ID 只删除一个
- -f 镜像1:tag 镜像2:tag 删除多个
- -f $(docker images -qa)全部删除
虚悬镜像:指的是repository与TAG 都是为的镜像
一般没啥用删掉就行。
容器命令
docker run [options] image [command] [arg...]
options:
1. --name="容器名称"
2. -d 后台运行容器并且返回容器ID
3. -i 以交互式模式运行容器通常与-t一起使用
4. -t 为容器分配一个伪输入终端,启动交互式容器
5. -P 随机端口映射
6. -p 设置IP以及端口号, IP:port
e.g:
在docker里面构造一个Ubuntu容器
docker run ubuntu -it /bin/bask
后面的/bin/bask表示需要使用Ubuntu里面的shell脚本
容器停止
- run 进入容器之后,输入exit退出,容器停止
- 按ctrl+p+q退出容器,但容器集训运行
docker start/restart/stop/kill 容器ID或者容器名称
启动已经停止的/重启/停止/强制停止容器
docker rm 容器ID删除容器
删除多个:
- docker rm -f $(docker ps -aq)
- docker ps -aq | xargs docker rm
守护式运行模式执行:
docker run -d 容器的名称
守护式容器即在后台进行运行,不会像-it在前端有任何显示。
但可能目前docker有可能会杀死后台运行的容器,认为没有交互他就有可能杀死
所以开启之后,进行docker ps 查看一下。
docker logs 容器id
查看容器日志
docker top 容器ID
查看容器内运行的进程
docker inspect 容器ID
查看容器内部细节
如果想重新回到后台运行的容器有两种方式,但是有一些区别
- docker exec -it 容器id bashShell
- docker attach 容器ID
他们之间的区别是,exec是相当于新开辟了一个交互界面,所以在exit之后,对原本的容器不会有太大的影响。
但是attach是没有开辟,相当于把原来的访问再次调用出来,在exit之后,如果没有前端访问,docker就会把这个容器停止。
将容器内的文件拷贝到主机上
docker cp 容器ID:容器内部路径 目的主机路径
导入导出容器:
- 将目前的容器打包:docker export 容器ID > 文件名.tar
- 将已有的tar包导入: cat 文件名.tar | docker import - 你想起的镜像用户/镜像名称:TAG号
然后就可以看到自己多了一个导入的镜像