03. docker 的简单使用
前提:在一台已经安装了 docker 的机器上。
Docker 允许你在容器内运行应用程序, 使用 docker run
命令来在容器内运行一个应用程序。
通过运行 hello-world 映像来验证是否正确安装了 Docker 。
1 | sudo docker run hello-world |
run 命令可以加的参数。
- -i 以交互模式运行容器,通常与 -t 同时使用;
- -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- -d 后台运行容器,并返回容器 ID。
注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec。
我们通过 docker run 并分别加上两个参数 -i -t,让 docker 运行的容器实现"对话"的能力:
1 | docker run -i -t ubuntu:15.10 /bin/bash |
当然 -i -t 连写为 -it
1 | docker run -it ubuntu:15.10 /bin/bash |
启动容器(后台模式)
1 | docker run -d ubuntu:15.10 \ |
在输出中,我们没有看到期望的 “hello world”,而是一串长字符. 这个长字符串叫做容器 ID,对每个容器来说都是唯一的,我们可以通过容器 ID 来查看对应的容器发生了什么。
docker ps
可以查看当前哪些 docker 容器正在运行
在宿主主机内使用 docker logs 容器 id
命令,查看容器内的标准输出:
1 | docker logs 2b1b7a428627 |
docker images
查看下载了哪些镜像
docker container ls
查看正在运行的容器
docker container ls -a
查看所有容器, 包含了已停止的容器
docker rm bdc8d8c475cb
删除容器, bdc8d8c475cb 是容器 id
docker rm -f 1e560fca3906
强制删除容器
指定容器 CONTAINER ID 启动容器
docker start <CONTAINER ID>
指定容器名称启动容器
docker start <CONTAINER NAME>
指定 CONTAINER ID 停止容器
docker stop <CONTAINER ID>
指定容器名称停止容器
docker stop <CONTAINER NAME>
指定容器 CONTAINER ID 重启容器
docker restart <CONTAINER ID>
指定容器名称重启容器
docker restart <CONTAINER NAME>
进入容器
docker attach
如果从这个容器退出,会导致容器的停止。
docker exec
推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
docker exec -it 243c32535da7 /bin/bash
要退出终端,直接输入 exit 即可。
导出和导入容器
1 | docker export 1e560fca3906 > ubuntu.tar |
导入容器快照
可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:
1 | cat docker/ubuntu.tar | docker import - test/ubuntu:v1 |
此外,也可以通过指定 URL 或者某个目录来导入,例如:
1 | docker import http://example.com/exampleimage.tgz example/imagerepo |
离线镜像文件导入
内网环境没法 pull 镜像,但是 docker 本身可以将已有的镜像导出成 tar 文件,并且可以再次导入到 docker,利用这一点,可以实现离线镜像文件的下载。
找一台可以联网的 docker 机器,并 pull 下载需要的镜像文件。
然后使用如下命令将镜像文件导出:
1 | docker save java:8 -o java.tar #将 java 8的镜像导出成 tar 文件 |
将 tar 文件上传到内网 docker 服务器,使用如下命令导入镜像文件:
1 | docker load -i java.tar |
网络端口的快捷方式
通过 docker ps 命令可以查看到容器的端口映射,docker 还提供了另一个快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号。
1 | docker port wizardly_chandrasekhar |
查看 WEB 应用程序日志
docker logs [ID 或者名字] 可以查看容器内部的标准输出。
1 | docker logs -f bf08b7f2cd89 |
-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。
查看 WEB 应用程序容器的进程
我们还可以使用 docker top 来查看容器内部运行的进程
1 | docker top wizardly_chandrasekhar |
检查 WEB 应用程序
使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。
1 | runoob@runoob:~$ docker inspect wizardly_chandrasekhar |
其他命令
docker cp :用于容器与主机之间的数据拷贝。
实例
将主机 /www/runoob 目录拷贝到容器 96f7f14e99ab 的/www 目录下。
1 | docker cp /www/runoob 96f7f14e99ab:/www/ |
将容器 96f7f14e99ab 的/www 目录拷贝到主机的 /tmp 目录中。
1 | docker cp 96f7f14e99ab:/www /tmp/ |
参考
docker 仓库
https://hub.docker.com/search?q=&type=image
docker 重启参数–restart=always 的作用_bjywxc 的博客-CSDN 博客_restart=always
https://blog.csdn.net/bjywxc/article/details/103530262