前段时间在网上学习docker的安装,以下方式是我亲测可用的安装教程,建议Centos 8系统下安装,更完善。
前提条件
强烈建议使Centos 8进行安装。Docker 支持 64 位版本 CentOS 7/8,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定。
卸载旧版本Docker(不管有没有都执行一下没错的)
旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本:
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
安装Docker
使用 yum 安装
执行以下命令安装依赖包:
sudo yum install -y yum-utils
国内用户请您使用国内源(如阿里云),否则速度感人(有国外线路的另论),官方源请在注释中查看。
执行下面的命令添加 yum 软件源:
sudo yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
官方源(不建议国内用户使用)
sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
如果需要测试版本的 Docker 请执行以下命令:
sudo yum-config-manager --enable docker-ce-test
yum 安装Docker
更新 yum 软件源缓存,并安装 docker-ce。
sudo yum install docker-ce docker-ce-cli containerd.io
使用脚本自动安装
在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS 系统上可以使用这套脚本安装,另外可以通过 –mirror 选项使用国内源进行安装:
若你想安装测试版的 Docker, 请从 test.docker.com 获取脚本
curl -fsSL test.docker.com -o get-docker.sh curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh --mirror Aliyun sudo sh get-docker.sh --mirror AzureChinaCloud
执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 的稳定(stable)版本安装在系统中。
CentOS8 额外设置(绕过nftables)
由于 CentOS8 防火墙使用了 nftables,但 Docker 尚未支持 nftables, 我们可以使用如下设置使用 iptables:
更改 /etc/firewalld/firewalld.conf
# FirewallBackend=nftables FirewallBackend=iptables
或者执行如下命令
firewall-cmd --permanent --zone=trusted --add-interface=docker0 firewall-cmd --reload
启动 Docker
sudo systemctl enable docker sudo systemctl start docker
建立 docker 用户组
默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。
建立 docker 组
sudo groupadd docker
将当前用户加入 docker 组
sudo usermod -aG docker $USER
退出当前终端并重新登录,进行如下测试。
最后测试 Docker 是否安装正确
若能正常输出以上信息,则说明安装成功。
==============================华丽的分割线=======================================
附:主要Docker的命令
生命周期命令
创建一个容器(不启动它):
docker create [IMAGE]
重命名现有容器
docker rename [CONTAINER_NAME] [NEW_CONTAINER_NAME]
在新容器中运行命令
docker run [IMAGE] [COMMAND]
退出后移除容器
docker run –rm [IMAGE]
启动一个容器并保持运行
docker run -td [IMAGE]
启动一个容器并在容器中创建一个交互式 bash shell
docker run -it [IMAGE]
在容器内创建、启动和运行命令,并在执行命令后移除容器。
docker run -it-rm [IMAGE]
在已经运行的容器内执行命令。
docker exec -it [container]
删除一个容器(如果它没有运行)
docker rm [CONTAINER]
更新容器的配置
docker update [CONTAINER]
启动和停止容器
启动容器
docker start [CONTAINER]
停止运行容器
docker stop [CONTAINER]
停止运行容器并重新启动它
docker restart [CONTAINER]
暂停正在运行的容器中的进程
docker pause [CONTAINER]
取消暂停正在运行的容器中的进程
docker unpause [CONTAINER]
阻塞一个容器直到其他容器停止
docker wait [CONTAINER]
通过向正在运行的容器发送 SIGKILL 来杀死容器
docker kill [CONTAINER]
将本地标准输入、输出和错误流附加到正在运行的容器
docker attach [CONTAINER]
Docker 镜像命令
从 Dockerfile 创建镜像
docker build [URL/FILE]
从带有标签的 Dockerfile 创建镜像
docker build -t <tag> [URL/FILE]
从注册表中心拉取镜像
docker pull [IMAGE]
将镜像推送到注册中心
docker push [IMAGE]
从 tarball 创建镜像
docker import [URL/FILE]
从容器创建镜像
docker commit [CONTAINER] [NEW_IMAGE_NAME]
删除镜像
docker rmi [IMAGE]
从 tar 存档或标准输入加载镜像
docker load [TAR_FILE/STDIN_FILE]
将镜像保存到 tar 存档
docker save [IMAGE] > [TAR_FILE]
Docker 容器和镜像信息
列出正在运行的容器
docker ps
列出正在运行的容器和已停止的容器
docker ps -a
列出正在运行的容器中的日志
docker logs [CONTAINER]
列出 Docker 对象的低级信息
docker inspect [OBJECT_NAME/ID]
列出来自容器的实时事件
docker events [CONTAINER]
显示容器的端口映射
docker port [CONTAINER]
显示容器中正在运行的进程
docker top [CONTAINER]
显示容器的实时资源使用统计
docker stats [CONTAINER]
显示文件系统上文件(或目录)的更改
docker diff [CONTAINER]
列出本地使用 docker 引擎存储的所有镜像
docker [image] ls
显示镜像的历史
docker history [IMAGE]
网络命令
列出网络
docker network ls
删除一个或多个网络
docker network rm [NETWORK]
显示一个或多个网络的信息
docker network inspect [NETWORK]
将容器连接到网络
docker network connect [NETWORK] [CONTAINER]
断开容器与网络的连接
docker network disconnect [NETWORK] [CONTAINER]