Docker及常用操作
镜像、容器和仓库
Docker镜像: 镜像是一个只读的模板,可以用来创建Docker容器。可以直接创建一个镜像,或者是更新已有镜像,或者复制他人的镜像直接使用。
Docker容器: 容器是镜像的实例,用来执行各种应用,可以同时启动多个容器,相互之间是隔离的。
Docker仓库: 仓库用来集中存放镜像文件。仓库可以分为公开仓库和私有仓库,Docker Hub是最大的公开仓库,用户可以在本地网络创建一个私有仓库。
镜像完成之后可以使用push命令上传到仓库,在另外一台机器上使用pull从仓库下载镜像文件。
ubuntu安装docker
Docker要求Ubuntu系统的内核版本高于3.10,使用 uname -r 命令查看系统的内核版本。
ubuntu docker安装:
wget -qO- https://get.docker.com/ | sh
或者:
sudo apt-get install docker.io
Centos安装docker
yum -y install docker
查看本地已有镜像
sudo docker images
REPOSITORY: 镜像所属仓库
TAG: 镜像的标记
IMAGE ID: 镜像的ID号
CREATED: 创建时间
VIRTUAL SIZE: 镜像大小
启动一个容器
使用 docker run 启动一个容器:
sudo docker run -it ubuntu:17.04
或:
sudo docker run -it -d ubuntu:17.04
ubuntu是仓库名称,17.04是镜像的标记。
当利用 docker run 来创建容器时,Docker会检查本地是否存在指定的镜像,不存在就从公有仓库下载。
-t -i -d 参数
sudo docker run -t -i 指令中 -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开,这个伪终端接管了本机的输入输出交互操作,从而容器的bash命令不会自动退出; -d参数使容器在后台运行。
使用 ps 查看活动容器信息
sudo docker ps
查看所有容器(包括已经终止里的容器):
sudo docker ps -a
进入后台运行的容器
sudo docker exec -it 2991520cae60 /bin/sh
2991520cae60 是容器ID
从仓库获取镜像
使用 docker pull 命令从仓库获取镜像:
sudo docker pull ubuntu:17.04
指定镜像标号(17.04)会下载指定镜像,不指定,会获取最新:
sudo docker pull ubuntu
修改已有镜像
先启动镜像的容器:
sudo docker run -it ubuntu:17.04
例如修改是在17.04容器中安装python:
apt-get update
apt-get install python
安装完成之后使用 exit 指令退出容器:
exit
保存容器修改到镜像
sudo docker commit 78b97ea ubuntu:0301
“78b97ea”是需要保存的容器的ID ,ubuntu是仓库名称,0301是新保存的镜像标记。
镜像文件导出和导入
1. 使用 docker save 命令把镜像导出到本地文件:
sudo docker save -o /home/dcrmg/docker/0301.tar ubuntu:0301
2. 使用 docker load 命令把本地镜像文件导入到本地镜像库:
sudo docker load --input /home/dcrmg/docker/0301.tar
删除镜像
使用 docker rmi 命令移除本地镜像:
sudo docker rmi d7eec825bed5
"d7eec825bed5"是镜像的ID(Image ID)
在删除镜像之前需要先用 rm 指令删除掉依赖于这个镜像的所有容器,否则会报以下错误:
unable to delete ef79b6133b17 (must be forced) - image is being used by stopped container 4b40936a1dc6
报错提示给出了容器ID,使用rm 指令依次删除就行了:
sudo docker rm 4b40936a1dc6
从主机复制文件到容器
指令: sudo docker cp host_path containerID:container_path
sudo docker cp ./abc c9dfbddc1a78:/home
从容器复制文件到主机
sudo docker cp containerID:container_path host_path
sudo docker cp c9dfbddc1a78:/home/csd ./0303
挂载本机数据卷(目录)实现文件共享
使用 -v 指令在启动容器时挂载本机数据卷:
sudo docker run -it -v /test:/soft ubuntu:16.04 /bin/bash
1. 冒号前边是主机目录,冒号后边是容器内的目录
2. 冒号后的/soft是会在启动的容器中自动创建的目录,该目录和主机目录下的文件共享,/soft目录需要时绝对路径(要以 '/'开头)
3. 指定的主机目录如果不存在,也会自动创建,最好也是用绝对路径
4. 容器销毁之后,主机目录和数据仍然存在
退出容器但不关闭
Ctrl+P+Q
退出容器并关闭
exit
exit 指令是退出并关闭当前容器,但是没有销毁容器,使用restart指令重新启动容器:
sudo docker restart ID
启动后台运行的容器
sudo docker attach ID
启动已经关闭了的容器
sudo docker restart ID
sudo docker attach ID
保存容器到本地磁盘
sudo docker export ID > /home/docker/abc.tar
使用Dockerfile创建镜像
sudo docker build -t centos_CUDA /home/dockerfile_file
centos_CUDA 是镜像标签, /home/dockerfile_file 是Dockerfile文件所在文件夹
Docker端口映射
启动容器时通过配置宿主机器与容器的端口映射,使外部程序可以通过端口访问容器:
sudo docker run -it -p ipHost:ipContainer Centos:V3 /bin/bash
查看容器和主机的端口映射信息
docker port ID
显示:
8080/tcp -> 0.0.0.0:80
表示把容器的8080端口映射成宿主机器的80端口
或者使用 sudo docker ps 查看 PORTS 列下显示的映射信息
Docker支持中文
使用 locale 和 locale -a 查看当前支持语言和可按装语言:
在容器中执行以下指令安装中文包:
yum -y install kde-l10n-Chinese && yum -y reinstall glibc-common
localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
export LC_ALL=zh_CN.utf8
之后查看语言支持,已经支持中文字符:
以上设置只在当前容器有效,保存容器到新建镜像,在新建镜像上启动的容器中输入以下指令设置中文环境:
export LANG=zh_CN.utf8
或者在启动容器的时候加入指令:
sudo docker run -it -e 'LANG=zh_CN.UTF-8' centos:latest
Docker及常用操作的更多相关文章
- docker 基本常用操作做
docker 基本常用操作做(只列举入门常用的命令) 容器生命周期管理 docker run :创建一个新的容器并运行一个命令 -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDO ...
- docker镜像常用操作的基本命令
1.拉取/下载镜像 docker pull 镜像名称 (可以从网易云镜像中心获取要下载的镜像) 2.查看已经下载的镜像 docker images 3.删除本地镜像 docker rmi ...
- docker的常用操作
查看所有的镜像: docker images 查看所有的容器: docker ps -a 查看正在运行的容器: docker ps 移除容器: docker rm -f 容器id 移除镜像: dock ...
- docker的常用操作之三:网络配置
一, docker安装后容器使用哪些网络类型? 在宿主机执行如下命令: [root@localhost liuhongdi]# docker network ls NETWORK ID NAME DR ...
- docker的常用操作之二:docker内无法解析dns之firewalld设置等
一,如何启动一个已退出的容器? [root@localhost ~]# docker start storage4 说明:架构森林是一个专注架构的博客,地址:https://www.cnblogs.c ...
- docker镜像常用操作
- Docker镜像与容器的常用操作
Docker镜像加速配置:Docker镜像常用操作:Dcoker容器常用操作. 镜像加速器 国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器.国内很多云服务商都提供了国内加 ...
- 容器常用操作 - 每天5分钟玩转 Docker 容器技术(25)
前面讨论了如何运行容器,本节学习容器的其他常用操作. stop/start/restart 容器 通过 docker stop 可以停止运行的容器. 容器在 docker host 中实际上是一个进程 ...
- Docker常用命令汇总,和常用操作举例
Docker命令 docker 常用命令如下 管理命令: container 管理容器 image 管理镜像 network 管理网络 node 管理Swarm节点 plugin 管理插件 secre ...
随机推荐
- 1_jenkins环境搭建
前言 为什么要使用jenkins 可以实现批量部署.管理 支持常见的版本控制工具,git, svn等 发展成熟,使用范围广,容易找到解决方案 插件丰富,可以满足自己的需求 什么是jenkins 简单的 ...
- mysql中一张(居民)表按年龄段查询数据
知识点: 用mysql,按年龄段查询一张居民的数据(各年龄段居民的个数) 1.如:查询resident(居民表),按照各年龄段,统计人数 2.mysql语句如下: select ageproporti ...
- 【cs231n】线性分类笔记
前言 首先声明,以下内容绝大部分转自知乎智能单元,他们将官方学习笔记进行了很专业的翻译,在此我会直接copy他们翻译的笔记,有些地方会用红字写自己的笔记,本文只是作为自己的学习笔记.本文内容官网链接: ...
- vue削笔机
// 1.vue 是异步更新dom // 2.vue修改多次状态,vue 只会渲染一次 // 3.vue变化侦查机制,每次状态的变化都会发出一个渲染信号. // 检查队列中是否存在,不存在将渲染操作添 ...
- iPhone 和Android应用,特殊的链接:打电话,短信,email
下面的这篇文章主要是说,网页中的链接如何写,可以激活电话的功能. 例如,页面中展示的是一个电话号码,当用户在手机浏览器里面点击这个电话号码的时候,手机会弹出拨号的面板,或者是短信程序会启动等. 1. ...
- layui弹窗宽度固定高度自适应界面
//默认上下15px的边距高度,可根据需要修改function layuiDialogFitScreen(){ var layui_title_height=$(window.parent.docum ...
- 新男人八题---AStringGame
终于完成进度男人1/8,为了这题学了sam= = 题意先有一个串,n个子串,两个人轮流每次在子串上加字符,要求加完后还是原串的子串,最后不能加的就是输者,求赢的人 解法:sam之后在构造的状态图上跑s ...
- 如何把数字字符'1'转换为整数(java 实现)
在一些表达式计算时,如 “3+2” 表达式自身是个字符串,通过切片得到的是数字字符和操作符,不能直接进行计算,在表达式计算中需要进行一步操作是,把数字字符'2','3'转化为整数. 如何操作? ...
- BZOJ 1003 [ZJOI2006]物流运输trans ★(Dijkstra + DP)
题目链接 http://www.lydsy.com/JudgeOnline/problem.php?id=1003 思路 先Dijkstra暴力求出i..j天内不变换路线的最少花费,然后dp[i] = ...
- poj3308 Paratroopers 最大流 最小点权覆盖
题意:有一个n*m的矩阵,告诉了在每一行或者每一列安装大炮的代价,每一个大炮可以瞬间消灭这一行或者这一列的所有敌人,然后告诉了敌人可能出现的L个坐标位置,问如何安置大炮,使花费最小.如果一个敌人位于第 ...