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. 不经意的小错误——onclick和click的区别

    可能注意不到的错误,编写jquery时发现没有自己想要的效果,结果通过代码比对软件才发现原来将click写成了onclick,虽然看着差不多,但意义却不相同,简单区别如下: $().click() 是 ...

  2. 神经网络中 BP 算法的原理与 Python 实现源码解析

    最近这段时间系统性的学习了 BP 算法后写下了这篇学习笔记,因为能力有限,若有明显错误,还请指正. 什么是梯度下降和链式求导法则 假设我们有一个函数 J(w),如下图所示. 梯度下降示意图 现在,我们 ...

  3. 那些最好的轮子 - PHP篇

    转载于:http://avnpc.com/pages/best-wheels-for-php 在关于不要重复造轮子的二三事一文中,交代了一些背景和想法.本篇则完全是一些干货,列举一些我用过或者即将会用 ...

  4. “cvc-complex-type.2.4.a: Invalid content was found starting with element 'taglib'”错误的解决办法

    <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" ...

  5. php.ini中的pcre

    当页面代码没有任何问题,也没有报错.但是页面的循环很多,请求导致开销很大的时候,有可能要改php.ini中的pcre部分. [Pcre]pcre.recursion_limit=-1pcre.back ...

  6. SIP/2.0 403 Forbidden(Invalid domain in From: header)

    一.错误场景 FreeSWITCH通过网关和一台支持SIP的网关设备互联,一个呼叫发过去,收到这个错误. FreeSWITCH的地址是192.168.1.99. 网关设备的地址是192.168.1.2 ...

  7. AutoFac文档6(转载)

    目录 开始 Registering components 控制作用域和生命周期 用模块结构化Autofac xml配置 与.net集成 深入理解Autofac 指导 关于 词汇表 实例生命周期 实例生 ...

  8. AutoFac文档(转载)

    目录 开始 注册组件 控制范围和生命周期 用模块结构化Autofac xml配置 与.net集成 深入理解Autofac 指导 关于 词汇表 开始 程序集 如果你正在使用Nuget包管理器,你可以通过 ...

  9. Nginx配置优化详解

    如果你已经安装过Nginx并在生产环境中使用,那么Nginx配置优化你一定也要做,这样才能看到Nginx性能,本文就从基本配置优化开始到高层配置教你如何优化Nginx 大多数的Nginx安装指南告诉你 ...

  10. **alon_MM DMA Interface for PCIe使用详解

    在所从事的项目中需要用到PCIE和DMA,经过再三研究,反复查看相关资料,终于弄懂了**alon_MM DMA Interface for PCIe的使用方法. PCIE在fpga和上位机之间起着中间 ...