Docker 使用及常用命令
- 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 使用及常用命令的更多相关文章
- Docker 入门指南——常用命令
前面已经介绍了 Docker 的安装方式,本文总结一下使用 Docker 的基本概念和常用命令. 基本概念 镜像 Image 镜像是一些打包好的已有的环境,可以被用来启动和创建容器 容器 Contai ...
- docker 安装与常用命令与常用容器(containers)环境
注意区别 container 与 image 的关系,container 的建立需要 image 的承载,也即 container 依赖 image,停止并删除了 container 并不会删除 im ...
- Docker系列之常用命令操作手册
目录 1.安装虚拟机 2.安装Docker 3.Docker镜像操作 4.Docker容器操作 Docker系列之常用命令操作手册 继上一篇博客Docker系列之原理简单介绍之后,本博客对常用的Doc ...
- Docker基础和常用命令
Docker基础和常用命令 一,Docker 简介 1.1,什么是 Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,nam ...
- Docker入门之常用命令
写在前面 细数当前最流行的技术莫过于容器化和人工智能了,而容器化技术能有今天的热度,Docker可谓功不可没. 让我们一起来回顾一下Docker 是什么? 是一种虚拟化技术 能够将应用程序自动部署到容 ...
- Docker三剑客之常用命令
一.docker-machine 命令 说明 docker-machine create 创建一个 Docker 主机(常用-d virtualbox) docker-machine ls 查看所有的 ...
- Docker安装和常用命令
Docker安装 Docker的安装可以参考 https://docs.docker.com/ 下面的 Get Docker / Docker CE / Linux, 需要关注的主要是CentOS和U ...
- Docker笔记:常用命令汇总
Docker常用命令汇总 启动服务 [root@localhost ~]# service docker start Redirecting to /bin/systemctl start docke ...
- Docker 安装与常用命令介绍
docker的镜像文件作用就是:提供container运行的文件系统层级关系(基于AUFS实现),所依赖的库文件.已经配置文件等等. 安装docker yum install -y docker 启动 ...
- Docker入门以及常用命令
目的: Docker入门 Docker简介 Centos7安装Docker Docker HelloWorld运行原理解析 阿里云镜像仓库配置 Docker常用命令 Docker基本命令 Docker ...
随机推荐
- Cordova 快速入门记录
本篇文章由:http://xinpure.com/cordova-quick-start-recording/ 记一笔 Cordova 官网入门文档 Get Started Fast,言简意该.通俗易 ...
- storyboard,xib
1. 从xib的viewcontroll中启动storyboard 或者 从一个storyboard切换到另一个storyboard: – (IBAction)openStoryboard:(id)s ...
- curl命令常用参数
-a/--append 上传文件时,附加到目标文件 -A/--user-agent <string> 设置用户代理发送给服务器 -anyauth 可以使用“任何”身份验证方法 -b/--c ...
- RTTI、dynamic_cast、typeid、类与类之间的关系uml
一.RTTI Run-time type information (RTTI) is a mechanism that allows the type of an object to be deter ...
- tp模型和数据库操作方法
一.新建的模型名和表名一样,采用驼峰式,如表名user_type模型取名为UserType namespace app\index\model;use think\Model;class UserTy ...
- Dev属性设置
DisplayFormat 设置显示格式如:{0:P}表示显示为百分号模式.如数据源中为0.5.表示出来为50% 2.GridContro总合计及分组合计: 常规总合计直接RunDesigner-Gr ...
- [elk]elasticsearch dashboard+保留10天内索引+导入导出备份
es dashboard 有两款 head 这款我一直在用 https://github.com/mobz/elasticsearch-head 先修改es的配置文件: elasticsearch.y ...
- MYSQL数据库的导出的几种方法
mysql的数据导出几种方法 从网上找到一些问题是关于如何从MySQL中导出数据,以便用在本地或其它的数据库系统之上:以及 将现有数据导入MySQL数据库中. 数据导出 数据导出主要有以下几种方法 ...
- NSString (NSStringPathExtensions)
转自:http://linwwwei.iteye.com/blog/1407520 + (NSString *)pathWithComponents(NSArray *)components 根据co ...
- 跟着百度学PHP[9]-session与cookie的异同
COOKIE cookie是将数据存储在客户端中,以此建立客户端与服务器之间的联系,但是cookie任然有一些局限性: 1.cookie相对不是很安全,容易被盗用导致cookie欺骗. 2.单个的co ...