# 1、yum 包更新到最新
yum update
# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、 安装docker,出现输入的界面都按 y
yum install -y docker-ce
# 5、 查看docker版本,验证是否验证成功
docker -v
环境查看
#uname -r 系统内核3.10 以上
[root@xsxy /]# uname -r
3.10.0-1127.10.1.el7.x86_64
[root@xsxy /]#
[root@xsxy /]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
[root@xsxy /]#
开始安装docker
1.卸载旧版本
较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.安装 Docker Engine-Community
使用 Docker 仓库进行安装
在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。
3.设置仓库
安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
使用以下命令来设置稳定的仓库。
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.安装Docker CE
1.执行以下命令,更新yum的包索引
yum makecache fast
5.安装 Docker Engine-Community
安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:
ce 社区 ee企业
yum install docker-ce docker-ce-cli containerd.io
启动 Docker。
systemctl start docker
6.查看是否安装成功
docker version
7.通过运行 hello-world
映像来验证是否正确安装了 Docker Engine-Community 。
docker run hello-world
8.查看下载Hello-word 镜像
[root@xsxy ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 6 months ago 13.3kB
阿里云镜像加速
1.登陆阿里云,找到容器镜像服务
2.找到镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://wqnx8lwt.mirror.aliyuncs.com"]
}
EOF
#关闭
sudo systemctl daemon-reload
#重启
sudo systemctl restart docker
docker常用命令
帮助命令
docker version #版本信息
docker info #系统信息,包括镜像和容器的数量
docker 命令 --help #万能命令
docker容器命令
容器列表
docker ps
docker ps -a # 查看所有容器 -----包含正在运行 和已停止的
导入和导出容器
export:导出容器的内容流作为一个tar归档文件(对应import命令);
import:从tar包中的内容创建一个新的文件系统再导入为镜像(对应export命令);
示例:
# 导出
# docker export 容器ID > tar文件名
docker export abc > aaa.tar
# 导入
# cat tar文件 | docker import - 自定义镜像用户(包名)/自定义镜像名:自定义镜像版本号
cat aaa.tar | docker import - test/mytest:1.0.1
进入正在运行的容器
进入正在运行的容器,并以命令行交互:
docker exec -it 容器ID bashShell
重新进入:
docker attach 容器ID
docker exec 和 docker attach 区别:
● attach直接进入容器启动命令的终端,不会启动新的进程,用 exit 退出会导致容器的停止
● exec是在容器中打开新的终端,并且可以启动新的进程,用 exit 退出不会导致容器的停止
如果有多个终端,都对同一个容器执行了 docker attach,就会出现类似投屏显示的效果。一个终端中输入输出的内容,在其他终端上也会同步的显示。
容器和宿主机文件拷贝
容器内文件拷贝到宿主机:
docker cp 容器ID:容器内路径 目的主机路径
宿主机文件拷贝到容器中:
docker cp 主机路径 容器ID:容器内路径
docker容器卷
卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过UnionFS,提供一些用于持续存储或共享数据。
特性:卷设计的目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。
特点:
● 数据卷可以在容器之间共享或重用数据
● 卷中的更改可以直接实施生效
● 数据卷中的更改不会包含在镜像的更新中
● 数据卷的生命周期一直持续到没有容器使用它为止
运行一个带有容器卷存储功能的容器实例:
docker run -it --privileged=true -v 宿主机绝对路径目录:容器内目录[rw | ro] 镜像名
可以使用 docker inspect 查看容器绑定的数据卷。
权限:
● rw:读写 (默认是)
● ro:只读。如果宿主机写入内容,可以同步给容器内,容器内可以读取。
–privileged=true 权限扩容,保证root用户在容器有最高权限
容器卷的继承:
# 启动一个容器
docker run -it --privileged=true /tmp/test:/tmp/docker --name u1 ubuntu /bin/bash
# 使用 --volumes-from 继承 u1的容器卷映射配置
docker run -it --privileged=true --volumes-from u1 --name u2 ubuntu