本文主要介绍了如何在 Docker 中设置代理加速访问,以及一些基本操作和常用镜像的使用。

Docker 基本操作

在介绍各种基本指令之前,首先介绍如何通过添加用户组的方式来避免每次命令都需要输入 sudo

sudo usermod -aG docker $USER

重启系统后,我们的用户就在 docker 用户组中了。

镜像

Docker 把应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。

  1. 列出所有 image 文件
docker image ls
# 或者
docker images
  1. 获取 image
docker pull redis

默认 tag 为 latest,也可以自定义

docker pull redis:7.0.4
  1. 删除 image
docker image rm [image_id]
## 或者
docker rmi [image_id]

容器

  1. 列出容器

列出所有运行的容器

docker container ls
## 或者
docker ps

列出所有容器,包括终止的容器

docker container ls --all
## 或者
docker ps --all
  1. 容器的运行和停止

运行容器(-d 为后台运行)

docker run -d --name test-redis redis

停止容器

docker stop test-redis

启动停止的容器

docker start test-redis
  1. 删除容器
docker rm [container_id]

设置代理

Docker 守护程序在其启动环境中使用 HTTP_PROXYHTTPS_PROXYNO_PROXY 环境变量来配置 HTTP 或 HTTPS 代理。我们需要在 Docker systemd 服务文件中添加这些配置。

创建配置文件

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

并修改其内容为

[Service]
Environment="HTTP_PROXY=http://192.168.60.1:7890"
Environment="HTTPS_PROXY=http://192.168.60.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1"

完成修改并重启 docker

sudo systemctl daemon-reload
sudo systemctl restart docker

常用镜像使用

postgres

运行容器

docker run --name student-pg -d --restart=unless-stopped -e POSTGRES_PASSWORD=1234 -p 5432:5432 postgres

进入数据库

docker exec -it student-pg /bin/bash

psql -U postgres

创建数据库

create database student;

查看数据库

\l

redis

docker run --name student-redis -d --restart=unless-stopped -p 6379:6379 redis

nginx

docker run --name student-nginx -d --restart=unless-stopped -p 80:80 nginx

mysql

docker run --name student-mysql -d --restart=unless-stopped -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 mysql