1、获取镜像
2、运行镜像
3、列出镜像
4、删除本地镜像
5、启动容器
5.1 新建并启动
5.2 启动已终止容器
6、后台运行
7、停止运行的容器
8、进入容器
9、导出和导入容器
9.1 导出容器
9.2 导入容器
10、删除容器
10.1 删除容器
10.2 清理所有处于终止状态的容器
11、其它删除
1、获取镜像
docker pull
:从Docker 镜像仓库拉取镜像。
docker pull [选项] [Docker Registry地址] <仓库名>:<标签>
具体的选项可以通过 docker pull --help 命令看到,这里我们说一下镜像名称的格式。
Docker 镜像仓库地址:地址的格式是<域名/IP>[:端口号]。
镜像仓库默认地址是 Docker Hub。
仓库名:仓库名称是两段式名称,<用户名>/<软件名>。对于Docker Hub,如果未登录docker login
,则默认为 libray,也就是官方镜像。
docker pull nginx:1.17.10
[root@localhost mycat]# docker pull nginx:1.17.10
1.17.10: Pulling from library/nginx
123275d6e508: Pull complete
6cd6a943ce27: Pull complete
a50b5ac4a7fb: Pull complete
Digest: sha256:2d780aabadacf8b15fe9ab46b79faa6a0e8dd3b91f3c3b492e0fb350dd859ece
Status: Downloaded newer image for nginx:1.17.10
上面的命令中没有给出 Docker 镜像仓库地址,因此将会从 Docker Hub 获取镜像。而镜像名称是ubuntu:16.04,因此将会获得官方镜像 library/ubuntu 仓库中标签为 16.04 的镜像。
2、运行镜像
有了镜像后,我们就能够以这个镜像为基础启动并运行一个容器。以上面 ubuntu:16.04 为例,如果我们打算启动里面的 bash 并且进行交互式操作的话,可以执行下面的命令。
# 执行docker run命令带--rm命令选项,等价于在容器退出后,执行docker rm -v。
docker run -it --rm nginx:1.17.10 bash
[root@localhost mycat]# docker run -it --rm nginx:1.17.10 bash
root@d2e3df7db0c9:/# echo 'Hello World'
Hello World
-it
:-i
:交互式操作,-t
:终端。
—rm
:容器退出后将其删除,相当于执行 docker rm -v。
nginx:1.17.10
:以 nginx:1.17.10
镜像为基础镜像来启动容器。
bash
:放在镜像名后的是命令,这里我们希望有个交互式 shell
,因此用的是 bash
。
exit
:退出容器。
3、列出镜像
Docker 镜像列表,列表包含了仓库名称、标签tag、镜像 ID、创建时间以及所占用的空间。
docker image ls
[root@localhost mycat]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.17.10 e791337790a6 5 days ago 127MB
java 8-jre e44d62cf8862 3 years ago 311MB
查看镜像、容器、数据卷所占用的空间。
docker system df
[root@localhost mycat]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 22 16 7.275GB 2.928GB (40%)
Containers 24 10 186.2MB 185.3MB (99%)
Local Volumes 119 3 6.951GB 6.939GB (99%)
Build Cache 0 0 0B 0B
[root@localhost mycat]#
仓库名、标签均为
docker image ls -f dangling=true
[root@localhost mycat]# docker image ls -f dangling=true
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> fc14b77f9097 6 weeks ago 465MB
<none> <none> c0ef65af5479 6 weeks ago 465MB
4、删除本地镜像
删除本地镜像
docker image rm [选项] <镜像1>[<镜像2>...]
批量删除镜像
docker image rm $(docker image ls -q redis)#删除所有仓库名为 redis 的镜像
删除所有在 ubuntu:16.04之前的镜像
docker image rm $(docker image ls -q before=ubuntu:16.04)
删除所有未被 tag 标记和未被容器使用的镜像:
docker image prune
[root@localhost mycat]# docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B
删除所有未被容器使用的镜像:
docker image prune -a
删除所有停止运行的容器:
docker container prune
5、启动容器
启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态 (stopped)的容器重新启动。
5.1 新建并启动
docker run
输出一个“Hello World”,之后终止容器。
docker run --name hello-world centos:7 bin/echo 'Hello World'
[root@localhost mycat]# docker run --name hello-world centos:7 bin/echo 'Hello World'
Hello World
5.2 启动已终止容器
docker container start 或者
docker start
[root@localhost mycat]# docker container start hello-world
hello-world
[root@localhost mycat]# docker start hello-world
hello-world
启动一个 bash 终端,允许用户进行交互。
docker run -t -i centos:7 bin/bash
-t
让 Docker 分配一个伪终端并绑定到容器的标准输入上, -i
则让容器的标准输入保持打开。
检查本地是否存在指定的镜像,不存在就从公有仓库下载 利用镜像创建并启动一个容器 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层 从宿主主机配置的网桥接囗中桥接一个虚拟接囗到容器中去 从地址池配置一个 ip 地址给容器 执行用户指定的应用程序 执行完毕后容器被终止
6、后台运行
添加-d
参数来实现,Docker 后台运行容器。
如果不使用 -d 参数运行容器, 比如
docker run hello-world
会把日志打印在控制台;如果使用了 -d 参数运行容器, 比如
docker run hello-world
不会输出日志,只会打印容器 ID(输出结果可以用docker logs 容器名
查看)
[root@localhost mycat]# docker run -d --name hello-world centos:7 bin/echo 'Hello World'
057e9d165bfe1620bb1b3eb0167943ff6fbbef424cb25ab1b7d777598b2359ec
[root@localhost mycat]# docker logs hello-world
Hello World
7、停止运行的容器
# 终止一个运行中的容器
docker container stop
# 终止状态查看
docker containner ls -a
# 处于终止状态的容器可通过 start 启动
docker container start
# 重新启动容器
docker container restart
[root@localhost ~]# docker run -d --name nginx -p 8080:8090 nginx:1.17.10
e5b285d300810c8c52fe1c7ef13f6328021e01a34e4cc993bff7ea7c816f6331
[root@localhost ~]# docker stop nginx
nginx
[root@localhost ~]# docker start nginx
nginx
[root@localhost ~]# docker container stop nginx
nginx
[root@localhost ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e5b285d30081 nginx:1.17.10 "nginx -g 'daemon of…" About a minute ago Exited (0) 24 seconds ago nginx
[root@localhost ~]# docker restart nginx
nginx
8、进入容器
在使用-d
参数时,容器启动后会进入后台,某些时候需要对容器进行操作,使用 docker exec 命令可以进入到运行中。
exec
命令 -i -t
参数
docker exec
后面可以跟多个参数,这里使用-it
,就可以看到熟悉的 Linux 命令提示符。
docker exec -it 容器ID /bin/bash
[root@localhost ~]# docker exec -it nginx /bin/bash
root@e5b285d30081:/#
9、导出和导入容器
9.1 导出容器
导出某个容器,可以使用 docker export 命令。
docker export 容器ID > 导出文件名.tar
[root@localhost ~]# docker export nginx > nginx.tar
[root@localhost ~]# ls
nnginx.tar 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost ~]#
9.2 导入容器
导入容器,可以使用 docker import 从容器快照文件中再导入为镜像。
cat 导出文件名.tar | docker import - 镜像用户/镜像名:镜像版本
[root@localhost ~]# cat nginx.tar | docker import - jingyu/nginx:1.17.10
sha256:64e2c952b74e2d7970f95cfd4f913ec1a89273f9f101f798b2b20ee31337050e
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jingyu/nginx 1.17.10 64e2c952b74e 5 seconds ago 125MB
也可以通过指定URL 或者某个目录来导入。
docker import http://study.163.com/image.tgz example/imagerepo
10、删除容器
10.1 删除容器
删除一个处于终止状态的容器。
docker rm nginx
10.2 清理所有处于终止状态的容器
用 docker container ls -a
命令可以查看所有已经创建的包括终止状态的容器,如果数量要一个个删除可能会很麻烦,用下面的命令可以清理掉所有终止状态的容器。
docker rm $(docker ps -a -q)
11、其它删除
删除所有未被挂载的卷:
docker volume prune
删除所有网络:
docker network prune
删除 docker 所有资源:
docker system prune




