docker系列(二)————安装docker与基础命令

开端

​ 我这里使用的是基于centos的国产某系统,从事过的同行应该知道是什么,它的大部分与centos相同,我测试过,所以如果你是新手,放心使用。

首先我知道你想安装,但是先别安装

​ 在CentOS 8.2版本开始,出于架构更安全以及其与Kubernetes 原生的等原因,CentOS默认安装podman,这是一款与docker类似的容器引擎。

所以如果你是8.2及以后的版本安装docker后启动任务会出现:

“Failed to start docker.service: Unit docker.service not found。”

原因是CentOS默认使用podman代替docker,所以我们需要卸载它

1
2
3
###########卸载podman#############
yum erase -y podman buildah
#################################

接下来让我们继续:

1.安装docker依赖环境

1
yum install -y yum-utils device-mapper-persistent-data lvm2

2.配置国内docker-ce(社区版)的yum源(采用阿里云)

1
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

查看该目录下是否存在docker-ce.repo这个文件

1
2
cd /etc/yum.repos.d
ls

3.安装docker CE

1
yum -y install docker-ce docker-ce-cli containerd.io

如果显示哪个包no match

先查看一下可安装的包版本(如果显示有,那可能是拼写错误)

1
yum list 包名 --showduplicates | sort -r

如果有就单独运行一次

1
yum -y install 包名

想知道包名的作用,就使用 yum info 程序名

使用systemctl 这个命令启动查看一下docker能否正常运行,状态为active

4.开启网络转发功能

默认自动开启

1
路径: /proc/sys/net/ipv4/ip_forward

手动开启:

1
vim /etc/sysctl.conf   

插入以下内容

1
net.ipv4.ip_forward =1

然后执行

1
sysctl -p   #生效

此处如果报错sysctl: cannot stat /proc/sys/net/ipv4/ipv4_forward: No such file or directory

执行

1
modprobe ip_tables # 加载一下驱动
1
cat /proc/sys/net/ipv4/ip_forward  #查看结果,为1开启成功。

5.关闭防火墙

1
2
3
4
5
iptables -nL #查看一下iptable规则,关闭防火墙后会自动插入新规则

systemctl stop firewalld && systemctl disable firewalld #关闭防火墙

systemctl restart docker

关闭防火墙要把docker重启一下,不然docker的ip包转发功能无法使用。即便防火墙关闭了,docker依旧会调用内核模块netfilter增加规则,所以会新增iptables规则。

1
iptables -nL #再查看一下iptable规则,会发现多出很多规则

6.启动服务 并 设置开机自启

1
systemctl start docker && systemctl enable docker

启动完成后再查看一下网络参数,这个是ip转发会改成1,默认0

7.基础命令

哎!这个时候我们就需要搜索和拉取镜像了,我们第一期创建的自己的docker库就有用场了,但是我们下一期说,bote现在要睡了,嘿嘿。

(1)帮助命令

1
2
3
docker version     #显示docker详细信息
docker info #显示docker的系统信息,包括镜像和容器的数量
docker --help #docker帮助命令手册

(2)镜像命令

1
2
3
4
5
6
7
8
9
10
11
12
docker images  #查看所有本地主机的镜像
docker search 镜像名 #搜索镜像
docker pull 镜像名 [标签] #下载镜像(如果不写tag,默认是latest)
docker rmi 镜像名 [标签] #删除镜像 docker rmi -f $(docker images -aq) 删除全部镜像
docker tag 镜像名:版本 新镜像名:版本 #复制镜像并且修改名称
docker commit -a "xxx" -c "xxx" 镜像ID 名字:版本 #提交镜像
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;

docker load -i /xxx/xxx.tar #导入镜像
docker save -o /xxx/xxx.tar #保存一个镜像为一个tar包

(3)容器命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
docker run [可选参数] image 命令 #启动容器(无镜像会先下载镜像)
#参数说明
--name = "Name" 容器名字
-c 后面跟待完成的命令
-d 以后台方式运行并且返回ID,启动守护进程式容器
-i 使用交互方式运行容器,通常与t同时使用
-t 为容器重新分配一个伪输入终端。也即启动交互式容器
-p 指定容器端口 -p 容器端口:物理机端口 映射端口
-P 随机指定端口
-v 给容器挂载存储卷

docker build #创建镜像 -f:指定dockerfile文件路径 -t:镜像名字以及标签
docker logs 容器实例的ID #查看容器日志
docker rename 旧名字 新名字 # 给容器重新命名
docker top 容器实例的ID #查看容器内进程
docker ps -a #列出所有容器(不加-a就是在运行的)
docker rm 容器实例的ID #删除容器(正在运行容器不能删除,除非加-f选项)
docker kill 容器实例的ID #杀掉容器
docker history 容器实例的ID #查看docker镜像的变更历史
docker start 容器实例的ID #启动容器
docker restart 容器实例的ID #重启容器
docker stop 容器实例的ID #停止正在运行的容器
docker attach /docker exec 容器实例的ID #同为进入容器命令,不同的是attach连接终止会让容器退出后台运行,而exec不会。并且,docker attach是进入正在执行的终端,不会启动新的进程,而docker exec则会开启一个新的终端,可以在里面操作。
docker image inspect 容器名称:容器标签 #查看容器内源数据
docker cp 容器id:容器内路径 目的主机路径 #从容器内拷贝文件到主机(常用)或者从主机拷贝到容器(一般用挂载)
exit #直接退出容器
crlt + P + Q #退出容器但是不终止运行

8.最后

如果有朋友发现有字误或其他错误,欢迎评论指出


docker系列(二)————安装docker与基础命令
https://bote798.top/2025/01/10/docker系列-二-————安装docker与基础命令/
作者
bote798
发布于
2025年1月10日
许可协议