卸载旧版本(如果安装过旧版本的话)
sudo yum remove docker docker-common docker-selinux docker-engine
安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
安装docker
yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
启动并加入开机启动
systemctl start docker
systemctl enable docker
验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version
问题
因为之前已经安装过旧版本的docker,在安装的时候报错
卸载旧版本的包
yum erase docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
再次安装docker
yum install docker-ce
修改成国内镜像
由于国内访问直接访问docker hub网速比较慢,拉取镜像的时间就会比较长。一般我们会使用镜像加速或者直接从国内的一些平台镜像仓库上拉取。
我比较常用的是网易的镜像中心和daocloud镜像市场。
网易镜像中心:https://c.163.com/hub#/m/home/
daocloud镜像市场:https://hub.daocloud.io/
配置阿里云镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
方案一
修改或新增 /etc/docker/daemon.json
vim /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
systemctl restart docker.service
推荐一种删除docker的方法
yum remove docker docker-common docker-selinux docker-engine -y
/etc/systemd -name '*docker*' -exec rm -f {} ;
find /etc/systemd -name '*docker*' -exec rm -f {} \;
find /lib/systemd -name '*docker*' -exec rm -f {} \;
方案二
修改或新增 /etc/sysconfig/docker,在OPTIONS变量后追加参数 --registry-mirror=https://docker.mirrors.ustc.edu.cn
vi /etc/sysconfig/docker
OPTIONS='--selinux-enabled --log-driver=journald --registry-mirror=https://docker.mirrors.ustc.edu.cn'
载入Redis镜像
docker pull training/webapp
启动redis
docker run -d -P redis
- -d:让容器在后台运行。
- -P:将容器内部使用的网络端口映射到我们使用的主机上。
docker ps
PORTS 0.0.0.0:32769->5000/tcp
Docker 开放了 5000 端口映射到主机端口 32769 上。
停止所有的container
docker stop $(docker ps -a -q)
如果想要删除所有container的话再加一个指令:
docker rm $(docker ps -a -q)
查看当前有些什么images
docker images
删除images,通过image的id来指定删除谁
docker rmi <image id>
要删除全部image的话
docker rmi $(docker images -q)
想要删除untagged images,也就是那些id为的image的话可以用
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")