输出Hello World参数 # docker run ubuntu /bin/echo "Hello World" docker: Docker 的二进制执行文件。 run: 与前面的 docker 组合来运行一个容器。 ubuntu:指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。 /bin/echo "Hello world": 在启动的容器里执行的命令
运行交互式的容器参数 # docker run -i -t ubuntu /bin/bash root@0123ce188bd8:/# //此时已进入一个ubuntu系统的容器, -i: 允许你对容器内的标准输入 (STDIN) 进行交互。 -t: 在新容器内指定一个伪终端或终端。 //尝试在容器中运行命令 cat /proc/version和ls分别查看当前系统的版本信息和当前目录下的文件列表 //运行 exit 命令或者使用 CTRL+D 来退出容器
运行一个web应用参数 # docker run -d -P training/webapp python app.py -d:让容器在后台运行。 -P:将容器内部使用的网络端口随机映射到我们使用的主机上。
docker ps 输出详情
| ConTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
|---|---|---|---|---|---|---|
| 容器 ID | 使用的镜像 | 启动容器时运行的命令 | 容器的创建时间 | 容器状态 | 容器的端口信息和使用的连接类型(tcpudp) | 自动分配的容器名称 |
镜像列表选项
| REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
|---|---|---|---|---|
| 镜像的仓库源 | 镜像的标签 | 镜像ID | 镜像创建时间 | 镜像大小 |
查找镜像选项
| NAME | DEscriptION | OFFICIAL | stars | AUTOMATED |
|---|---|---|---|---|
| 镜像仓库源的名称 | 镜像的描述 | 是否 docker 官方发布 | 类似 Github 里面的 star,表示点赞、喜欢的意思 | 自动构建 |
构建镜像时的Dockerfiles文件 # cat Dockerfiles FROM ubuntu //指定哪个镜像源 (必须写) MAINTAINER Fisher "fisher@sudops.com" //维护者 RUN echo 'we are running some # of cool things' // RUN 指令告诉docker在镜像内执行命令 安装了什么…… 然后,使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像 # docker build -t image1:v1.0 /home/docker/ -t:指定要创建的目标文件镜像名 image1:镜像名称 v1.0 :镜像标签 /home/docker/:Dockerfile 文件所在目录
网络端口映射两种方式 # docker run -d -P training/webapp python app.py # docker run -d -p 5000:5000 training/webapp python app.py -P :是容器内部端口随机映射到主机的端口。 -p : 是容器内部端口绑定到指定的主机端口。 指定容器绑定的网络地址 # docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py //以通过访问 127.0.0.1:5001 来访问容器的 5000 端口 以上默认绑定tcp端口 # docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py //端口后面加上 /udp,绑定udp端口
创建一个新的Docker网络 # docker network create -d bridge test-net -d:参数指定 Docker 网络类型,有 bridge、overlay。 其中 overlay 网络类型用于 Swarm mode。
手动指定容器设置 DNS # docker run -it --rm -h host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu 参数说明: --rm:容器退出时自动清理容器内部的文件系统。 -h HOSTNAME 或者 --hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。 --dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。 --dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。 注意:如果在容器启动时没有指定 --dns 和 --dns-search,Docker 会默认用宿主主机上的 /etc/resolv.conf 来配置容器的 DNS。查询信息
-
查询正在运行的容器: docker ps
-
查看所有的容器命令:docker ps -a
查询最后一次创建的容器:docker ps -l
查看容器名称:docker ps -l -
查看容器内的标准输出:docker logs <容器 ID> docker logs -f bf08b7f2cd89 -f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出
-
web 应用
- 查看容器的端口映射:
已知创建的 web 应用容器 ID 为 bf08b7f2cd89 名字为 wizardly_chandrasekhar
使用 docker port bf08b7f2cd89 或 docker port wizardly_chandrasekhar 来查看容器端口的映射情况 - 查看WEB应用程序容器的进程: docker top wizardly_chandrasekhar
- 检查 WEB 应用程序: docker inspect 来查看 Docker 的底层信息,会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息
-
查找镜像:docker search httpd
-
快捷查看端口的绑定情况docker port adoring_stonebraker 5000 “adoring_stonebraker”为自动分配的容器名称
-
查看网络情况 docker network ls
-
启动docker: systemctl start docker
-
获取镜像:docker pull ubuntu
-
删除镜像:docker rmi hello-world
-
启动容器: docker run -it ubuntu /bin/bash 使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器
-
启动已停止运行的容器:docker ps -a docker start b750bbbcfd88
-
后台运行:docker run -itd --name ubuntu-test ubuntu /bin/bash -d (指定容器的运行模式)参数默认不会进入容器,想要进入容器需要使用指令 docker exec
-
停止一个容器:docker stop <容器 ID> 重启:docker restart <容器 ID>
-
进入容器:在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
- docker attach 会导致容器停止
- docker exec 建议使用docker exec 命令,因为此退出容器终端,不会导致容器停止
-
导出本地某个容器:docker export 1e560fca3906 > ubuntu.tar导出容器 1e560fca3906 快照到本地文件 ubuntu.tar
-
导入容器快照: #cat docker/ubuntu.tar | docker import - test/ubuntu:v1使用 docker import 从容器快照文件中再导入为镜像,将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1
也可以通过指定 URL 或者某个目录来导入: docker import http://example.com/exampleimage.tgz example/imagerepo -
删除容器:docker rm -f <容器 ID>
-
运行一个web应用:
docker pull training/webapp //载入镜像 docker run -d -P training/webapp python app.py //在docker容器中运行一个 Python Flask 应用来运行一个web应用 查看web应用容器: docker ps PORTS 0.0.0.0:32769->5000/tcp //Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32769 上 创建的 web 应用容器 ID 为 bf08b7f2cd89 名字为 wizardly_chandrasekhar 通过浏览器访问WEB应用 停止 WEB 应用容器: # docker stop wizardly_chandrasekhar 重启WEB应用容器 # docker start wizardly_chandrasekhar 移除WEB应用容器 # docker rm wizardly_chandrasekhar
- 运行一个容器并连接到指定test-net网络 docker run -itd --name test1 --network test-net ubuntu /bin/bash



