title: 27.Docker的安装和使用 CreateTime: 2019-07-11 00:00:27 UpdateTime: 2024-04-10 11:22:11 CategoryName: CloudNative --- # 官方脚本自动安装 操作系统CentOS 7.x最新版本,Linux内核版本必须是3.10以上 ```shell yum -y update curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun ## 如果是arm,建议从 https://download.docker.com/linux/static/stable/aarch64/ 下载静态文件,同时安装 yum install containerd #开机启动docker systemctl start docker systemctl enable docker ``` # 版本校验 ```docker version``` ![](/public/27/image1.jpeg) # 修改镜像地址(非必需,国内加速) 修改 ```/etc/docker/daemon.json``` 文件,如果没有就创建 文件内容如下: ``` { "registry-mirrors": ["https://xuachqgw.mirror.aliyuncs.com"], "insecure-registries": ["10.98.239.102:5000"], "bip":"172.17.0.1/16", "exec-opts": ["native.cgroupdriver=systemd"], "log-driver":"json-file", "log-opts":{"max-size":"10m"} } ``` 注意:如果k8s的coredns出现```No such device or address```错误,去掉```native.cgroupdriver=systemd``` 参考:https://github.com/kubernetes/kubernetes/issues/98006 阿里云的地址可以到阿里云开发者中心自己申请 [https://xuachqgw.mirror.aliyuncs.com](https://xuachqgw.mirror.aliyuncs.com) ![](/public/27/image2.jpeg) # 下载redis镜像 [https://hub.docker.com](https://hub.docker.com) 中搜索 redis 镜像 打开redis镜像页面 ```https://hub.docker.com/_/redis``` ```docker pull redis:7.2.4``` ```7.2.4```是标签,不带标签默认是```latest```最新版本,执行之后镜像文件就下载到docker本地了 # 查看镜像 - 查看所有镜像,重点关注IMAGE ID,后面操作都会用到 ```docker image ls -a``` - 只查看redis镜像,重点关注IMAGE ID,后面操作都会用到 ```docker images redis``` ![](/public/27/image3.jpeg) - 查看所有的容器和镜像状态 ```docker ps -a``` ![](/public/27/image4.jpeg) # 安装redis镜像 ```shell docker run -d --name myredis --restart=always -p 6379:6379 -v $PWD/data:/data redis:4.0 redis-server --appendonly yes ``` 另一种方式,指定配置文件,完全控制,更加灵活,建议使用 ```shell docker run -d --name myredis --restart=always -p 6379:6379 -v /redis/6379/redis.conf:/usr/local/etc/redis/redis.conf redis:4.0 redis-server /usr/local/etc/redis/redis.conf ``` 命令说明: - ```-d``` :后台运行 - ```--name myredis```:容器的名称,可忽略 - ```-m 1g```:容器运行的最大内存,可忽略 - ```--privileged=true```:特权模式,容器具有最大权限,可忽略 - ```--network```代替```--link```,用于多个容器网络联通.network需要先创建,然后使用,例如: ```shell docker network create -d bridge --subnet=192.168.0.0/24 --gateway=192.168.0.100 --ip-range=192.168.0.0/24 my-docker-network docker run --network=my-docker-network --ip=192.168.0.5 -itd --restart=always ``` 是一直尝试重启.实现开机重启容器,```--restart=on-failure:10``` 默认重启10次 - ```-p 6379:6379``` :将主机的6379端口映射到容器的6379端口,redis容器默认就是6379,第一个是主机端口 - ```-v $PWD/data:/data``` :将主机中当前目录下的data挂载到容器的/data,可以同时使用多个 -v 参数 另一种方式: ```-v /redis/6379/redis.conf:/usr/local/etc/redis/redis.conf``` 指定配置文件 ```redis-server --appendonly yes``` :在容器执行redis-server启动命令,并打开redis持久化配置 # 常用命令 通过Image镜像产生容器,一个镜像可以产生多个容器实例.image镜像雷同软件一键安装包,例如redis的一键安装包 执行了run命令,会自动启动,这里是单独启动 启动容器:```docker start 539ffc1ce3b3``` 关闭容器:```docker stop 539ffc1ce3b3``` 更新容器配置 例如设置开机重启: ```docker update --restart=always xxx``` 删除镜像:```docker rmi 镜像Id``` 删除镜像前需要停止引用的镜像的容器. 删除容器:```docker rm 容器Id``` 跟踪日志输出:```docker logs -f 容器Id``` 建议大家看一些docker常用命令的文章. # 执行容器内命令 ```shell # docker exec -it 容器Id 命令 # 例如执行redis的 redis-cli命令: docker exec -it 539ffc1ce3b3 redis-cli # 或者执行容器内shell原始命令 docker exec -it 539ffc1ce3b3 /bin/bash ```