docker使用–(1)容器篇
1. docker下载(略)
2. 配置docker镜像文件(略,在这里我用的是阿里云的镜像)
3. docker拉取镜像
在这里我拉取的是英伟达的ubuntu镜像: nvidia/cuda:10.0-base-ubuntu16.04
也可以拉取其他镜像。
docker pull nvidia/cuda:10.0-base-ubuntu16.04
4.查看镜像
docker images
可看到镜像已经拉取成功。
5 . 用指定镜像创建容器
分为两种:docker run 和docker create
5.1 docker run
在这里,我使用刚才拉取的nvidia/cuda:10.0-base-ubuntu16.04镜像,创建一个容器:
docker run -t -i nvidia/cuda:10.0-base-ubuntu16.04 /bin/bash
-t 表示在新容器内指定一个伪终端或终端
-i 表示允许我们对容器内的 (STDIN) 进行交互
我们在容器内还指定了一个新的命令: /bin/bash ,这将在容器内启动 bash shell
这样我们就可以像平时操作 Ubuntu 一样操作该容器了
命令
-d, --detach Detach模式,默认为守护进程模式,即容器以后台方式运行。
–rm=false 若容器内的进程终止则自动删除容器,禁止和-d选项一起使用。
–sig-proxy=true 将所有信号传递给进程,非TTY模式也一样,但不能传递SIGCHLD、SIGKILL、SIGSTOP信号。
运行一个在后台执行的容器,同时使用控制台管理。
$ docker run -i -t -d ubuntu:latest
运行一个带命令且在后台不断执行的容器,不直接展示容器内部信息。
$ docker run -d ubuntu:latest ping www.docker.com
运行一个在后台不断执行的容器,同时带有命令,程序被终止后还能重启继续跑,可用控制台管理。
$ docker run -d --restart=always ubuntu:latest ping www.docker.com
为容器指定一个名字
$ docker run -d --name=ubuntu_server ubuntu:latest
容器暴露80端口并指定宿主机81端口与其通信(宿主机端口:容器端口)
$ docker run -d --name=ubuntu -p 81:80 ubuntu:latest
指定容器内目录与宿主机目录共享(宿主机目录:容器目录)
$ docker run -d --name=ubuntu_server -v /home/www:/var/www ubuntu:latest
设置宿主机与docker的共享目录
$ docker run -d -i -t -p 80:80 -v /share/swoft:/var/www/swoft --name swoft swoft/swoft /bin/bash
5.2 docker create
docker create与docker run不同的是,它只创建容器,不进入容器。使用方法略
6. 保存新建的容器
(1)在第5中已经进入到新建容器中,此时打开新的终端,首先查看正在运行的容器:
可以看到刚才创建的容器正在运行(为什么该容器与其他两个容器后面的参数不同,是由于创建该容器时,并未指定端口和名称,具体设置查看第5点中的命令)
(2)docker commit 7cbe3ac99b25 honsia/test:v7.30
7cbe3ac99b25为刚才创建的镜像ID
honsia/test:v7.30为新镜像保存的名称
(3)查看是否保存成功: docker images
保存成功!
7.启动容器
docker start
(***注意镜像ID和容器ID,启动容器,不是镜像!!)
8. 退出容器
exit
以下格式为docker + 命令 + **** 表示:无需进入容器即可操作。**** 为容器ID
9. 重启容器
docker restart ****
10. 暂停容器中所有进程
docker pause ****
11. 重启暂停的内容
docker unpause ****
12. 删除容器–区别删除镜像
docker rm ****
docker rm -f (强制删除) ****
docker rmi 镜像名称:TAG
13. 获取容器的日志
docker logs ****