Docker 简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker 容器与传统虚拟机的比较
特性 | Docker | 虚拟机 |
启动速度 | 秒级 | 分钟级 |
计算能力损耗 | 几乎无 | 损耗 50% 左右 |
性能 | 接近原生 | 弱于 |
系统支持量 | 上千个 | 几十个 |
隔离性 | 资源限制 | 完全隔离 |
搭建 Docker
1.配置 yum 仓库源 :
vim /etc/yum.repos.d/docker.repo
[docker-repo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
2.安装 Docker :
yum install docker-engine -y
systemctl stop firewalld.service
setenforce 0
systemctl start docker.service #开启服务
systemctl enable docker.service #开机自启
3.查看 docker 版本 :
[root@bogon ~]# docker version
Client:
Version: 17.05.0-ce
API version: 1.29
Go version: go1.7.5
Git commit: 89658be
Built: Thu May 4 22:06:25 2017
OS/Arch: linux/amd64
Server:
Version: 17.05.0-ce
API version: 1.29 (minimum version 1.12)
Go version: go1.7.5
Git commit: 89658be
Built: Thu May 4 22:06:25 2017
OS/Arch: linux/amd64
Experimental: false
Docker 镜像操作
1.搜索镜像 :
命令格式:docker search 关键字
[root@bogon ~]# docker search httpd
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
httpd The Apache HTTP Server Project 1891 [OK]
hypriot/rpi-busybox-httpd Raspberry Pi compatible Docker Image with ... 41
centos/httpd 19 [OK]
centos/httpd-24-centos7 Platform for running Apache httpd 2.4 or b... 15
armhf/httpd The Apache HTTP Server Project 8
......
- NAME:镜像名称
- DESCRIPTION:描述信息
- STARS:星级。表示该镜像受欢迎程度
- OFFICIAL:是否官方创建
- AUTOMATED:是否主动创建
2.下载镜像 :
命令格式:docker pull 仓库名称[:标签]
[root@bogon ~]# docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
d660b1f15b9b: Pull complete
aa1c79a2fa37: Pull complete
f5f6514c0aff: Pull complete
676d3dd26040: Pull complete
4fdddf845a1b: Pull complete
520c4b04fe88: Pull complete
5387b1b7893c: Pull complete
Digest: sha256:8c84e065bdf72b4909bd55a348d5e91fe265e08d6b28ed9104bfdcac9206dcc8
Status: Downloaded newer image for httpd:latest
3.查看镜像信息 :
命令格式:docker images 仓库名称[:标签]
[root@bogon ~]# docker images
[root@bogon ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest 11426a19f1a2 13 days ago 178MB
- REPOSITORY:镜像属于仓库
- TAG:标签信息
- IMAGE ID:镜像的唯一ID
- CREATED:镜像创建时间
- SIZE:大小
4.查看镜像详细信息 :
命令格式:docker inspect 镜像ID
[root@bogon ~]# docker inspect d7e3778f14cb
[
{
"Id": "sha256:d7e3778f14cbbf17426e112e15b72eab02d2742ceabddfec3f6ffe02b761ad3e",
"RepoTags": [
"tomcat:centos"
.......
5.添加镜像标签 :
命令格式:docker tag 名称:[标签] 新名称:[新标签]
[root@bogon ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5182e96772bf 8 days ago 200MB
[root@bogon ~]# docker tag centos test:centos #添加标签
[root@bogon ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5182e96772bf 8 days ago 200MB
test centos 5182e96772bf 8 days ago 200MB
6.删除镜像 :
命令格式:docker rmi 仓库名称:标签 或者 docker rmi 镜像ID
[root@bogon ~]# docker rmi test:centos
Untagged: test:centos
7.存出镜像和载入镜像 :
命令格式:docker save -o 存储文件名 存储镜像
[root@bogon ~]# docker save -o centos centos #默认存放在当前目录
[root@bogon ~]# ls -l centos
-rw-------. 1 root root 208301056 8月 15 14:02 centos
命令格式:docker load < 存出的文件 或者 docker --input 存出的文件
[root@bogon ~]# docker load < centos
Docker 容器操作
1.容器的创建 :
命令格式:docker create [选项] 镜像 运行程序
[root@bogon ~]# docker create -it centos /bin/bash
#-i:让容器输入保持打开 -t:让 Docker 分配一个为终端
4bab9c0c5344d21ef96ad9e476958a061c06f01ea8f09f32dae14aaba3ddfd09
2.运行和停止容器 :
命令格式:docker start 容器ID/名称
[root@bogon ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4bab9c0c5344 centos "/bin/bash" 15 seconds ago Created vibrant_stonebraker
[root@bogon ~]# docker start 4bab9c0c5344
4bab9c0c5344
[root@bogon ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4bab9c0c5344 centos "/bin/bash" 40 seconds ago Up 8 seconds vibrant_stonebraker
命令格式:docker stop 容器ID/名称
[root@bogon ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8ed40d081f44 centos "/usr/bin/bash -c ..." About a minute ago Up About a minute elated_wozniak
4bab9c0c5344 centos "/bin/bash" 13 minutes ago Up 12 minutes vibrant_stonebraker
[root@bogon ~]# docker stop 8ed40d081f44
8ed40d081f44
[root@bogon ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8ed40d081f44 centos "/usr/bin/bash -c ..." About a minute ago Exited (137) 2 seconds ago elated_wozniak
4bab9c0c5344 centos "/bin/bash" 13 minutes ago Up 13 minutes vibrant_stonebraker
docker run centos /usr/bin/bash #使用run命令 镜像不存在会自动下载,自动创建容器,自动开启容器
3.持续运行容器 :
[root@bogon ~]# docker run -d centos /usr/bin/bash -c "while true;do echo hello;done"
#-d 守护进程 while true;do echo hello;done 循环语句 就可以保持容器一值在后台运行
4.容器的进入 :
命令格式:docker exec -it 容器ID/名称 /bin/bash
[root@localhost ~]# docker start 4bab9c0c5344 #开启容器
4bab9c0c5344
[root@localhost ~]# docker exec -it 4bab9c0c5344 /bin/bash
[root@4bab9c0c5344 /]# ls
anaconda-post.log dev home lib64 mnt proc run srv tmp var
bin etc lib media opt root sbin sys usr
5.容器的导入导出 :
命令格式:docker export 容器ID/名称 > 文件名
[root@bogon ~]# docker export 4bab9c0c5344 > test #当前目录
命令格式:cat 文件名 | docker import - 生成的镜像名称:标签
cat tset | docker import - test01:test01
转载于:https://blog.51cto.com/13640803/2160243