Centos/Ubuntu Docker安装教程及常用命令,使用Alinux3搭建部署Docker报错
(全新安装请忽略)要是之前安装过,可以进行卸载然后再安装,旧版本的 Docker 的名称为docker、docker.io或 docker-engine。安装新版本之前卸载任何此类旧版本。
#Ubuntu
sudo apt-get remove docker docker-engine docker.io containerd runc
#centos
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
一、Centos安装
1、添加稳定的Docker软件源
sudo yum install dnf-plugins-core
dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#或者使用 yum-config-manager
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#docker源
官方地址:https://download.docker.com/linux/centos/docker-ce.repo
阿里云:https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
清华大学:https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
2、查看已添加的Docker软件源
dnf list docker-ce
如果出现报错:repo 'docker-ce-stable' 下载元数据失败,是因为 Alinux3 会默认把 centos 版本使用3,所以修改为8即可,执行以下命令:
vim /etc/yum.repos.d/docker-ce.repo
将所有 $releasever 字段全部改为 8 即可,再次执行:
dnf list docker-ce
3、部署安装docker引擎
(1)安装最新版本
sudo yum install docker-ce docker-ce-cli containerd.io
(2)安装指定版本
获取指定版本列表:
yum list docker-ce --showduplicates | sort -r
安装指定版本:
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
如果提示您接受GPG密钥,请验证指纹是否匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35,如果是,则接受它
4、启动docker
sudo systemctl start docker
如果报错:
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
执行以下命令即可解决:
yum install device-mapper-devel
5、校验docker是否启动成功
sudo docker run hello-world
6、配置开机自启
sudo systemctl start docker #启动
sudo systemctl enable docker #配置开机自启
docker安装结束......
7、把镜像库改为阿里的镜像库
(1)创建daemon.json
sudo vim /etc/docker/daemon.json
(2)添加以下内容
{
"registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"]
}
(3)重启Docker
systemctl daemon-reload
systemctl restart docker
二、Ubuntu安装
1、更新包管理器
sudo apt update
2、安装 Docker 的依赖包
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
3、添加 Docker GPG 密钥
#官方
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
#阿里云
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
4、添加 Docker apt 仓库
#官方Docker镜像源
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
#阿里云Docker镜像源
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
5、更新 apt 缓存
sudo apt update
6、安装 Docker
sudo apt install docker-ce docker-ce-cli containerd.io
7、启动 Docker 服务
sudo systemctl start docker
8、确认 Docker 已经正确安装
sudo docker run hello-world
如果 Docker 正确安装,会显示一些信息并打印一条消息说 “Hello from Docker!”。
三、Docker常用命令
1、基本概念
Docker 包括三个基本概念:
- 镜像(
Image
):Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。 - 容器(
Container
):镜像(Image
)和容器(Container
)的关系,就像是面向对象程序设计中的类
和实例
一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。 - 仓库(
Repository
):仓库(Repository
)类似Git的远程仓库,集中存放镜像文件。
如下图所示:
2、服务
#查看Docker版本信息
docker version
#查看docker简要信息
docker -v
#启动Docker
systemctl start docker
#关闭docker
systemctl stop docker
#设置开机启动
systemctl enable docker
#重启docker服务
service docker restart
#关闭docker服务
service docker stop
3、镜像
(1)镜像仓库
Docker Hub 等镜像仓库上有大量的高质量的镜像可以用,可以从仓库获取镜像。
#检索镜像
docker search 关键字
#拉取镜像
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
#列出镜像
docker image ls
docker images
#删除镜像-删除指定镜像
docker rmi <镜像Id>
#导出镜像-将镜像保存为归档文件
docker save
#导入镜像
docker load
(2)Dockerfile构建镜像
Dockerfile 是一个文本格式的配 文件,用户可以使用 Dockerfile 来快速创建自定义的镜像。
Dockerfile 由一行行行命令语句组成,并且支持以#开头的注释行.
(3)Dockerfile常见指令
下面是Dockerfile中一些常见的指令:
- FROM:指定基础镜像
- RUN:执行命令
- COPY:复制文件
- ADD:更高级的复制文件
- CMD:容器启动命令
- ENV:设置环境变量
- EXPOSE:暴露端口
其它的指令还有ENTRYPOINT、ARG、VOLUME、WORKDIR、USER、HEALTHCHECK、ONBUILD、LABEL等等。
以下是一个Dockerfile实例:
FROM java:8
MAINTAINER "jinshw"<jinshw@qq.com>
ADD mapcharts-0.0.1-SNAPSHOT.jar mapcharts.jar
EXPOSE 8080
CMD java -jar mapcharts.jar
#镜像构建
docker build
#镜像运行
docker run [镜像ID]
4、容器
(1)容器生命周期
#1、启动:启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。# 新建并启动
docker run [镜像名/镜像ID]
# 启动已终止容器
docker start [容器ID]
#2、查看容器
# 列出本机运行的容器
$ docker ps
# 列出本机所有的容器(包括停止和运行)
$ docker ps -a
#3、停止容器
# 停止运行的容器
docker stop [容器ID]
# 杀死容器进程
docker kill [容器ID]
#4、重启容器
docker restart [容器ID]
#5、删除容器
docker rm [容器ID]
(2)进入容器
进入容器有两种方式:
# 如果从这个 stdin 中 exit,会导致容器的停止
docker attach [容器ID]
# 交互式进入容器
docker exec [容器ID]
进入容器通常使用第二种方式,docker exec
后面跟的常见参数如下:
- d, --detach 在容器中后台执行命令; - i, --interactive=true I false :打开标准输入接受用户输入命令
5、导出和导入
#导出一个已经创建的容器到一个文件
docker export [容器ID]
# 导出的容器快照文件可以再导入为镜像
docker import [路径]
6、其它
查看日志
docker logs [容器ID]
这个命令有以下常用参数 -f : 跟踪日志输出
- --since :显示某个开始时间的所有日志
- -t : 显示时间戳
- --tail :仅列出最新N条容器日志
复制文件
# 从主机复制到容器
sudo docker cp host_path containerID:container_path
# 从容器复制到主机
sudo docker cp containerID:container_path host_path