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 ...
随机推荐
- jquery prop('checked', true)解决attr('checked', true)不能选中radio问题
正如标题所言,使用:prop('checked', true)就可以了
- Ubuntu中类似任务管理器的东西?
Ubuntu里面有没有类似windows中任务管理器的东西呢?怎么打开?谢谢!!! ================================ 检举| 2009-02-01 16:50提问者 ...
- Linux-软件包管理-yum在线管理-光盘yum源
mount /dev/cdrom /mnt/cdrom 将设备名/dev/cdrom安装到mnt/cdrom挂载点下面mount 查看当前所有挂载信息 cd /etc/yum.repos.d 切换到e ...
- Linux命令-权限管理命令:umask
umask -S 显示用户创建目录或文件时的默认权限 mkdir shuaige 创建一个shuaige目录 ls -ld shuaige 查看shuaige目录当前的权限(和上面默认的权限是一样的) ...
- 缺省模板参数(借助标准模板容器实现Stack模板)、成员模板、关键字typename
一.缺省模板参数 回顾前面的文章,都是自己管理stack的内存,无论是链栈还是数组栈,能否借助标准模板容器管理呢?答案是肯定的,只需要多传一个模板参数即可,而且模板参数还可以是缺省的,如下: temp ...
- 输出流格式化(以操纵子方式格式化,以ios类成员函数方式格式化)
一.以操纵子方式格式化 数据输入输出的格式控制使用系统头文件<iomanip>中提供的操纵符.把它们作为插入操作符<<的输出对象即可.如setiosflags.setw.set ...
- 编译安装PHP7并安装Redis扩展Swoole扩展(未实验)
用PECL自动安装Redis扩展.Swoole扩展 pecl install redis pecl install swool 编译安装PHP7并安装Redis扩展Swoole扩展 在编译php7的机 ...
- 基于Redis构建10万+终端级的高性能部标JT808协议的Gps网关服务器(转)
原文地址:http://www.jt808.com/?p=1282 在开发一个大规模的部标GPS监控平台的时候,就算我们花费再多的时间设计和规划,我们也并不能准确的预测出自己未来的车载终端接入量有多大 ...
- 博客已迁移至512z.com
本博客已迁移至http://blog.512z.com,此处今后不再更新
- redis基础之安装和配置(一)
前言 折腾一下redis在linux环境的安装. ubantu16.04环境下安装 下载安装,依次执行命令; # 从官方网站下载安装包,注意,当前在哪个目录下执行命令,下载的包将在哪个目录下 $ wg ...