目录

Linux Docker

李羽秋
李羽秋 2021年09月28日  ·  阅读 879

本文将介绍如何在 Linux 中使用 Docker。

一、什么是 Docker?

  • Docker 是一个开源的应用容器引擎
  • 开发者可以将应用及其依赖打包,并通过 Docker 运行

二、镜像与容器

镜像与容器的关系类似于类与实例的关系,镜像是静态的定义,而容器是镜像运行时的实体。

三、安装、运行 Docker

1. 安装 Docker

yum install -y docker

2. 查看 Docker 是否安装成功

yum list installed |grep docker

3. 启动 Docker 服务

systemctl start docker.service

4. 查看 Docker 是否启动成功

systemctl status docker

5. 设置 Docker 开机自启

systemctl enable docker.service

四、配置 Docker 仓库

Docker 的默认仓库服务器位于国外,拉取镜像时往往会遇到困难,因此可以配置国内镜像,从而加速镜像的拉取。

1. 生成阿里云加速地址

  • 打开阿里云
  • 搜索 容器镜像服务
  • 容器镜像服务 - 镜像工具 - 镜像加速器 处,获取加速地址

2. 修改配置

vim /etc/docker/daemon.json

修改为:

{
  "registry-mirrors": ["加速地址"]
}

3. 重启 Docker 服务

systemctl restart docker.service

五、命令

1. 获取镜像

docker pull 镜像名:版本

2. 创建容器

docker run 镜像名:版本

以指定的镜像创建一个容器并运行

docker run 镜像名:版本 命令

以指定的镜像创建一个容器并运行,并在容器中执行命令

docker run ubuntu:15.10 /bin/echo "Hello world"
// Hello world
docker run -i -t 镜像名:版本
// 或
docker run -it 镜像名:版本

以指定的镜像创建一个容器并运行,立即进入容器之中,可以直接在终端中与容器进行交互

需要注意的是:

直接退出终端将会导致容器关闭,如果希望退出终端且保持容器的运行,应该使用 CTRL+P+Q 命令

docker run -d 镜像名:版本

以指定的镜像创建一个容器,容器将会在后台运行

docker create 镜像名:版本

以指定的镜像创建一个容器,并不启动它

可选参数:

  • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
  • -d: 后台运行容器,并返回容器ID;
  • -i: 以交互模式运行容器,通常与 -t 同时使用;
  • -P: 随机端口映射,容器内部端口随机映射到主机的端口
  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • --name="nginx-lb": 为容器指定一个名称;
  • --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
  • --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
  • -h "mars": 指定容器的hostname;
  • -e username="ritchie": 设置环境变量;
  • --env-file=[]: 从指定文件读入环境变量;
  • --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
  • **-m:**设置容器使用内存最大值;
  • --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
  • --link=[]: 添加链接到另一个容器;
  • --expose=[]: 开放一个端口或一组端口;
  • --volume , -v: 绑定一个卷

3. 修改容器运行状态

docker start 容器id/容器名

启动已被停止的容器

docker stop 容器id/容器名

停止运行中的容器

docker kill 容器id/容器名

强行停止运行中的容器

docker restart 容器id/容器名

重启容器

docker pause 容器id/容器名

暂停容器

docker unpause 容器id/容器名

恢复容器

4. 进入容器

docker attach 容器id

进入容器

docker exec 容器id

进入容器,并且退出终端时不会导致容器退出

5. 所有镜像

docker images

列出所有镜像

6. 所有容器

docker ps

列出所有容器

7. 删除容器

docker rm 容器id

删除指定容器

docker container prune

删除所有处于终止状态的容器

六、Docker 安装 MySQL

数据库不建议安装在 Docker 中

1. 查找镜像

访问 Docker 的镜像库 https://hub.docker.com/_/mysql?tab=tags ,选择合适版本的 MySQL 镜像。

2. 拉取镜像

执行镜像所对应的命令,从远端拉取镜像。

3. 查看本地镜像

docker images

4. 运行容器

docker run --restart=always -d --name 容器名 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=密码 mysql:5.7

其中,

  • --restart=always:开机自启
  • -d:后台运行
  • --name 容器名:指定容器名
  • -p 3306:3306:将容器的 3306 端口与主机的 3306 端口绑定,使得可以通过访问主机的 3306 端口间接访问到容器的 3306 端口
  • MYSQL_ROOT_PASSWORD=密码
  • mysql:5.7:指定镜像

5. 外部访问 MySQL

直接访问主机的 3306 端口即可。

6. 内部访问 MySQL

(1) 进入容器

docker exec -it 容器名 bash

(2) 访问 MySQL

mysql -uroot -p密码

七、Docker 安装 Gitea

1. 拉取镜像

// 直接拉取最新版
docker pull gitea/gitea

2. 运行容器

docker run -d --privileged=true --restart=always --name=giteaContainer -p 主机端口1:22 -p 主机端口2:3000 -v /var/lib/gitea:/data gitea/gitea
  • -d:后台运行
  • --privileged=true:获取 root 权限
  • --restart=always:自动重启
  • --name=giteaContainer:指定容器名为 giteaContainer
  • -p 主机端口:容器端口:将主机端口与容器中的端口相绑定
  • -v 主机目录:容器目录:将主机中的目录与容器中的目录相绑定

3. 配置

访问 http://IP地址:主机端口2,在网页中进行配置即可。

参考

分类: Linux
标签: