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. jquery prop('checked', true)解决attr('checked', true)不能选中radio问题

    正如标题所言,使用:prop('checked', true)就可以了

  2. Ubuntu中类似任务管理器的东西?

    Ubuntu里面有没有类似windows中任务管理器的东西呢?怎么打开?谢谢!!!   ================================ 检举| 2009-02-01 16:50提问者 ...

  3. Linux-软件包管理-yum在线管理-光盘yum源

    mount /dev/cdrom /mnt/cdrom 将设备名/dev/cdrom安装到mnt/cdrom挂载点下面mount 查看当前所有挂载信息 cd /etc/yum.repos.d 切换到e ...

  4. Linux命令-权限管理命令:umask

    umask -S 显示用户创建目录或文件时的默认权限 mkdir shuaige 创建一个shuaige目录 ls -ld shuaige 查看shuaige目录当前的权限(和上面默认的权限是一样的) ...

  5. 缺省模板参数(借助标准模板容器实现Stack模板)、成员模板、关键字typename

    一.缺省模板参数 回顾前面的文章,都是自己管理stack的内存,无论是链栈还是数组栈,能否借助标准模板容器管理呢?答案是肯定的,只需要多传一个模板参数即可,而且模板参数还可以是缺省的,如下: temp ...

  6. 输出流格式化(以操纵子方式格式化,以ios类成员函数方式格式化)

    一.以操纵子方式格式化 数据输入输出的格式控制使用系统头文件<iomanip>中提供的操纵符.把它们作为插入操作符<<的输出对象即可.如setiosflags.setw.set ...

  7. 编译安装PHP7并安装Redis扩展Swoole扩展(未实验)

    用PECL自动安装Redis扩展.Swoole扩展 pecl install redis pecl install swool 编译安装PHP7并安装Redis扩展Swoole扩展 在编译php7的机 ...

  8. 基于Redis构建10万+终端级的高性能部标JT808协议的Gps网关服务器(转)

    原文地址:http://www.jt808.com/?p=1282 在开发一个大规模的部标GPS监控平台的时候,就算我们花费再多的时间设计和规划,我们也并不能准确的预测出自己未来的车载终端接入量有多大 ...

  9. 博客已迁移至512z.com

    本博客已迁移至http://blog.512z.com,此处今后不再更新

  10. redis基础之安装和配置(一)

    前言 折腾一下redis在linux环境的安装. ubantu16.04环境下安装 下载安装,依次执行命令; # 从官方网站下载安装包,注意,当前在哪个目录下执行命令,下载的包将在哪个目录下 $ wg ...