下面的操作是在root用户下操作的,如果非root用户在命令行前加上sudo
1. 系统及内核查看
- 操作系统:64位的CentOS 7或更新版本。
- 内核版本:最低要求是3.10,推荐使用3.10或更高版本。
#查看内核版本
(base) [klfwjfwea@VM-0-6-centos ~]$ uname -r
3.10.0-1160.24.1.el7.x86_64#查看系统版本
(base) [klfwjfwea@VM-0-6-centos ~]$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)#查看系统架构
(base) [klfwjfwea@VM-0-6-centos ~]$ uname -m
x86_64
2. 卸载旧版本
不确定是否安装过docker也可以执行,卸载时会提升找不到相应的包,如下所示:
yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
# yum remove docker \
> docker-client \
> docker-client-latest \
> docker-common \
> docker-latest \
> docker-latest-logrotate \
> docker-logrotate \
> docker-engine
Loaded plugins: fastestmirror
No Match for argument: docker
No Match for argument: docker-client
No Match for argument: docker-client-latest
No Match for argument: docker-common
No Match for argument: docker-latest
No Match for argument: docker-latest-logrotate
No Match for argument: docker-logrotate
No Match for argument: docker-engine
No Packages marked for removal
卸载Docker软件包并不会自动删除与Docker相关的所有数据。特别是以下数据不会被删除:
- 镜像(images)
- 容器(containers)
- 卷(volumes)
- 网络(networks)
这些数据存储在 /var/lib/docker/
目录中。如果你希望完全删除所有Docker相关的数据,你需要手动删除这个目录:
rm -rf /var/lib/docker
注意:删除此目录会永久删除所有Docker镜像、容器、卷和网络。请确保你已经备份了需要保留的数据。
3. 更新系统,安装依赖包
更新系统
yum update -y
安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
设置官方仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
如果因为网络问题无法访问可以使用阿里的镜像
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4. 安装docker及其插件
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动docker
systemctl start docker
设置docker开机启动(非必须)
systemctl enable docker
关闭docker
systemctl stop docker
重启docker
#更改配置文件时需要使用下面两条命令systemctl daemon-reload
systemctl restart docker#只是简单的重启不涉及到配置改变直接使用下面的命令即可
systemctl restart docker
查看docker状态
systemctl status docker
重启时什么时候需要使用 daemon-reload
- 当你修改了Docker的配置文件(例如
/etc/docker/daemon.json
)时。 - 当你修改了任何与systemd服务相关的配置文件时。
5. 使用腾讯云Docker镜像源加速
编辑或者新建配置文件: /etc/docker/daemon.json 添加下面的内容
vi /etc/docker/daemon.json
{"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
重启docker即可
systemctl daemon-reload
systemctl restart docker
查看镜像源是否安装成功
docker info
可以看到下面的提示说明配置成功
6. 验证docker是否安装成功
使用hello-world镜像创建一个示例来验证
docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:266b191e926f65542fa8daaec01a192c4d292bff79426f47300a046e1bc576fd
Status: Downloaded newer image for hello-world:latestHello from Docker!
This message shows that your installation appears to be working correctly.
7. docker常用命令
docker常用命令根据其使用流程,使用镜像创建容器(实例),这里可以分为两大类镜像相关和容器(实例)相关,暂时只用到这些知识,后序再补充
镜像和容器的操作都可以使用id和name,因为name在当前主机上也是唯一的
镜像相关
1. 列出所有镜像
docker images
2. 搜索镜像
docker search IMAGE_NAME
3. 拉取镜像
docker pull IMAGE_NAME
拉取镜像时如果不指定标签默认拉取最新的镜像,如果需要指定版本可以在镜像名后加上:版本号
docker pull ubuntu:latest 拉取最新的镜像可以省略 :latest
docker pull ubuntu:20.04 拉取指定版本,拉取 ubuntu
的 20.04 版本
如果你想查看某个镜像的所有可用标签,可以访问Docker Hub上的该镜像页面。例如,访问 Ubuntu镜像页面 可以查看所有可用的标签和版本。
4. 删除镜像
docker rmi IMAGE_ID
5. 删除所有未使用的镜像
docker rmi $(docker images -q)
容器相关
1. 创建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
示例
运行一个ubuntu
镜像并进入交互式终端:
docker run -it ubuntu /bin/bash
主要选项(OPTIONS)
- -d:以守护进程模式运行容器(在后台运行)。
- -it:结合使用
-i
(交互式)和-t
(伪终端)选项,使容器能够交互。 - --name:为容器指定一个名称。
- -p:指定端口映射,例如
-p 8080:80
。 - -v:挂载一个主机目录或卷到容器中,例如
-v /host/path:/container/path
。 - --rm:容器停止后自动删除容器。
示例命令
-
运行并进入交互式终端:
docker run -it ubuntu /bin/bash
-
以守护进程模式运行一个容器:
docker run -d --name mycontainer ubuntu sleep 1000
后台守护进程主要用户后台长期运行的服务,比如mysql等,如果容器中运行的程序结束,那么容器也会结束运行.所以后台启动docker容器适合运行长期后台运行的服务.
-
运行一个带端口映射的容器:
docker run -d -p 8080:80 nginx
命令将主机(服务器)的8080端口映射到容器的80端口。具体来说,这意味着:
-d
:以守护进程模式(后台)运行容器。-p 8080:80
:将主机的8080端口映射到容器的80端口。主机上的任何访问8080端口的请求都会被转发到容器的80端口。这样,主机上的
http://localhost:8080
或http://YOUR_HOST_IP:8080
将被转发到容器中的Nginx服务器的80端口。 -
挂载主机目录到容器:
docker run -d -v /host/data:/data myimage
2. 列出所有容器
docker ps -a
docker ps会列出正在运行的程序加上 -a会列出所有容器
3. 停止运行中的容器
docker stop CONTAINER_ID
4. 启动已经停止的容器
docker start CONTAINER_ID
docker start
命令在后台守护模式启动容器,不提供交互式终端,要进入容器的交互式终端,可以使用 docker exec -it CONTAINER_ID /bin/bash 参考下面的第 6条
5. 删除一个容器
docker rm CONTAINER_ID
docker rm删除容器docker rmi 删除镜像,后面的i就是镜像image缩写
6. 进入运行中的容器
docker exec -it CONTAINER_ID /bin/bash
7. 查看容器日志
docker logs CONTAINER_ID
8. 重启容器
docker restart CONTAINER_ID
9. 查看容器的资源占用情况
docker stats CONTAINER_ID
10. 查看容器的详细信息
docker inspect CONTAINER_ID
11. 停止所有运行中的容器
docker stop $(docker ps -q)
12. 删除所有容器
docker rm $(docker ps -a -q)