save
load
import
container
- 容器文件
image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。
docker container ls
# 列出本机正在运行的容器 docker container ls
# 列出本机所有容器,包括终止运行的容器 docker container ls --all(-a)
上面命令的输出结果之中,包括容器的 ID。很多地方都需要提供这个 ID,比如上一节终止容器运行的docker container kill命令。
有的同学觉得 docker ps & docker ps -a 不是更方便查看 container 的运行状态吗?
因为 docker container options 是Docker 1.13中的更新,docker container ls 与 docker ps 功能相同,但语义更明确,简化了Docker的用法,所以更推荐使用新写法
-q
直接显示当前所有容器的 container id
docker container ls -aq docker container ls -a | awk {'print$1'}
过滤状态字段显示
docker container ls -f "status=exited"
docker container rm
终止运行的容器文件,依然会占据硬盘空间,可以使用docker container rm命令删除。
docker container rm [containerID]
运行上面的命令之后,再使用docker container ls -a
命令,就会发现被删除的容器文件已经消失了。
由于一个个指定 containerid 很麻烦,可以全部删除:
docker rm $(docker container ls -aq)
条件过滤删除
比如,我们想把退出的给全部删除
筛选出退出状态的image 文件
- 直接删除
docker rm $(docker container ls -f "status=exited" -q)
docker container commit
根据容器的更改创建新image,比如在原 image 基础上安装了新的软件,那就可以上传新 image。
Usage: docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
可简写为
docker commit
容器操作
ps
docker ps : 列出容器
inspect
docker inspect : 获取容器/镜像的元数据。
语法
docker inspect [OPTIONS] NAME|ID [NAME|ID…]
参数
-f :指定返回值的模板文件。
-s :显示总的文件大小。
–type :为指定类型返回JSON。
获取镜像mysql:5.6的元信息。
runoob@runoob:~$ docker inspect mysql:5.6 [ { "Id": "sha256:2c0964ec182ae9a045f866bbc2553087f6e42bfc16074a74fb820af235f070ec", "RepoTags": [ "mysql:5.6" ], "RepoDigests": [], "Parent": "", "Comment": "", "Created": "2016-05-24T04:01:41.168371815Z", "Container": "e0924bc460ff97787f34610115e9363e6363b30b8efa406e28eb495ab199ca54", "ContainerConfig": { "Hostname": "b0cf605c7757", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "ExposedPorts": { "3306/tcp": {} }, ...
获取正在运行的容器mymysql的 IP。
runoob@runoob:~$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mymysql 172.17.0.3
镜像仓库
login
- docker login
登录到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub - docker logout
登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
语法
docker login [OPTIONS] [SERVER] docker logout [OPTIONS] [SERVER]
参数
-u 登录的用户名 -p :登陆的密码
实例
登录到Docker Hub
docker login -u 用户名 -p 密码
登出Docker Hub
docker logout
pull
push
docker push
注意 tag 必须是 hub 仓库的用户名,否则报错无权限。
但不推荐直接上传镜像,而是考虑安全问题,使用 Dockerfile 文件。即建立 hub 仓库和 GitHub 的映射,只要 GitHub 上有 Dockerfile 就会自动映射到 Dockerhub。
search
docker exec
进入运行中的容器。
比如进个 py 项目的容器:
docker exec -it image_id /bin/bash
查看 Python 的进程
ps -ef | grep python
进入容器项目的python docker exec -it image_id python 查看 ip docker exec -it image_id ip a
参考