https://yeasy.gitbooks.io/docker_practice/content/image/dockerfile/expose.html docker practice 资料
-----------------------------------------------
创建及运行对应的容器
NVIDIA的GPU,需要使用nvidia-docker替换docker执行
-----------------------------------------------
sudo systemctl start docker 启动docker
sudo docker run hello-world 测试是否安装成功
docker system df 查看镜像、容器、数据卷所占用的空间
docker image ls -a
docker pull ubuntu:16.04 下载镜像
docker image ls 列出已经下载下来的镜像
docker ps -a ,容器exited状态下,可以通过此命令查看对应的ID
docker image ls -f dangling=true 查看虚悬镜像
docker image prune 删除虚悬镜像
docker image rm 镜像ID 删除镜像
docker volume rm containerID 删除对应的容器及对应的卷 ----------------------------------------------
docker 镜像保存及加载
----------------------------------------------
docker commit <container-id> <image-name> #先保存container环境到的镜像image-name下,然后save保存后的镜像
docker save <-o save-name.tar> <image-name> #保存到tar文件后,可以删除这个commit的image-name镜像
docker load -i to-loaded-image.tar
docker tag imageID REPOSITORYNewName:TAGNewName 修改image镜像的名字,原来的老名字是不变的,只是重新取了一个名字而已,所以也可以删除
----------------------------------------------
从image中启动container,操作容器,进入容器,
如果是NVIDIA需要使用nvidia-docker
----------------------------------------------
1,docker run -dit --shm-size 8G -P -p 10022:22 -e PASSWORD=<password> --name containerName --volume /home/ubuntu/github:/workspace/github ImageName
docker run -dit -P ImageName ,通过ImageName或者imageID启动创建容器,
-P,--publish-all=false 指定容器暴露的端口,会自动随机映射 EXPOSE 的端口,
或者-p 10022:22 --publish=[] 指定容器暴露的端口,映射自己设置的端口号10022到docker的22号端口号,创建完自己的docker,
然后安装apt-get install openssh-client openssh-server,passwd设置密码,允许root登录权限 /etc/ssh/sshd_config 调整PermitRootLogin参数值为yes,service ssh restart重启生效;
下次登录这个docker服务器,可以直接使用ssh -p 10022 root@ip 登录,这里的端口号要和创建docker映射的端口号一致
-i, --interactive=false 打开STDIN,用于控制台交互;
-t, --tty=false 分配tty设备,该可以支持终端登录,默认为false;
--rm=false 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
--volume 会加载主机的绝对路径/home/ubuntu/github目录到容器的/workspace/github目录,也可以挂载对应的文件,这种数据卷独立于容器,Docker 不会在容器被删除后
自动删除,所以在删除对应的容器的时候,添加上volume参数,也删除对应的卷,不然很占用无用的空间docker volume rm containerID,但是源目录一定得是绝对路径
--name 给创建的容器命名
--net host创建和host一致IP的容器
2,docker container ls 查看刚才开启的容器,
3, docker start containerID 启动容器,包括可以启动已经退出过的容器
4,docker exec -it ContainerID bash 运行容器,推荐使用exec方式,因为如果从这个 stdin 中 exit,不会导致容器的停止
只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。
当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。如果使用 -d 参数时,容器启动后会进入后台,
6,docker attach containerID 也可以进入对应的容器,但是在stdin中exit后,容器会停止,慎用,5,docker inspect SannyTest 查看容器的相关
7, docker restart $CONTAINERID 重新启动容器
8,临时退出一个正在交互的容器的终端,而不终止它:
按 Ctrl-p Ctrl-q 。如果按 Ctrl-c 往往会让容器内应用进程终止,进而会终止容器
--------------------------------------------
使用 Dockerfile 定制镜像:
--------------------------------------------
使用Dockerfile构建镜像:在Dockerfile所在的目录运行“docker build -t sanny:v1 ."
Dockerfile文件书写例如:
FROM nvidia/cuda:8.0-cudnn6-devel-ubuntu16.04 #继承的父容器
MAINTAINER sanny #作者
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
cmake \
tmux \
vim \
git \
wget \
curl \
ca-certificates \
libjpeg-dev \
libpng-dev \
libatlas-base-dev \
libboost-all-dev \
libgflags-dev \
libgoogle-glog-dev \
libhdf5-serial-dev \
libleveldb-dev \
liblmdb-dev \
libopencv-dev \
libprotobuf-dev \
libsnappy-dev \
protobuf-compiler \
python-dev \
python-numpy \
python-pip \
python-setuptools \
python-scipy && \
rm -rf /var/lib/apt/lists/* \
&& echo "root:root" | chpasswd #设置密码
EXPOSE 22
#EXPOSE 声明端口,详见docker_practice P90
# 格式为 EXPOSE <端口1> [<端口2>...]。
#在 Dockerfile 中写入这样的声明有两个好处,一个是帮助镜像使用者理解这个镜像服务的守护端口,
# 以方便配置映射;另一个用处则是在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口
CMD /etc/init.d/nginx start #启动服务
WORKDIR /workspace
bash界面输出中文乱码,添加中文的支持:
locale -a 查看中文支持情况,apt-get install language-pack-zh-hans,然后在/etc/bash.bashrc 添加 export LC_ALL='zh_CN.UTF-8', source bash.bashrc,然后需要重启nvidia-docker restart containerID
docker exec -it CONTAINER env LANG=C.UTF-8 bash
添加可视化远程界面:使用安装docker vnc
将docker权限添加给普通用户
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
--------------------------------------------------
将新的container修改的东西,重新commit到对应的image
虽然新制作了对应的image,但是上一层的image没法删除
--------------------------------------------------
1,[mydocker@test ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
96621f37028c 0ef2e08ed3fa "/bin/bash" 3 minutes ago Up 3 minutes thirsty_torvalds
2,然后:docker commit 96621f37028c 0ef2e08ed3fa
3,docker ps -a 查看新的image

Docker 使用及常用命令的更多相关文章

  1. Docker 入门指南——常用命令

    前面已经介绍了 Docker 的安装方式,本文总结一下使用 Docker 的基本概念和常用命令. 基本概念 镜像 Image 镜像是一些打包好的已有的环境,可以被用来启动和创建容器 容器 Contai ...

  2. docker 安装与常用命令与常用容器(containers)环境

    注意区别 container 与 image 的关系,container 的建立需要 image 的承载,也即 container 依赖 image,停止并删除了 container 并不会删除 im ...

  3. Docker系列之常用命令操作手册

    目录 1.安装虚拟机 2.安装Docker 3.Docker镜像操作 4.Docker容器操作 Docker系列之常用命令操作手册 继上一篇博客Docker系列之原理简单介绍之后,本博客对常用的Doc ...

  4. Docker基础和常用命令

    Docker基础和常用命令 一,Docker 简介 1.1,什么是 Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,nam ...

  5. Docker入门之常用命令

    写在前面 细数当前最流行的技术莫过于容器化和人工智能了,而容器化技术能有今天的热度,Docker可谓功不可没. 让我们一起来回顾一下Docker 是什么? 是一种虚拟化技术 能够将应用程序自动部署到容 ...

  6. Docker三剑客之常用命令

    一.docker-machine 命令 说明 docker-machine create 创建一个 Docker 主机(常用-d virtualbox) docker-machine ls 查看所有的 ...

  7. Docker安装和常用命令

    Docker安装 Docker的安装可以参考 https://docs.docker.com/ 下面的 Get Docker / Docker CE / Linux, 需要关注的主要是CentOS和U ...

  8. Docker笔记:常用命令汇总

    Docker常用命令汇总 启动服务 [root@localhost ~]# service docker start Redirecting to /bin/systemctl start docke ...

  9. Docker 安装与常用命令介绍

    docker的镜像文件作用就是:提供container运行的文件系统层级关系(基于AUFS实现),所依赖的库文件.已经配置文件等等. 安装docker yum install -y docker 启动 ...

  10. Docker入门以及常用命令

    目的: Docker入门 Docker简介 Centos7安装Docker Docker HelloWorld运行原理解析 阿里云镜像仓库配置 Docker常用命令 Docker基本命令 Docker ...

随机推荐

  1. yum groupinstall报错,处理方法

    http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/21/3089970.html ===== 创建repo库 # createrepo - ...

  2. 17、Cocos2dx 3.0游戏开发找小三之内置的经常使用层:三剑客LayerColor、LayerGradient、Menu

    重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30477587 为了方便游戏开发人员.Cocos2d- ...

  3. Kubuntu 初始配置

    1.中文配置 系统设置中地区选择中国.语系使用简体中文(一開始可能仅仅有英文选项,似乎是更新后能够选择其它语言了) 安装中文字体: sudo apt-get install ttf-wqy-micro ...

  4. Redis总结(三)Redis 的主从复制(转载)

    接着上一篇,前面两篇我总结了<Redis总结(一)Redis安装>和<Redis总结(二)C#中如何使用redis> 所以这一篇,会讲讲Redis 的主从复制以及C#中如何调用 ...

  5. [Asp.net]IIS经典和继承模式

    引言 由于要在客户那里部署项目,就研究了一下IIS中的集成和经典模式,这里做一些笔记.希望对您有所帮助. IIS7.0和IIS6.0 IIS7.0的web应用程序有两种配置模式:经典模式和集成模式.经 ...

  6. Windows快捷键命令

    1. 新建一个文件夹: Ctrl + shift + N; 2. Windows 查看端口信息: 1.进入cmd窗口; 2.netstat -ano : 列出所有端口的情况.在列表中我们观察被占用的端 ...

  7. 我使用过的Linux命令之clear - 清除终端屏幕,不是cls

    原文链接:http://codingstandards.iteye.com/blog/804213 用途说明 clear命令是用来清除终端屏幕的(clear the terminal screen), ...

  8. JVM虚拟机(三):参数配置

    在虚拟机运行的过程中,如果可以跟踪系统的运行状态,那么对于问题的故障排查会有一定的帮助,为此,虚拟机提供了一些跟踪系统状态的参数,使用给顶的参数执行java虚拟机,就可以在系统运行时打印相关日志,用于 ...

  9. eclipse下修改默认编码

    window-preferences-右侧选项卡-General-Workspace-Text file encoding

  10. COM方式实现C++调用C#代码的一些总结

    首先这个测试没成功,只在本机上可行,在不同机器上测试失败.可能是GUID不对或者没注册成功. 既然已经花了一上午时间去研究,还是总结一下 1.网上说要创建一个snk证书,但不创建也可以.只不过不能放入 ...