
讲解Docker常用的命令。
镜像
列出镜像列表
命令:docker images(docker image ls)

各个选项说明:
REPOSITORY:表示镜像的仓库源 TAG:镜像的标签 IMAGE ID:镜像ID CREATED:镜像创建时间 SIZE:镜像大小
从仓库拉取镜像
命令:docker pull
一般默认是从Docker Hub上拉取镜像的,Docker Hub是Docker官方提供的镜像仓库服务(Docker Registry),有大量官方或第三方镜像供我们使用,比如我们可以在命令行中输入下面的命令直接拉取一个Centos镜像:
docker pull centos
复制

docker pull命令的完整写法如下:
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
复制
拉取一个镜像,需要指定Docker Registry的地址和端口号,默认是Docker Hub,还需要指定仓库名和标签,仓库名和标签唯一确定一个镜像,而标签是可能省略,如果省略,则默认使用latest作为标签名,另外,仓库名则由作者名和软件名组成。
那么,我们上面使用centos,那是因为省略作者名,则作者名library,表示Docker官方的镜像,所以上面的命令等同于:
docker pull library/centos:latest
复制
因此,如果拉取非官方的第三方镜像,则需要指定完整仓库名,如下:
docker pull mysql/mysql-server:latest
复制
运行镜像
使用docker run命令,可以通过镜像创建一个容器,如下:
docker run -it centos /bin/bash
docker run -it ubuntu:17.10 /bin/bash复制
删除镜像
镜像删除使用 docker rmi 命令,比如我们删除 hello-world 镜像:
docker image rm -f hello-world
复制

我删除镜像时,提示“Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force)”,所以才加上“-f”
构建镜像
当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。
从已经创建的容器中更新镜像,并且提交这个镜像 使用 Dockerfile 指令来创建一个新的镜像
我们使用命令 docker build ,从零开始来创建一个新的镜像。我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。
“构建镜像”的使用姿势可以参考:https://www.runoob.com/docker/docker-image-usage.html
容器
查看所有容器
查看本地所有的容器:
docker container ls -a
复制

查看所有容器也有简洁的写法,如下:
docker ps -a
复制
启动容器
启动容器有两种方式,一种是我们前面已经介绍过的,使用docker run命令通过镜像创建一个全新的容器,如下:
docker run -it ubuntu:17.10 /bin/bash
复制
参数说明:
-i: 交互式操作。 -t: 终端。 ubuntu: ubuntu 镜像。 /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bin/bash。
另外一种启动容器的方式就是启动一个已经停止运行的容器:
docker start container_id
复制
进入正在运行的容器
想要进入正在运行的容器,与容器主进程交互,有以下两种常用方法:
docker attach container_id
docker exec it 容器名或ID /bin/bash复制
停止&重启容器
要停止正在运行的容器可以使用docker container stop或docker stop命令,如下:
docker stop container_id
复制

停止的容器可以通过 docker restart 重启:
docker restart container_id
复制
删除容器
我们也可以使用docker container rm命令,或简洁的写法docker rm命令来删除容器,不过不允许删除正在运行的容器,因此如果要删除的话,就必须先停止容器,删除容器:
docker rm container_id
复制
删除所有退出的容器:
docker container prune
复制

容器连接
这个属于容器使用的稍微高级的部门,就简单提一下,后续知道有这个东西即可。
网络端口映射:我们可以指定容器绑定的网络地址,比如绑定 127.0.0.1;
docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
复制
Docker容器互联:端口映射并不是唯一把 docker 连接到另一个容器的方法,docker有一个连接系统允许将多个容器连接在一起,共享连接信息。即先新建一个网络,然后运行容器时,将容器加入该网络中,那么在容器A中,可以ping容器B。 配置DNS:不知道这个目前有什么用,就留个记录,主要有一下命令
# 输出DNS
docker run -it --rm mi-php:5.3.10 cat etc/resolv.conf
# 配置DNS
docker run -it --rm -h host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu复制
仓库
登录&退出
仓库(Repository)是集中存放镜像的地方:
在 https://hub.docker.com 免费注册一个 Docker 账号。 登录需要输入用户名和密码,登录成功后,我们就可以从 docker hub 上拉取自己账号下的全部镜像。
#登录
docker login
#退出
docker logout复制
搜索&拉取镜像
你可以通过 docker search 命令来查找官方仓库中的镜像,以 ubuntu 为关键词进行搜索:
docker search ubuntu
复制

使用 docker pull 将官方 ubuntu 镜像下载到本地,前面已经讲解,就不赘述。
推送镜像
用户登录后,可以通过 docker push 命令将自己的镜像推送到 Docker Hub,以下命令中的 username 请替换为你的 Docker 账号用户名。
$ docker tag ubuntu:18.04 username/ubuntu:18.04
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED ...
ubuntu 18.04 275d79972a86 6 days ago ...
username/ubuntu 18.04 275d79972a86 6 days ago ...
$ docker push username/ubuntu:18.04
$ docker search username/ubuntu
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
username/ubuntu复制
欢迎大家多多点赞,更多文章,请关注微信公众号“楼仔进阶之路”,点关注,不迷路~~
