Centos7 安装 Docker

Docker 要求 CentOS 系统的内核版本高于 3.10 。

不要使用 root用户管理 Docker

1
2
3
4
5
6
uname -r
sudo groupadd docker
sudo useradd -g docker docker
echo "1" |passwd --stdin docker
echo "docker ALL=(ALL) ALL" >> /etc/sudoers
su docker

版本底的可以不用向下看了。

1、基本操作

1
2
3
4
sudo rpm -qa|grep docker
# 卸载所有低版本docker以及docker相关
sudo yum remove docker docker-common docker-selinux docker-client docker-client-latest docker-logrotate docker-engine docker-latest docker-latest-logrotate docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo yum erase docker docker-common docker-client

使用 repository

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 需要挂载 ISO 镜像
sudo mkdir /mnt/cdrom
sudo mount /dev/cdrom /mnt/cdrom/
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

# 或者 阿里云
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 或者 清华大学源
sudo yum-config-manager \
--add-repo \
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

查看docker版本

1
sudo yum list docker-ce --showduplicates | sort -r

安装docker

1
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

GPG key060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 出入 y 继续.

启动 Docker

1
2
3
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker

测试

1
sudo docker run hello-world

会打印一条 Hello from Docker!然后退出。

更新

get.Docker. com 下载脚本,然后运行它在 Linux 上安装最新的 Docker 稳定版本:

1
2
sudo curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

配置修改

1
sudo vim /etc/docker/daemon.json
  1. registry-mirrors 镜像
  2. dns
  3. hosts 远程访问
1
2
3
4
5
6
7
8
9
10
{
"registry-mirrors": [
"https://aj2rgad5.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn"
],
"dns": [
"8.8.8.8",
"8.8.4.4"
]
}

远程访问配置

"hosts": ["unix:///var/run/docker.sock", "tcp://127.0.0.1:2375"]

其它源

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"registry-mirrors": [
"https://aj2rgad5.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.cn-hangzhou.aliyuncs.com",
"https://registry.docker-cn.com",
"https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com"
],
"dns": [
"8.8.8.8",
"8.8.4.4"
]
}

服务

1
sudo vim /lib/systemd/system/docker.service

将第11行的ExecStart=/usr/bin/dockerd,替换为:

1
2
#ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H tcp://0.0.0.0:7654
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

2375是管理端口,7654是备用端口

~/.bashrc中写入docker管理端口

1
2
3
4
5
6
7
8
9
export DOCKER_HOST=tcp://0.0.0.0:2375
source ~/.bashrc
env |grep DOCKER
# 重新加载 systemctl 配置。
sudo systemctl daemon-reload
# 重新启动 Docker。
sudo systemctl restart docker.service
# 查看端口监听
sudo netstat -lntp | grep dockerd

开机自启

1
2
sudo systemctl enable docker.service
sudo systemctl enable containerd.service

查看 docker 信息

1
docker info

image-20220522214702999

添加 docker 组用户

1
2
3
4
sudo usermod -aG docker $USER
sudo mkdir /home/"$USER"/.docker
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R

完全退出后,重新登录,然后不适用 sudo 测试

1
docker run hello-world

2、常用命令

镜像相关

1)docter pull NAME[:TAG] 使用pull命令从docker hub仓库下载镜像到本地

2)docker tag oldName newName 为本地镜像添加新的标签

3)docker images 列出本地主机上已有的镜像

4)docker search TERM 默认搜索docker hub官方仓库的镜像

5)docker rmi IMAGE [IMAGE…] IMGE可以是标签或id

6)docker commit [OPTIONS] CONTAINER[REPOSITORY[:TAG]] 基于已有镜像的容器创建镜像,可以创建比较复杂的镜像。-a:作者信息,-m:提交信息,-p:提交时暂停容器运行

7)docker import -NAME[:TAG] 基于本地模板导入镜像

8)docker build -t NAME[:TAG] dockerfile路径 基于dockerfile创建

9)docker save –o xxx.tar NAME[:TAG] 存出镜像到本地文件

  1. docker load <xxxx.tar 载入镜像

11)docker inspect 镜像id 查看镜像详细信息

容器相关

1)docker create –it NAME[:TAG] 创建容器

2)docker start NAME[:TAG] 启动容器

3)docker run –it NAME[:TAG] 等于先执行docker create命令,再执行docker start,-it交互式,守护态运行,通过run后加-d实现

4)docker stop[-t|–time[=10]] 终止容器

5)docker restart NAME[:TAG] 启动状态重新启动

6)docker ps –a –q 查看处于终止的容器id信

7)docker ps 查看正在运行的容器

8)docker ps –a 查看所有容器

9)docker rm 容器id 删除容器,需要先停止

10)docker logs 容器id 查看容器日志

11)docker port <container-name|container-id> 端口 查看容器映射端口

12)docker inspect 容器id 查看容器信息

13)docker exec -u root -it containerID /bin/bash 指定用户进入容器操作

14)env 容器内部输入env查看容器内部环境变量

15)docker cp container-id : 复制本地文件到容器

16)docker cp container-id: 复制容器文件到本地

17)docker network create app_net 创建自定义网络

18)docker network connect app_net container-name连接网络

19)docker run -it -v /dbdata –name dbdata 创建数据卷容器dbdata,并在其中创建数据卷挂载到/dbdata。其他容器挂载使用–volumes-from dbdata,可以多次使

用,从多个容器挂载多个数据卷,还可以从一挂载数据卷的容器来挂载数据卷,且使用–volumes-from 参数所挂载数据卷的容器自身不需要保持运行,要删除一个数据卷

必须在删除最后一个还挂着它的容器时显示使用docker rm -v命令来指定同时删除关联的容器

原文:https://blog.csdn.net/songer_xing/article/details/78599197

本文地址 Centos7 安装 docker

3、迁移镜像

保存镜像到本地

保存镜像命令

1
docker save -o 本地文件名  要保存的镜像

查看镜像

1
docker images

保存一个镜像

1
docker save -o redis.tar redis

导入镜像

1
2
3
docker load --input 文件
#或者
docker load < 文件名

卸载 Docker

1
2
3
sudo yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

重装

1
2
3
4
5
6
7
8
9
10
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

附录

daemon.json

  • windows 下的地址 C:\Users\${USER}\.docker\daemon.json
  • linux 下的地址 /etc/docker/daemon.json
1
2
3
4
5
6
7
8
9
10
11
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
EOF

其它配置

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
28
29
30
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"dns": ["8.8.8.8", "8.8.4.4"],
"insecure-registries": [],
"debug": false,
"experimental": false,
"features": {
"buildkit": true
},
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"builder": {
"gc": {
"enabled": true,
"defaultKeepStorage": "20GB"
}
}
}

允许请求转发

1
vim /etc/sysctl.conf

写入

1
net.ipv4.ip_forward=1

重启

1
2
3
4
5
6
7
8
9
sudo systemctl daemon-reload
systemctl restart network
sysctl net.ipv4.ip_forward
# 重启docker
systemctl restart docker
# 查询运行过的容器
docker ps -a
# 开机启动容器
docker update portainer/portainer-ce:latest --restart=always

web管理工具portainer

1
2
3
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
docker ps

访问:https://localhost:9443

离线安装

1
2
3
mkdir ~/docker
sudo yum install --downloadonly --downloaddir=/home/maxzhao/docker/ docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo yum localinstall /home/maxzhao/docker/*.rpm

已经安装可以使用 reinstall

配置信任

1
2
3
4
5
6
7
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn"
],
"insecure-registries": ["https://docker.mirrors.ustc.edu.cn"]
}

本文地址: https://github.com/maxzhao-it/blog/post/21945/