# Docker tutorial

Created on Wed, 02 Dec 2019, 06:00PM

Last changed on Wed, 04 Dec 2019, 05:58PM

> `Docker`常用命令手册

* 运行Nvidia-docker

```bash
sudo nvidia-docker run --runtime=nvidia -it -d -p 8888:8888 -p 6006:6006 -v $(pwd):/tf/ tensorflow/tensorflow:latest-gpu-py3-jupyter
--rm # 停止后即删除
```

```bash
sudo docker pull tensorflow/tensorflow:latest-gpu-py3-jupyter
# docker pull 
sudo docker images
docker run --help
docker run [-it] some-image # 创建某个镜像的容器。注意，同一个镜像可以通过这种方式创建任意多个container. 加上-it之后，可以创建之后，马上进入交互模式。
docker rm container-id # 删除某个容器
docker start [-i] container-id # 启动某个容器，必须是已经创建的。 加上-i 参数之后，可以直接进入交互模式：
docker attach container-id # 进入交互模式的另一种方式
# 进入交互模式之后，想退出但是保持容器运行，按CTRL+Q+P三个键
# 退出，并关闭停止容器，按CTRL+D或者输入exit再回车
```

* 容器备份

先通过`docker ps`或者`docker ps -a`来查看你想备份的容器的id， 然后通过：

```
docker commit -p [your-container-id] [your-backup-name]
```

来将id为your-container-id的容器创建成一个镜像快照。

接着，你通过`docker images`就可以查看到刚刚创建好的镜像快照了。 然后，通过：

```
docker save -o [path-you-want-to-save/your-backup-name.tar]] [your-backup-name]
```

把那个镜像打包成tar文件，保存到服务器上。 后面就可以把服务器上打包好的tar文件，下载到本地了。

恢复： `docker load -i your-backup-name.tar`

`docker run -d -p 80:80 your-backup-name`

* 其他

```bash
docker run \
    --interactive \
    --tty \
    --volume $(pwd):/federated \
    --workdir /federated \
    tensorflow_federated \
    bash
    
sudo nvidia-docker run --runtime=nvidia \
    --interactive \
    -p 8896:8888 \
    -p 6003:6006 \
    --tty \
    --volume $(pwd):/federated \
    --workdir /federated \
    tensorflow_federated:v0.11-py3-jupyter \
    bash
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.junyangz.com/ops/docker-tutorial.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
