Docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 Docker 的优点包括快速,一致地交付您的应用程序;响应式部署和扩展;在同一硬件上运行更多工作负载等。

Ubuntu Docker 安装可以参考官方文档:

请根据提供的内容完成内容重构,并保持段落结构:

1. 修改用户组为Docker用户组:

```

sudo usermod -aG docker $USER

```

为了使上述变更生效,请先 Logout,再 Login。

2. Docker使用说明:

2.1 Docker Hello World示例:

```

docker run

```

输出 Hello world:

```

docker run ubuntu:15.10 /bin/echo "Hello world"

```

各个参数解析:

```

dockerrunubuntu:15.10/bin/echo "Hello world"

```

以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo “Hello world”,然后输出结果。

2.1.1 运行交互式的容器:

```

docker run -i -t ubuntu:15.10 /bin/bash

```

各参数解析:

```

-i-t

```

以上命令完整的意思可以解释为:使用镜像 ubuntu:15.10 以交互模式启动一个容器,在容器内执行 /bin/bash/ 命令。(这里仅输入 bash 替代 /bin/bash/;上一节仅输入 echo 替代 /bin/echo 能达到相同效果。这里意思也就是,先打开 image 为 ubuntu:15.10 的镜像,创建一个 container,为了在这个终端持续使用它,需要使用该 container 的 bash 环境)

```

root@bd3fa2824fc2:/# cat /proc/version | exit

CTRL+D

第三行表明我们已经退出了当前的容器,返回到当前的主机中。

```

2.1.2 启动容器(后台模式):

使用以下命令创建一个以进程方式运行的容器:

```

docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"

```

各参数解析:

```

-d

```

容器 ID

.1 Docker命令行常用操作

3.1.1 查看日志

使用`docker logs --tail`命令可以查看容器的日志,并实时显示最新的日志内容。

3.1.2 停止容器

使用`docker stop`命令可以停止正在运行的容器。如果想要查看所有容器的状态,可以使用`docker ps`命令。

3.1.3 Docker start/stop/restart 命令

使用`docker start`、`docker stop`和`docker restart`命令可以分别启动、停止和重启容器。

3.2 Docker 容器使用

3.2.1 Docker 客户端

要使用Docker客户端,需要先安装Docker。安装完成后,可以通过输入`docker`命令来执行相应的Docker命令。例如,输入`docker [command] --help`可以查看Docker命令的帮助信息。

3.2.2 容器使用

3.2.2.1 获取镜像

使用`docker pull`命令可以获取指定的镜像。例如,输入`docker pull ubuntu`可以获取Ubuntu镜像。

各参数解析:

- `docker pull [OPTIONS] NAME[:TAG|@DIGEST]`:拉取指定镜像。其中,NAME是镜像名称,TAG是标签(可选),DIGEST是摘要(可选)。

- `docker pull`:默认拉取官方镜像。

3.2.2.2 启动容器

以下命令使用Ubuntu镜像启动一个容器,参数为以命令行模式进入该容器(与上一章一样):

```bash

docker run -it ubuntu /bin/bash

```

参数说明:

- `-i`:以交互模式运行容器。

- `-t`:分配一个伪终端。

- `ubuntu/bin/bash`:在容器内执行的命令,这里是启动bash shell。

- 要退出终端,直接输入`exit`即可。

请根据提供的内容完成内容重构,并保持段落结构:

```

docker exec

sudo docker exec -it c393a3718837 /bin/bash

docker exec --help

参数说明:

docker exec

导出和导入容器:

docker export

将容器c393a3718837导出到本地文件ubuntu.tar:

docker export c393a3718837 > ubuntu.tar

导入容器:

从本地文件ubuntu.tar导入到容器c393a3718837:

cat ubuntu.tar | sudo docker import - test/ubuntu:v1

也可以通过指定URL或目录来导入,例如:

docker import http://example.com/exampleimage.tgz example/imagerepo

或者指定目录:

docker import /path/to/local/file image_name

删除容器:

清理掉所有处于终止状态的容器:

docker rm -f 1e560fca3906

使用以下命令可以批量删除容器:

docker container prune

运行一个web应用:

构建一个Python Flask应用的Docker镜像(如果还没有的话):

docker pull training/webapp

在Docker容器中运行Flask应用:

docker run -d -P training/webapp python app.py

参数说明:

-d:让容器在后台运行。

-P:将容器内部使用的网络端口随机映射到我们使用的主机上。

查看WEB应用容器:

列出正在运行的容器及其相关信息:

docker ps

查看容器内部的网络端口映射情况:

PORTS 0.0.0.0:32768->5000/tcp

将容器内部的端口映射到本地主机的端口上(以运行Flask应用为例):

docker run -d -p 5000:5000 training/webapp python app.py

查看网络端口的快捷方式:

docker ps、docker port、docker port、docker port、bf08b7f2cd89、docker port wizardly_chandrasekhar

当运行容器时,使用的镜像如果在本地中不存在,Docker会尝试先从默认镜像下载 (默认使用 Docker Hub 公共注册服务中器中的仓库),用户也可以通过配置,使用自定义的镜像。

以下是一些常用的 Docker 镜像命令:

```

docker pull # 从远程拉取镜像到本地

docker push # 将本地镜像推送到远程仓库

docker images # 查看本地镜像列表

docker image rm # 删除本地镜像

docker run -it --rm # 在容器中运行一个交互式的 shell

```

. 创建镜像

4.1 列出镜像列表

```bash

docker images

REPOSITORYTAGIMAGE IDCREATEDSIZE

REPOSITORY:TAG

```

所以,如果我们想要使用版本为 15.10 的 Ubuntu 系统镜像来运行容器,命令如下:

```bash

sudo docker run -t -i ubuntu:15.10 /bin/bash

```

参数说明:

-i:表示交互式运行容器

-t:表示分配一个伪终端

-i:表示分配一个输入流

ubuntu:15.10:表示要使用的镜像名称和标签

/bin/bash:表示在容器内执行的命令

如果我们想要使用版本为 14.04 的 Ubuntu 系统镜像来运行容器,可以使用以下命令:

```bash

sudo docker run -t -i ubuntu:14.04 /bin/bash

```

如果你不指定一个镜像的版本标签,例如你只使用 Ubuntu,Docker 将默认使用 Ubuntu:latest 镜像。

4.2 获取一个新的镜像

使用 `docker pull` 命令下载镜像。下载完成后,我们可以直接使用这个镜像来运行容器。例如,下载最新版的 Ubuntu 镜像:

```bash

sudo docker pull ubuntu:latest

```

4.3 查找镜像

我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为:https://hub.docker.com/。我们也可以使用 `docker search` 命令来搜索镜像。比如我们需要一个 Apache HTTP Server(httpd)的镜像来作为我们的 Web 服务。我们可以通过 `docker search httpd` 命令搜索 httpd 来寻找适合我们的镜像。各个选项说明如下:

- NAME:镜像名称

- DESCRIPTION:镜像描述

- OFFICIAL:是否为官方镜像(是或否)

- stars:star 数量(通常表示受欢迎程度)

- AUTOMATED:是否为自动构建的镜像(是或否)

4.4 拖取镜像

我们决定使用上图中的 httpd 官方版本的镜像,使用 `docker pull` 命令下载镜像。例如,下载最新版的 Ubuntu 镜像:

```bash

sudo docker pull httpd

```

下载完成后,我们就可以使用这个镜像了。例如,运行一个基于 httpd 镜像的容器:

```bash

sudo docker run httpd

```

当我们从 Docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改:

1. 从已经创建的容器中更新镜像,并且提交这个镜像。

2. 使用 Dockerfile 指令来创建一个新的镜像。

4.6.1 更新镜像

更新镜像之前,我们需要使用镜像来创建一个容器。

```bash

yinji@yinji:~$ sudo docker run -t -i ubuntu:15.10 /bin/bash

root@0b09b46d8320:/#

apt-get update

exit

```

此时 ID 为 0b09b46d8320 的容器,是按我们的需求更改的容器。我们可以通过命令 `docker commit` 来提交容器副本。

```bash

yinji@yinji:~$ sudo docker commit -m="has update" -a="yinji" 9c6063148ddb yin/ubuntu:v2

sha256:78af7b53897eba2cd54d511df3af6051a86cf7178c7ef8dad6d8d889d2e2e30e

```

各个选项说明:

-m:提交的描述信息

-a:指定镜像作者

9c6063148ddb:容器 ID

yin/ubuntu:v2:指定要创建的目标镜像名

```bash

docker images

```

使用我们的新镜像 yin/ubuntu 来启动一个容器。

```bash

yinji@yinji:~$ sudo docker run -t -i yin/ubuntu:v2 /bin/bash

root@5aa504c80706:/#

```

4.6.2 构建镜像

可以使用 `docker build FROM RUN docker build` 命令构建镜像。参数说明如下:

- t:指定要创建的目标镜像名

.:Dockerfile 文件所在目录,可以指定 Dockerfile 的绝对路径。

大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。以下是具体的操作步骤:

5.1.1 注册

在 https://hub.docker.com 免费注册一个 Docker 账号。

5.1.2 登录和退出

登录:

登录需要输入用户名和密码,登录成功后,我们就可以从 docker hub 上拉取自己账号下的全部镜像。使用以下命令进行登录:

```

docker login

```

退出:

退出 docker hub 可以使用以下命令:

```

docker logout

```

5.1.3 拉取镜像

要从 Docker Hub 上拉取镜像,可以使用 `docker pull` 命令。例如,要拉取官方的 Ubuntu 镜像,可以使用以下命令:

```

docker pull ubuntu

```

如果需要拉取特定版本的镜像,可以在镜像名称后加上冒号和版本号,例如:

```

docker pull ubuntu:18.04

```

5.1.4 推送镜像

要将本地的镜像推送到 Docker Hub,首先需要为镜像添加标签,格式为 `username/repository:tag`,其中 `username` 是你的 Docker Hub 用户名,`repository` 是仓库名称,`tag` 是镜像的版本标签。添加标签后,使用 `docker push` 命令将镜像推送到 Docker Hub。例如:

```

docker tag ubuntu:18.04 username/ubuntu:18.04

docker image ls

$ docker push username/ubuntu:18.04

```

此外,还可以使用 `docker search` 命令搜索已有的镜像。例如,搜索名为 `username/ubuntu` 的镜像:

```

docker search username/ubuntu

```

以下是重构后的 Dockerfile 内容:

```dockerfile

# 这是一个本地构建的 nginx 镜像

FROM nginx

RUN echo '这是一个本地构建的 nginx 镜像' > /usr/share/nginx/html/index.html

# <命令行命令> 等同于,在终端操作的 shell 命令。

# 例如: # RUN [./test.php, dev, offline] 等价于 RUN ./test.php dev offline

# 从 centos 镜像开始

FROM centos

RUN yum -y install wget &&

wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" &&

tar -xvf redis.tar.gz

# 从 centos 镜像开始

FROM centos

RUN yum -y install wget &&

wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" &&

tar -xvf redis.tar.gz

```

7. Docker 常用命令

7.1 Docker run

docker run:创建一个新的容器并运行一个命令。示例:

```bash

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

-d:--device:-i:--name:--net:-p:--privileged || --privileged=true || --privileged=false:-t:--volume,-v:

```