docker 安装

官方安装脚本

curl -fsSL get.docker.com | bash
# 国内安装
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun

centos

BASH
# 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://1m20yrx2.mirror.aliyuncs.com"]
}
EOF

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

#运行Demo
docker run hello-world

Ubuntu

sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get -y update
sudo apt-get -y install docker-ce
docker version
#启动Docker
sudo systemctl start docker
#设置开机自启
sudo systemctl enable docker
#运行Demo
docker run hello-world

docker-compose 安装

BASH
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 命令

BASH
sudo usermod -aG docker $USER

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

阿里云 Docker 加速

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

或者

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

常用操作

一次性删除所有的容器

BASH
docker rm -f `docker ps -aq`

一次性删除所有的镜像

BASH
docker rmi $(docker image ls | awk 'NR!=1 {print $1 ":" $2}')

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

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

一次性删除所有 volume

BASH
docker volume rm `docker volume ls -q`

Docker 进入容器

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

查看容器详情

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

# 重看docker详情
docker info

启动容器

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

进入一个运行中的容器

BASH
docker exec -it 容器id /bin/sh

打 tag

BASH
docker tag 镜像id mek/alpine:latest

容器备份还原

镜像的备份还原

  1. commit 将容器保存成镜像

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

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

    BASH
    docker load -i ./backup.tar
    

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

容器的备份还原

  1. 备份容器

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

    BASH
    docker import ./phprongqi.tar php
    

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

容器的日志

日志位置

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

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

BASH
docker info | grep "Logging Driver"

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

控制日志大小

vi /etc/docker/daemon.json

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