目录

docker常用配置

docker 安装

官方安装脚本

curl -fsSL get.docker.com | bash

阿里云安装(centos)

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# Step 3: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce

# 配置阿里加速
mkdir -p /etc/docker && sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://go38p9zi.mirror.aliyuncs.com"]
}
EOF

# Step 4: 开启Docker服务
sudo systemctl start docker.service

docker-compose 安装

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose && sudo chmod +x /usr/bin/docker-compose

免root执行docker命令

sudo usermod -aG docker $USER

顺便确定一下sock文件有没有权限(默认是有的), 退出账户重新登录一下即可生效

阿里云Docker加速

mkdir -p /etc/docker && tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://go38p9zi.mirror.aliyuncs.com"]
}
EOF

或者

cat > /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://go38p9zi.mirror.aliyuncs.com"]
}
EOF

常用操作

一次性删除所有的容器

docker rm -f `docker ps -aq`

一次性删除所有的镜像

docker rmi `docker image ls | awk '{print $1 ":" $2}'`

一次性删除未打标签的镜像

docker image ls | grep none | awk '{print $3}' | xargs docker rmi

一次性删除所有volume

docker volume rm `docker volume ls -q`

Docker进入容器

docker run --name test_ubuntu -it ubuntu /bin/bash
启动一个容器并打开shell

查看容器详情

# 重看容器详情
docker inspect 容器id或名字

# 重看docker详情
docker info

启动容器

docker run -it 镜像名字 /bin/sh

进入一个运行中的容器

docker exec -it 容器id /bin/sh

打tag

docker tag 镜像id oldboy1103/alpine:latest

容器备份还原

镜像的备份还原

  1. commit将容器保存成镜像

    docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
    
  2. 将镜像导出成tar (镜像是分层的,可以回滚,)

    docker save -o ./backup.tar gitlab/gitlab-ce
    
  3. 从tar导入镜像(镜像备份下来的tar)

    docker load -i ./backup.tar
    

注意:以上会备份镜像的多层。

容器的备份还原

  1. 备份容器

    docker export php > phprongqi.tar
    
  2. 还原成镜像

    docker import ./phprongqi.tar php
    

注意:备份的只是一层镜像

容器的日志

日志位置

docker日志建议输出控制台,控制台日志存储在主机上

先查看Logging Driver类型,默认应该是json格式

docker info | grep "Logging Driver"

json格式的日志在/var/lib/docker/containers/<containerID>/<containerID>-json.log local格式的日志在/var/lib/docker/containers/<containerID>/local-logs/container.log

控制日志大小

vi /etc/docker/daemon.json

{ 
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "10m", "max-file": "3"
    }
}