1、docker images (docker image ls) 列出已经下载下来的镜像
-q
:参数,列出镜像的 ID 列表
2、docker pull 仓库名[:标签] 从 Docker 镜像仓库获取镜像
docker ps -a
docker ps
docker stop NAMES (docker stop epic_jang)
docker exec -it my-nginx /bin/bash
容器内部没有网络的情况下,映射到服务器上查看端口启动的情况
yum install util-linux.x86_64
docker inspect 容器id|grep -i pid
nsenter --target 容器pid -n
3、docker run -d -p 8080:80 nginx
docker run -it --rm nginx:latest bash
-it
:这是两个参数,一个是-i
:交互式操作,一个是-t
终端。我们这里打算进入bash
执行一些命令并查看返回结果,因此我们需要交互式终端。--rm
:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动docker rm
。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用--rm
可以避免浪费空间。ubuntu:18.04
:这是指用ubuntu:18.04
镜像为基础来启动容器。bash
:放在镜像名后的是 命令,这里我们希望有个交互式 Shell,因此用的是bash
。
4、docker image rm [选项] <镜像1> [<镜像2> ...] 删除本地的镜像
1、docker image rm eeb6ee3f44bd
可以用镜像的完整 ID,也称为 长 ID
,来删除镜像。使用脚本的时候可能会用长 ID,但是人工输入就太累了,所以更多的时候是用 短 ID
来删除镜像。docker image ls
默认列出的就已经是短 ID 了,一般取前3个字符以上,只要足够区分于别的镜像就可以了。
2、docker pull centos:7
可以用镜像名
,也就是 <仓库名>:<标签>
,来删除镜像。
5、利用 commit 理解镜像构成
docker run --name webserver1 -d -p 8082:80 nginx
这条命令会用 nginx
镜像启动一个容器,命名为 webserver
,并且映射了 80 端口,这样我们可以用浏览器去访问这个 nginx
服务器。
如果是在本机运行的 Docker,那么可以直接访问:http://localhost
,如果是在虚拟机、云服务器上安装的 Docker,则需要将 localhost
换为虚拟机地址或者实际云服务器地址。
如果需要修改页面内容:可以使用 docker exec
命令进入容器,修改其内容。
docker exec -it 7403a20f18c4 /bin/bash (也是可以执行docker exec -it webserver1 bash) root@7403a20f18c4:/# echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html root@7403a20f18c4:/# exit exit
以交互式终端方式进入 webserver
容器,并执行了 bash
命令,也就是获得一个可操作的 Shell。
然后,我们用 <h1>Hello, Docker!</h1>
覆盖了 /usr/share/nginx/html/index.html
的内容。
现在我们再刷新浏览器的话,会发现内容被改变了。
修改了容器的文件,也就是改动了容器的存储层。我们可以通过 docker diff
命令看到具体的改动。
docker diff webserver1
容器的任何文件修改都会被记录于容器存储层里。而 Docker 提供了一个 docker commit
命令,可以将容器的存储层保存下来成为镜像。换句话说,就是在原有镜像的基础上,再叠加上容器的存储层,并构成新的镜像。以后我们运行这个新镜像的时候,就会拥有原有容器最后的文件变化。
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
docker commit \
>--author "wml <15100235523@163.com>" \
> --message "修改了网站页面内容" \
> webserver1 \
> nginx:v2
其中 --author
是指定修改的作者,而 --message
则是记录本次修改的内容。这点和 git
版本控制相似,不过这里这些信息可以省略留空。