docker原理
docker原理框架
生成镜像的两种方式
- 通过
Dockerfile
构建。Dockerfile
是一个用来构建镜像的文本文件,包含了一条条构建镜像所需的指令和说明,可参考Dockerfile文件详解。 通过docker build
命令来从Dockerfile
构建镜像,可参照Docker build 命令。1
docker build [OPTIONS] PATH | URL | -
其中
OPTIONS可选
,PATH/URL/-
选其一,指定源。 示例1 2
$ docker build . # 在当前路径下寻找Dockerfile来构建 $ docker build -t name:tag . # 在当前路径下寻找Dockerfile来构建,并为构建的镜像设定名字name及标签tag
从Docker Hub上直接拉取
在Docker Hub上查找已有的镜像,然后拉取到本地:
docker pull <用户名/镜像名>
配置docker
- 安装
docker
:官方文档 - 将仓库网址改为国内的镜像站
- 打开/
etc/default/docker
文件(需要sudo权限),在文件的底部加上一行1
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"
- 然后重启Docker服务
1
$ sudo service docker restart
- 打开/
- 避免每次命令都输入
sudo
(官方文档):1 2 3 4 5
# 1. Create the docker group. sudo groupadd docker # 2. Add your user to the docker group. sudo usermod -aG docker $USER # 3. Log out and log back in so that your group membership is re-evaluated.
- 安装
nvidia-docker
:官方文档
管理镜像与容器
镜像(image)
- 列出本机的所有
image
文件:docker image ls
- 删除
image
文件:docker rmi <imageName/ID>
容器(container)
- 列出本机正在运行的容器:
docker ps
- 列出本机所有容器,包括终止运行的容器:
docker ps -a
- 终止容器运行:
docker container stop <containerID>
- 删除容器文件:
docker rm <containerName/ID>
- 导出容器:
docker export <OPTIONS> CONTAINER
- 导入容器:
docker import <OPTIONS> file|URL|- [REPOSITORY[:TAG]]
运行镜像
对于需要使用GPU的程序,需要使用nvidia-docker run
通过docker run
命令来运行镜像,可参考docker run
1
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
示例1 - 基础
1
2
3
4
docker run --name <container_name> -it <image_name> # 使用<image_name>镜像来生成一个容器,并为其命名为<image_name>
# -i, or --interactive: Keep STDIN open even if not attached
# -t, or --tty: Allocate a pseudo-TTY
# The -it instructs Docker to allocate a pseudo-TTY connected to the container’s stdin; creating an interactive bash shell in the container
示例2 - Mount volume
1
docker run --name <container_name> -v host_dir:docker_dir -it <image_name> # 将本地文件夹host_dir"挂载到"容器的docker_dir下
比如
1
2
3
docker run --name <container_name> -v ${PWD}:/work -it <image_name> # 将当前路径挂载在容器的/work目录下
# 进入生成的container后
ls # 即可在container中看到${PWD}中文件
其他
参考
网上真是好多docker的优秀教程啊。