# Docker环境

## 1. 安装与配置

宿主主机：`host.docker.internal`

### 1.1. 官方自动化安装脚本

- Debian

  ```sh
   curl -fsSL https://get.docker.com -o get-docker.sh
   sudo sh get-docker.sh
  ```

  

- Ubuntu

  ```sh
   curl -fsSL https://edge.docker.com -o edge-docker.sh
   sudo sh edge-docker.sh
  ```

  

- CentOS

  ```sh
  curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  ```

### 1.2. 基础配置

编辑 `/etc/docker/daemon.json`

本地私库配置和docker日志配置

```json
{
  "insecure-registries": ["192.168.3.203:5000"],
  "log-driver": "json-file",
  "log-opts": {
       "max-size": "10m",
       "max-file": "3"
  }
}
```

### 1.3. 重启

```sh
# 开机自启
systemctl enable docker
systemctl daemon-reload
systemctl restart docker
```

### 1.4. docker-compose

下载：[Releases · docker/compose (github.com)](https://github.com/docker/compose/releases)

```sh
wget https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 启动管理容器
docker-compose up  # 会自动搜索当前路径下的 docker-compose.yml文件
docker-compose -f 指定文件 up
docker-compose up -d  # 后台执行，一般我们看日志输出，不用这个
 
docker-compose stop  # 停止，不会删除容器和镜像
docker-compose down # 停止，并删除关联的容器
docker-compose start  # 启动yml文件管理的容器
docker-compose ps    # 正在运行的容器
docker-compose images # docker-compose管理的镜像
 
docker-compose exec yml文件中写的service /bin/bash  # 进入到容器内
 
docker-compose up -d --build # 启动容器但是重新构建镜像，基于重新构建的镜像启动

```


### 1.5 加速镜像

- 科大镜像：**https://docker.mirrors.ustc.edu.cn/**
- 网易：**https://hub-mirror.c.163.com/**
- 阿里云：**https://<你的ID>.mirror.aliyuncs.com**
- 七牛云加速器：**https://reg-mirror.qiniu.com**

编辑 `/etc/docker/daemon.json`

```json
{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}
```




## 2. 后续操作

### 2.1. docker服务相关操作

```sh
# 状态 | 启动 | 停止 | 重启 | 自启服务 | 手动服务 
systemctl [status | start | stop | restart | enable | disable] docker
# 查看docker版本信息
docker version
# 修改docker配置后执行，再重启
systemctl daemon-reload
```

### 2.2. 登录docker私库

> 登录后才能pull私库中的私有镜像

```sh
# 登录ailiyun私库
docker login registry.cn-hangzhou.aliyuncs.com
```

### 2.3. 防火墙操作

- centos

  ```sh
  # 状态 | 启动 | 停止 | 重启 | 自启服务 | 手动服务 
  systemctl [status | start | stop | restart | enable | disable] firewalld
  
  # 开放端口
  firewall-cmd --add-port=80/tcp --permanent
  
  # 重启防火墙
  firewall-cmd --reload
  
  # 查看开放端口号
  firewall-cmd --list-all
  ```

  查看版本： firewall-cmd --version
  查看帮助： firewall-cmd --help
  显示状态： firewall-cmd --state
  查看所有打开的端口： firewall-cmd --zone=public --list-ports
  更新防火墙规则： firewall-cmd --reload
  查看区域信息:  firewall-cmd --get-active-zones
  查看指定接口所属区域： firewall-cmd --get-zone-of-interface=eth0
  拒绝所有包：firewall-cmd --panic-on
  取消拒绝状态： firewall-cmd --panic-off
  查看是否拒绝： firewall-cmd --query-panic

- ubuntu

  ```sh
  # 启动防火墙
  sudo ufw enable
  
  # 禁止开机自动启动
  sudo ufw disable
  
  # 允许开机自动启动
  sudo ufw enable
  
  # 查看防火墙状态，是否正在运行
  sudo ufw status verbose
  
  # 关闭防火墙
  sudo ufw disable
  
  # 重置防火墙配置
  sudo ufw reset
  
  # 开放固定端口
  # 放行tcp或者udp端口：
  sudo ufw allow 端口号/tcp
  # 放行tcp与udp端口：
  sudo ufw allow 端口号
  # 删除指定端口：
  sudo ufw delete allow 端口号
  
  #查看
  sudo ufw status
  #查看刚添加的规则
  sudo ufw show added
  ```

  

