CentOS安装Docker

2023-03-01 18:08:12 浏览数 (1)

安装

代码语言:javascript复制
#设置仓库
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#安装 Docker Engine-Community
$ sudo yum install docker-ce docker-ce-cli containerd.io

启动docker

代码语言:javascript复制
# 启动
$ sudo systemctl start docker
或 service docker start
# 重启
$ systemctl restart  docker
或 sudo service docker restart
#关闭
systemctl stop docker
或 service docker stop
# 查看是否启动成功
$ docker ps -a
# 每次更改配置文件后先通知docker服务做出的修改
$ systemctl daemon-reload
# Linux系统设置docker自启
systemctl enable docker
# 查看docker启动状态
systemctl status docker

配置

配置远程访问

代码语言:javascript复制
# 修改配置文件
$ vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd  -H fd:// --containerd=/run/containerd/containerd.sock
修改为:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
# 每次更改配置文件后先通知docker服务做出的修改
$ systemctl daemon-reload
#重启docker
#防火请开端口
#测试 本地访问远程
curl http://39.39.39.39:2375/version

配置daemon.json

代码语言:javascript复制
#配置加速
$ vim /etc/docker/daemon.json
# 添加
{"registry-mirrors":["https://registry.docker-cn.com","https://whrqoz7w.mirror.aliyuncs.com"]}
#配置容器日志
# max-size=300m,意味着一个容器日志大小上限是300M, 
# max-file=3,意味着一个容器有三个日志,分别是id .json、id 1.json、id 2.json
{
  "log-driver":"json-file",
  "log-opts": {"max-size":"300m", "max-file":"3"}
}
# 解决Centos7 Firewalld无法限制docker端口问题 禁止写入iptables
{
   "iptables": false
}
# 重启
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
# 查看
$ docker info
Registry Mirrors:
    https://registry.docker-cn.com/
代码语言:javascript复制
{
    "registry-mirrors": [
        "https://registry.docker-cn.com",
        "https://whrqoz7w.mirror.aliyuncs.com"
    ],
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "30m",
        "max-file": "3"
    },
    "iptables": false
}

安装Docker Compose

代码语言:javascript复制
# 安装其他版本替换1.25.4
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 或者使用pip安装
$ pip3 install --upgrade pip
$ pip3 install docker-compose
# 查看版本
$ docker-compose --version

问题

1 执行docker info出现如下警告

代码语言:javascript复制
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
代码语言:javascript复制
#解决
vim /etc/sysctl.conf
添加以下内容
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
#执行
sysctl -p

2 docker容器内部无法ping通域名

Firewalld 阻止了 Docker 默认网络接口 docker0

代码语言:javascript复制
firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --reload

3 docker和firewall冲突(firewall不能管理docker端口等)

代码语言:javascript复制
禁用 docker 的 iptables 规则
配置daemon.json ,禁用iptables防火墙
"iptables": false
开启转发
firewall-cmd --add-masquerade --permanent
firewall-cmd --reload
重启docker
systemctl restart docker

4 docker和ufw冲突(ufw不能管理docker端口等)

代码语言:javascript复制
禁用 docker 的 iptables 规则
配置daemon.json ,禁用iptables防火墙
"iptables": false
开启转发
ufw default allow routed
ufw reload
重启docker
systemctl restart docker

可视化工具portainer

代码语言:javascript复制
$ docker network create --driver bridge dqgs
$ docker pull portainer/portainer
$ docker run -p 8001:9000 -p 8000:8000 --name dqgs-portainer --network dqgs --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /opt/docker/data/portainer/data:/data -d portainer/portainer-ce
docker run -p 8001:9000 -p 8000:8000 --name portainer --network dqgs --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v E:dockerdataportainerdata:/data -d portainer/portainer-ce

更新,拉取新的镜像,注意portainer从2.0.0版本镜像名字改为portainer/portainer-ce

代码语言:javascript复制
docker pull portainer/portainer-ce
#重新启动容器

汉化可视化工具

docker容器内操作

代码语言:javascript复制
$ sudo docker ps
$ sudo docker exec -it 775c7c9ee1e1 /bin/sh

搭建私有仓库

代码语言:javascript复制
$ docker pull registry
$ docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
#浏览器输入http://ip_add:5000/v2/
#修改客户端docker的配置文件/etc/docker/daemon.json,添加ininsecure-后内容
{
"registry-mirrors": [ "https://pee6w651.mirror.aliyuncs.com"],"insecure-registries": ["192.168.179.128:5000"]
}

上传下载镜像

代码语言:javascript复制
# 标记镜像
$ docker tag jdk_8u191:20190307 10.10.10.10:5000/jdk_8u191:20190307
# 上传
$ docker push 10.10.10.10:5000/jdk_8u191:20190307
# 下载
$ docker pull ip_add:5000/jdk_8u191:20190307
# 查看私有仓库有哪些镜像
http://10.10.10.10:5000/v2/_catalog
# 查看镜像信息
# http://10.10.10.10:5000/v2/镜像名称/tags/list

docker从容器里面拷文件到宿主机或从宿主机拷文件到docker容器里面

代码语言:javascript复制
1、从容器里面拷文件到宿主机
  docker cp 容器名:要拷贝的文件在容器里面的路径       要拷贝到宿主机的相应路径 
  示例: 假设容器名为testtomcat,要从容器里面拷贝的文件路为:/usr/local/tomcat/webapps/test/js/test.js,  现在要将test.js从容器里面拷到宿主机的/opt
 在宿主机上面执行命令
 docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt 
 2、从宿主机拷文件到容器里面
 在宿主机里面执行如下命令
 docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
 示例:假设容器名为testtomcat,现在要将宿主机/opt/test.js文件拷贝到容器里面的/usr/local/tomcat/webapps/test/js路径下面,那么命令该怎么写呢?
 在宿主机上面执行如下命令     
 docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js 
代码语言:javascript复制
参考:
菜鸟教程
portainer使用教程

ubuntu一键安装:

代码语言:javascript复制
<span class="pln">curl </span><span class="pun">-</span><span class="pln">sSL https</span><span class="pun">:</span><span class="com">//get.daocloud.io/docker | sh</span>

0 人点赞