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
```
. 创建镜像
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:
```