docker基本安装
yum安装
- 卸载老版本的Docker
在CentOS中,老版本Docker名称是docker 或docker-engine ,而Docker CE的软件包名称是docker-ce 。因此,如已安装过老版本的Docker,需使用如下命令卸载。
sudo yum remove docker \
docker-common \
docker-selinux \
docker-engine
需要注意的是,执行该命令只会卸载Docker本身,而不会删除Docker存储的文件,例如镜像、容器、卷以及网络文件等。这些文件保存在/var/lib/docker 目录中,需要手动删除。
- 国内源
执行下面的命令添加 yum 软件源:
$ sudo yum-config-manager \
--add-repo \
https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
以上命令会添加稳定版本的 Docker CE yum 源。
- 官方源
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
如果需要最新版本的 Docker CE 请使用以下命令:
$ sudo yum-config-manager --enable docker-ce-edge
$ sudo yum-config-manager --enable docker-ce-test
- 安装Docker
- 执行以下命令,更新yum的包索引
sudo yum makecache fast - 执行如下命令即可安装最新版本的Docker CE
sudo yum install docker-ce
如果提示没有相应的版本安装或者无法安装,可以通过yum install docker方式 - 在生产环境中,可能需要指定想要安装的版本,此时可使用如下命令列出当前可用的Docker版本。
yum list docker-ce.x86_64 --showduplicates | sort -r - 这样,列出版本后,可使用如下命令,安装想要安装的Docker CE版本。
sudo yum install docker-ce- - 启动Docker
sudo systemctl start docker - 验证安装是否正确。这样,Docker将会下载测试镜像,并使用该镜像启动一个容器。
sudo docker run hello-world
- 启动 Docker CE
$ sudo systemctl enable docker
$ sudo systemctl start docker
- 设置开机启动
systemctl enable docker
shutdown -r now 重新启动
systemctl status docker 查看是否启动状态
实现http访问registry
Registry为了安全性考虑,默认是需要https证书支持的.
但是我们可以通过一个简单的办法解决:
#修改/etc/docker/daemon.json文件
#vi /etc/docker/daemon.json
{
"insecure-registries": ["<ip>:5000"]
}
#重启docker
#systemctl daemon-reload
#systemctl restart docker
注::Registry的机器ip地址,在安装registry的节点和客户端需要访问私有Registry的节点都需要执行此步操作。
Docker iptables异常处理
异常提示信息:
Error response from daemon: Cannot restart container 925228b7844c: iptables failed: iptables -t nat -A DOCKER -p tcp -d 0/0 --dport 5000 -j DNAT --to-destination 172.17.0.25:80 ! -i docker0: iptables: No chain/target/match by that name.
重建docker0网络
pkill docker
ifconfig docker0 down
brctl delbr docker0
docker -d
service docker start
如果找不到ifconfig命令,通过命令yum search ifconfig查找
发现ifconfig这个命令是在net-tools.x86_64这个包里,接下来安装这个包就行了,命令:yum install net-tools.x86_64
如果找不到brctl 命令,执行yum install bridge-utils
no route to host问题
- 检查开放端口,不是root要加sudo
firewall-cmd --list-ports - 开启端口
firewall-cmd --zone=public --add-port=5044/tcp --permanent
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效 - 重启防火墙
firewall-cmd --reload #重启firewall - 关闭防火墙命令:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动 - firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
- 启动一个服务:systemctl start firewalld.service
- 在开机时启用一个服务:systemctl enable firewalld.service
创建docker镜像尽量使用alpine(轻量级Linux发行版)
一个简单的使用alpine创建nginx镜像的例子
FROM alpine:latest
# install nginx
RUN apk --update add nginx \
&& mkdir -p /run/nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]