Centos7安装Docker
一、环境搭建
- 确定centos7及以上版本
cat /etc/redhat-release
- 安装GCC编辑器
yum -y install gcc
yum -y install gcc-c++
gcc -v
- 卸载旧版本
yum remove docker \\
docker-client \\
docker-client-latest \\
docker-common \\
docker-latest \\
docker-latest-logrotate \\
docker-logrotate \\
docker-selinux \\
docker-engine-selinux \\
docker-engine
- 安装需要的软件包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
- 设置stable镜像仓库(特别注意:不要从官网下太慢使用阿里云的镜像)
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新 yum 软件包索引(yum下载会快一些)
yum makecache fast
- 安装 docker 社区版(CE)
yum -y install docker-ce
不安装CE版本
yum -y update
yum -y install docker
service docker start
- 启动docker
systemctl start docker
设置开机启动
systemctl enable docker
注意:如果无法启动报错:Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details
如下操作:
rm -rf /var/lib/docker/
vim /etc/docker/daemon.json
{ "graph": "/mnt/docker-data", "storage-driver": "overlay" }
- 查看docker版本
docker version
- 配置镜像加速
mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{ "registry-mirrors": ["https://3fv7kot3.mirror.aliyuncs.com"] }
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
- 卸载docker
yum remove docker-ce
rm -rf /var/lib/docker
离线安装包方式安装,下载地址
https://download.docker.com/linux/static/stable/x86_64/
(1)解压二进制包
tar -zxvf docker-19.03.10.tgz
变成可执行文件
mv docker/* /usr/bin
(2) systemd 管理docker,新增docker.service文件,这样可以将docker注册为service服务。
cat > /usr/lib/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
(3)创建配置文件
mkdir /etc/docker
registry-mirrors 阿里云镜像加速器
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
(4)启动并设置开机启动
systemctl daemon-reload
systemctl start docker
systemctl enable docker
docker info
二、Docker命令
- 列出本地主机上的镜像
docker images
- 查询某个镜像
docker search tomcat
- 下载镜像(不写版本号默认最新版本)
docker pull tomcat
- 重命名镜像名称
如果镜像名称太长可以重新命名
docker tag 原镜像名称 新镜像名称
docker tag www.baidu.com/images/mysql:5.6 mysql:5.6
修改完后将原镜像删除注意根据名字:tag删除不能根据ID删除
docker rmi -f www.baidu.com/images/java:8
- 删除镜像
删除单个
docker rmi -f tomcat:7
删除多个
docker rmi -f tomcat nginx
删除全部
docker rmi -f $(docker images -qa)
删除none的镜像
docker rmi $(docker images | grep "none")
- 列出容器
列出所有在运行的容器信息
docker ps
列出最近创建的容器信息
docker ps -l
列出最近创建的5个容器信息
docker ps -n 5
- 运行容器
-it交互式运行,--name重命名
docker run -it --name mytomcat tomcat
启动守护式容器(后台运行)
docker run -d id
- 容器停止退出
容器停止退出
exit
容器不停止退出
Ctrl + P + Q
- 进入容器(id或者名字)
直接进入容器启动命令的终端,不会启动新的进程
docker attach id
在容器中打开新的终端,并且启动新的进程,不进入容器直接获得结果
docker exec -it id ls -l /temp
进入容器
docker exec -it id /bin/bash
- 启动容器(id或者名字)
docker start id
- 重启容器
重启docker
service docker restart
docker restart id
- 停止容器
docker stop id
强制停止容器
docker kill id
- 删除容器
docker rm id
强制删除
docker rm -f id
删除多个容器
docker rm -f $(docker ps -qa)
- 从容器内拷贝文件到主机
docker cp id:/temp/yum.log /root
- 查看容器日志
-f最新日志,-t时间戳,--tail 数字显示最后多少条
docker logs -ft --tail 30 id
- Dockerfile创建镜像
docker build -f Dockerfile-eureka-7001 -t eureka-7001 . (注意后面这个点不要丢了)
docker run --name eureka-7001 -p 7001:7001 -d 容器id
17.网络命令
创建自己的网络
docker network create -d bridge my-net
查看docker网卡
docker network ls
查看已有网桥
brctl show
删除网络
docker network rm my-net
将容器加入自己的网络之后互相自动link
docker network connect my-net redis
获取容器/镜像的元数据
docker inspect my-net
18.容器内安装ping命令
apt-get update && apt-get install iputils-ping
清理docker产生的日志
查看磁盘空间
df -h
进入容器目录
cd /var/lib/docker/containers
进入容器ID的目录后查看文件大小
ll -h
创建脚本删除日志文件
cd /usr/local
vi clean_docker_logs.sh
#!/bin/sh
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
echo "======== end clean docker containers logs ========"
sh clean_docker_logs.sh
1.删除不再使用的数据卷:
docker volume prune
2.删除 build cache
docker builder prune
3.docker 系统一键清理没用的空间
docker system prune
4.键删除所有已经停止的容器
docker container prune
5.查看docker占用
docker system df
三、Docker创建容器时防火墙问题
查看防火墙状态
https://www.jianshu.com/p/10c467600ef9
firewall-cmd --state
systemctl start firewalld
systemctl stop firewalld
systemctl enable firewalld
查看所有打开的端口号
firewall-cmd --list-ports
添加端口记得重启firewall(–zone #作用域–add-port=80/tcp #添加端口,格式为:端口/通讯协议–permanent #永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=6379/tcp --permanent
删除端口号
firewall-cmd --zone=public --remove-port=6399/tcp --permanent
重启firewall
firewall-cmd --reload