
官网:https://www.docker.com/
Github Docker 源码:https://github.com/docker/docker-ce
英文文档:https://docs.docker.com/
中文文档:https://www.dockerdocs.cn/index.html
下载步骤 略 。
Tips:
验证安装成功,在命令行中输入
docker version
Docker是介于虚拟环境与虚拟机之间的,提供程序运行容器的平台。Docker在应用程序开发中可为开发人员提供方便的标准化环境;在服务器部署时,Docker使您能轻松移植到不同服务器或虚拟机中;在深度学习环境配置时,也能通过Docker实现不同本机Cuda的隔离。
首先,我们需要明确几个术语:

Step1: 配置Docker hub镜像源(选择一个即可,如果都不行了,请使用魔法)
Step2: 拉取镜像
docker pull [OPTIONS] [Docker Registry Address]<Image Name>[:Image Tag]
其中[]中的内容可以省略,<Image Name>:<Image Tag> 可以从Docker Registry(如Docker hub和其镜像)中查到,取决于您所需要的基础环境
如:在命令行中输入
docker pull ubuntu:18.04
Step3: 运行镜像
docker run [OPTIONS] <IMAGE NAME> [COMMAND] [ARG...]
注意,以上如果本地没有指定image文件,指令其实也能自动抓取image
如:
在后台执行
docker run ubuntu
or 在命令行执行
docker run -it ubuntu:18.04 /bin/bash
-it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。ubuntu:18.04:这是指用 ubuntu:18.04 镜像为基础来启动容器。bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bashdocker system df
docker image ls
列出dangling image(同名镜像中,失去意义的旧镜像)
docker image ls -f dangling=true
# 删除它
docker image prune
列出中间层镜像(被上层镜像所依赖的,重复利用的镜像)
docker image ls -a
列出筛选的镜像
# 通过 名称 筛选
docker image ls ubuntu
# 通过 名称:标签 筛选
docker image ls ubuntu:18.04
# 通过 过滤器 --filter 筛选
docker image ls -f since=mongo:3.2
格式化列出镜像
docker image ls --format "{{.ID}}: {{.Repository}}"
docker image rm <参数>
其中参数可以是image ID、镜像名:标签、或镜像摘要(DIGEST)
docker run [OPTIONS] <IMAGE NAME> [COMMAND] [ARG...]
以<IMAGE NAME>镜像新建/启动容器,其中启动选项为[OPTIONS],启动后执行命令[COMMAND] [ARG...]
| OPTION | Description |
|---|---|
| -i | 以交互模式运行容器,通常与 -t 同时使用 |
| -t | 启动容器后,为容器分配一个命令行,通常与 -i 同时使用 |
| -v | 目录映射,容器目录挂载到宿主机目录,格式: :<容器目录> |
| -d | 守护进程,后台运行该容器 |
| -p | 指定端口映射,格式:主机(宿主)端口:容器端口 |
| -P | 随机端口映射,容器内部端口随机映射到主机的端口 |
| --name<image name> | 容器名字 |
| -m, --memory bytes | 设置容器使用内存最大值 |
| -h, --hostname string | 指定容器的 host name |
| --dns 8.8.8.8 | 指定容器 dns 服务器 |
| -e username="admin" | 设置环境变量 |
如:
以ubuntu:18.04镜像构建容器,并输出"Hello world",之后终止容器(/bin/echo 'Hello world')
docker run ubuntu:18.04 /bin/echo 'Hello world'
以ubuntu:18.04镜像构建容器,在交互模式下(-i);分配命令行(-t);启动bash终端(/bin/bash)
docker run -it ubuntu:18.04 /bin/bash
以ubuntu:18.04镜像构建容器,命名为Myubuntu(--name);在交互模式下(-i);分配命令行(-t);将容器/usr/local/webapps挂载到主机/home/webapps目录,这意味着可以直接修改主机目录中的文件,从而修改容器中的文件(-v);将容器8080端口映射到主机的8888端口(-p);以后台模式启动容器(-d);启动容器后,在容器内执行命令(bash)
docker run -d -p 8888:8080 -v /usr/local/webapps:/home/webapps -it --name Myubuntu ubuntu:18.04 bash
当利用docker run 来创建容器时,Docker 在后台运行的标准操作包括:
启动容器
docker start [OPTIONS] CONTAINER [CONTAINER...]
| OPTION | Description |
|---|---|
| -a | 附加到容器的标准输入输出流 |
| -i | 附加并保持标准输入打开 |
docker start my_container
docker start container1 container2 container3
终止容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]
| OPTION | Description |
|---|---|
| -t,--time | 停止容器之前等待的秒数,默认是 10 秒 |
docker stop my_container
docker stop -t 30 my_container
docker stop container1 container2 container3
重启容器
docker restart [OPTIONS] CONTAINER [CONTAINER...]
| OPTION | Description |
|---|---|
| -t,--time | 停止容器之前等待的秒数,默认是 10 秒 |
docker restart my_container
docker restart -t 30 my_container
docker restart container1 container2 container3
在使用 -d 参数时,容器启动后会进入后台。某些时候需要进入容器进行操作,包括使用 docker attach 命令或 docker exec 命令。
attach命令
在容器后台运行时,输入
docker attach <Container ID>
exec进入容器命令(推荐)
在容器后台运行时,输入
docker exec -it <Container ID> bash
导出容器
docker export <Container ID> > ubuntu.tar
导入容器
cat ubuntu.tar | docker import - test/ubuntu:v1
通过指定URL导入
docker import http://example.com/exampleimage.tgz example/imagerepo
对已经停止的容器,可以使用命令删除
docker rm -f <Container ID>
删除所有处于终止状态的容器
docker container prune
查看正在运行的容器
docker ps
查看容器端口的映射情况
docker port <Container ID>|<Container Name>
查看容器内部的标准输出
docker logs -f <Container ID>
查看容器内部运行的进程
docker top <Container ID>|<Container Name>
查看 Docker 的底层信息
docker inspect <Container ID>|<Container Name>