如果不指定tag,默认拉取最新版本(tag为latest)。
几个栗子:
执行docker run -it ubuntu /bin/bash命令即可利用下载好的镜像创建容器并运行容器里的应用
可以用docker tag命令为本地镜像添加便于记忆的标签。例如,为ubuntu:16.04添加ub标签:docker tag ubuntu:16.04 ub,命令执行之后,会多出一个ub:latest镜像。
IMAGE ID相同的镜像说明指向了同一个镜像,只是别名不同。
使用docker inspect命令查看镜像详细信息。例如,docker inspect 5e8b97a2a082,查看IMAGE ID以5e8b97a2a082开头的镜像详细信息。返回信息为json格式,如果想只想查看其中某项信息,可以使用-f参数来指定。例如,docker inspect 5e8b97a2a082 -f {{".RootFS.Type"}} 返回根节点下RootFS节点下Type的值。
默认搜索doker hub官方仓库中的镜像,命令支持的参数:
多个条件共同使用:--filter=is-automated=false --filter=is-OFFICIAL=true(不是自动创建、官方的镜像列表)
栗子: docker search mysql --filter=is-OFFICIAL=true --no-trunc=true:查找带关键字mysql的官方镜像,不用...截断显示。
docker rmi 5e8b97a2a082,先尝试所有镜像的标签,然后删除镜像。如果有该镜像创建的容器存在时,无法删除镜像,可以使用docker ps -a查看所有容器。
有两个退出状态的容器是基于id为5e8b97a2a082的镜像创建的,不能删除该镜像,如果强制删除,使用-f参数:docker rmi 5e8b97a2a082 -f,不推荐这样删除,会有一些遗留问题。
正确的做法是先删除镜像的所有容器,再删除镜像,docker rm e48d924e2db7 2863979e58b2。
创建镜像有三种方式:基于已有镜像的容器创建、基于本地模版导入、基于dockerFile创建(后续总结)。
依次执行docker run -it ubuntu /bin/bash、touch test、exit命令,执行docker ps -a,记录容器id:f08de6f16901。此时,容器已经跟原来的镜像相比,发生了变化,可以使用docker commit提交一个新的镜像,可以使用id或名称指定容器:
docker commit -m "test add" -a "jgx" f08de6f16901 test,查看本地镜像列表,会多出一个标签为test的镜像。
推荐是有那个openVZ提供的模版创建,下载地址:https://openvz.org/Download/template/precreated。
比如下载了一个ubuntu-16.04的压缩包,可以使用以下命令导入:
cat ubuntu-16.04-x86_64-minimal.tar.gz | docker import - ubuntu:16.04
docker save -o hello-world.tar hello-world
docker load --input hello-world.tar或者docker load < hello-world.tar
默认上传到docker hub官方仓库,需登录,在docker hub网站注册之后(要加载google验证码,需),即可上传自己的镜像。例如用户名为user,上传本地的test镜像,可以先添加新的标签user/test,然后执行docker push命令上传:
docker tag test user/test
docker push user/test
第一次上传时会提示登录,如果没有提示登录并报错: requested access to the resource is denied,需手动登录:
docker login ,输入账号和密码提示Login Succeeded,重新push即可。
docker技术学习总结(2)—— 容器