说明:
1.docker安装参考文档在https://docs.docker.com/
2.docker加速器daocloud在https://www.daocloud.io/mirror。
个人感觉还是下面这个方法加速好用:
找到这个文件/etc/docker/daemon.json,没有创建,添加如下内容,重新启动docker即可。
{
"registry-mirrors":["https://almtd3fa.mirror.aliyuncs.com"]
}
3.docker的镜像官网站https://hub.docker.com/
一、Docker概述
1.什么是容器
容器技术已经成为应用程序封装和交付的核心技术
容器技术的核心有以下几个内核技术组成:
Cgroups(Control Groups)资源隔离
NameSpace进程隔离
SELinux安全
由于是在物理机上实施隔离,启动一个容器,可以像启动一个进程一样快速
2.什么是Docker
Docker是完整的一台容器管理系统
Docker提供了一组命令,让用户更加方便直接的使用容器技术,而不需要过多关心底层内核技术
3.Docker优点
相比于传统的虚拟化技术,容器更加简介高效
传统虚拟机需要给每个VM安装操作系统
容器使用的共享公共库和程序
4.Docker缺点
容器的隔离性没有虚拟化强
共用Linux内核,安全性有先天缺陷
SELinux难以驾驭
监控容器和容器排错是挑战
二、部署Docker
1.安装前准备
需要64位操作系统
至少RHEL6.5以上的版本
关闭防火墙
[root@docker31 ~]# systemctl stop firewalld
[root@docker31 ~]# systemctl disable firewalld
2.安装Docker
[root@docker31 ~]# yum update
[root@docker31 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@docker31 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@docker31 ~]# yum list docker-ce --showduplicates | sort -r
[root@docker31 ~]# yum install docker
[root@docker31 ~]# systemctl start docker
[root@docker31 ~]# systemctl enable docker
[root@docker31 ~]# docker version
[root@docker31 ~]# ifconfig
docker0: flags=4099
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:4c:68:2b:6e txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
三、Docker镜像
1.什么是镜像
在docker中容器是基于镜像启动的
镜像是启动容器的核心
镜像采用分层设计
使用快照的COW技术,确保底层数据不丢失
[root@docker31 ~]# docker images ==>>查看镜像
[root@docker31 ~]# docker search busybox ==>>搜索镜像
[root@docker31 ~]# docker help search ==>>简要帮助信息
[root@docker31 ~]# man docker-search ==>>详细帮助信息
2.Docker Hub镜像仓库
Docker官方提供公共镜像的仓库(Registry)
3.下载,上传镜像
下载镜像(从镜像仓库中下载镜像)
[root@docker31 ~]# docker search busybox
[root@docker31 ~]# docker pull busybox ==>>下载镜像
[root@docker31 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 018c9d7b792b 6 days ago 1.22MB
上传镜像(上传镜像到仓库)
[root@docker31 ~]# docker push busybox
4.导入,导出镜像
导出镜像(将本地镜像导出为tar文件)
[root@docker31 ~]# docker save busybox:latest -o busybox.tar
导入镜像(通过tar包文件导入镜像)
[root@docker32 ~]# docker load -i busybox.tar
514c3a3e64d4: Loading layer 1.442MB/1.442MB
Loaded image: busybox:latest
[root@docker32 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 018c9d7b792b 6 days ago 1.22MB
5.启动镜像
启动centos镜像生成一个容器
[root@docker31 ~]# docker run -it centos:latest /bin/bash
开新终端,查看容器信息
[root@docker31 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
941518d5ac38 busybox:latest "sh" 6 seconds ago Up 5 seconds sharp_beaver
四、Docker基本命令
1)镜像常用命令
1.命令列表
docker images 查看镜像列表
docker history 查看镜像制作历史
docker pull 下载镜像
docker push 上床镜像
docker rmi 删除本地镜像
docker save 镜像另存为tar包
docker load 使用tar包导入镜像
docker search 搜索镜像
docker tag 修改镜像名称和标签
2.docker images
查看镜像列表
镜像仓库名称
镜像标签
镜像ID
创建时间
大小
3.docker history
查看镜像历史
了解镜像制作过程
详细参考后面的dockerfile内容
[root@docker31 ~]# docker history centos:latest
IMAGE CREATED CREATED BY SIZE COMMENT
831691599b88 6 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
4.docker inspect
查看镜像底层信息
了解镜像环境变量,存储卷,标签等信息
[root@docker31 ~]# docker inspect centos:latest
5.docker rmi
删除本地镜像
注意:启动容器时删除镜像会提示错误
[root@docker32 ~]# docker rmi centos:latest
6.docker save|load
保存本地镜像另存为tar文件
方便其他人使用tar包导入镜像
7.docker tag
重命名镜像名称(复制)
[root@docker31 ~]# docker tag busybox:latest nsd:test
[root@docker31 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 018c9d7b792b 6 days ago 1.22MB
nsd test 018c9d7b792b 6 days ago 1.22MB
2)容器常用命令
1.命令列表
docker run 运行容器
docker ps 查看容器列表
docker restart 重启容器
docker attach|exec 进入容器
容器资源限制
2.docker run
使用镜像启动容器
3.docker ps
列出容器列表
docker ps 查看正在运行的容器
docker ps -a 查看所有容器列表
docker ps -aq 仅显示容器id
docker ps -l 显示最新创建的容器
[root@docker31 ~]# docker ps -a
4.docker attach|exec
进入容器
docker attach 进入容器,exit会导致容器关闭
docker exec 进入容器,退出时不会关闭容器
5.docker inspect
查看容器底层信息
6.docker top
查看容器进程列表
[root@docker31 ~]# docker ps -aq
941518d5ac38
b65af08cf5d1
ff8ff4d8596b
[root@docker31 ~]# docker top 941518d5ac38
7.docker rm
删除容器
注意,删除正在运行的容器时会提示错误
[root@docker31 ~]# docker rm 941518d5ac38