安装
代码语言: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>