文章目录

  • docker — 安装与使用
  • 一、docker安装
  • 1. Linux
  • 1.0 先决条件
  • 1.1 存储库安装
  • 1.2 离线包安装
  • 1.3 自动安装
  • 2. windows
  • 二、修改 docker 路径
  • 三、远程访问
  • 1. docker 设置
  • 2. 防火墙设置
  • 四、阿里容器服务
  • 五、修改镜像位置
  • (一) windows
  • 六、管理容器和镜像
  • 1. 常用命令
  • 2. 镜像操作
  • 七、Dockerfile
  • 1. 介绍
  • 2. 基本结构
  • 2. 例子:
  • 八、docker-compose
  • 1. 介绍
  • 2. docker-compose 安装
  • 3. docker-compose 部署 springboot
  • 4. docker-compose 挂载容器里面的目录到宿主机
  • 九、docker 私仓
  • 1. 阿里云仓库
  • 十、docker权限


docker — 安装与使用

一、docker安装

1. Linux

参考资料:

1.0 先决条件
  1. yum 包更新到最新:
sudo yum update
  1. 设置 yum 源(可选步骤):
  • 使用官方源地址(比较慢):
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  • 使用国内源地址:
  • 阿里云:
sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 清华大学源:
sudo yum-config-manager \    --add-repo \    https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
  1. 卸载旧版本:
  • 较旧的Docker版本称为 dockerdocker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项,如果yum报告未安装这些软件包,则可以。现在将Docker Engine软件包称为 docker-ce
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

Linux系统中 docker 安装,有三种方式:

  • 存储库安装:设置 Docker 的存储库并从中安装,便于安装和升级任务。这是推荐的方法。
  • 下载 RPM 包、手动安装、手动管理升级:适合在无法访问 Internet 的系统上安装 Docker 等情况下很有用。
  • 便利脚本:适合在测试和开发环境中来安装 Docker。
1.1 存储库安装
  1. 设置存储库:
# 安装yum-utils包(提供yum-config-manager 实用程序)
sudo yum install -y yum-utils

# 设置稳定的存储库
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装 Docker 引擎(Docker Engin)
  • 方式1:下载最新的Docker Engin
sudo yum install docker-ce docker-ce-cli containerd.io
  • 方式2:安装 特定版本 的 Docker Engin
  • 查看仓库中的可用版本:
yum list docker-ce --showduplicates | sort -r
  • 特点版本 Docker Engin 下载安装:
    通过其完整的软件包名称安装特定版本:该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。
    例如:docker-ce-18.09.1。
# 命令规则
# sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

# 例如
sudo yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io
  1. 启动并加入开机启动
sudo systemctl start docker

sudo systemctl enable docker
  1. 权限设置:
  • 执行 docker 命令需要为 root 用户,或者 非root 用户操作 docker 时候需要加 sudo
  • 避免 非root 每次都要加 sudo,可将非root用户添加到用户组中,命令如下:
# 将非root用户添加到用户组
sudo usermod -aG docker 【非root用户】
  • 查看是否添加成功:
cat /etc/group

docker容器火狐latest版本 docker安装firefox_docker

  • 重启docker 服务:
sudo systemctl restart docker
  • 查看非root用户是否可以直接使用docker命令:
docker  info

如果提示get …dial unix /var/run/docker.sock权限不够,则修改/var/run/docker.sock权限

sudo chmod a+rw /var/run/docker.sock
  1. 验证安装是否成功:
    有client和service两部分表示docker安装启动都成功了
docker version
1.2 离线包安装
1.3 自动安装

在测试和开发环境中,一些用户选择使用自动 [便利脚本],在生成环境中不建议。

  1. 使用官方安装脚本自动安装,安装命令如下:
    从 get.docker.com下载脚本 并运行它以在 Linux 上安装最新的稳定版本的 Docker:
curl -fsSL https://get.docker.com -o get-docker.sh

sudo sh get-docker.sh
  1. 也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh

2. windows

二、修改 docker 路径

此章节主要介绍修改 docker 的默认镜像和容器的位置


  1. 查看docker信息:
    包含了docker的磁盘路径等
$ docker info

三、远程访问

1. docker 设置

1. 编辑vi /lib/systemd/system/docker.service	修改以ExecStart开头的行:   	因为我的系统是centos 7的,所以修改为下面的:        ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock	如果是centos7以下的话,就把ExecStart修改为:    ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:23752. 修改后保存文件,然后通知docker服务做出的修改	systemctl daemon-reload3. 重启docker服务	service docker restart	4. 配置完成,访问效果如下:	http://192.168.142.63:2375/info

2. 防火墙设置

  1. 服务器防火墙配置:
    开启防火墙
  2. docker远程端口
    开启2375端口:
firewall-cmd --add-port=2375/tcp --permanentfirewall-cmd --reloadfirewall-cmd --zone=public --list-ports
  1. 服务器配置安全组:
  • 来源:0.0.0.0/0
  • 端口:
  • tcp:2375

或者直接关闭防火墙:

  • 参考:https://jingyan.baidu.com/article/ff42efa9fd8c1cc19e2202bb.html

四、阿里容器服务

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

五、修改镜像位置

(一) windows

六、管理容器和镜像

  • 删除镜像容器:

1. 常用命令

  • 查看所有容器:docker ps -a
  • 查看运行中容器:docker ps -a
  • 查看镜像:docker images
  • 删除容器:docker rm 容器id
  • 删除镜像:docker rmi 镜像id
  • 停用全部运行中的容器:docker stop $(docker ps -q)
  • 删除全部容器:docker rm $(docker ps -aq)
  • 一条命令实现停用并删除容器:
    docker stop $(docker ps -q) & docker rm $(docker ps -aq)
  • 删除所有镜像:
docker rmi `docker images -q`

2. 镜像操作

  1. 新建 Dockerfile 文件
    Dockerfile 内容如下:
FROM nginxRUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html
  1. 构建镜像:
docker build -t nginx:v3 .
  1. 启动镜像:
    docker run -p 本机映射端口:镜像映射端口 -d --name 启动镜像名称 -e 镜像启动参数 镜像名称:镜像版本号

七、Dockerfile


1. 介绍

Dockerfile 是一个用来 构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

2. 基本结构

Dockerfile 一般分为四部分

  • 基础镜像信息:
    FROM:指定基础镜像,必须为第一个命令
格式:	FROM <image>	FROM <image>:<tag>	FROM <image>@<digest>示例:  	FROM mysql:5.6注:	tag或digest是可选的,如果不使用这两个值时,会使用latest版本的基础镜像
  • 维护者信息:
    MAINTAINER: 维护者信息
格式:    MAINTAINER <name>示例:    MAINTAINER Jasper Xu    MAINTAINER sorex@163.com    MAINTAINER Jasper Xu <sorex@163.com>
  • 镜像操作指令:
    以在Docker文件中使用 RUNCMDFROMEXPOSEENV 等指令。
  • RUN:构建镜像时执行的命令
  • ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
  • COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
  • CMD:构建容器后调用,也就是在容器启动时才进行调用。
  • ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数。
  • ENV:设置环境变量
  • EXPOSE:指定于外界交互的端口
  • VOLUME:用于指定持久化目录
  • 容器启动时执行指令

docker容器火狐latest版本 docker安装firefox_docker_02

2. 例子:

**以定制一个 nginx 镜像为例:**
  1. 在一个空目录下,新建一个名为 Dockerfile 文件,
    并在文件内添加以下内容:
FROM nginxRUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html
  1. FROM 和 RUN 指令的作用:
    FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。
    后续的操作都是基于 nginx。
    RUN:用于执行后面跟着的命令行命令。有以下俩种格式:
  • shell 格式:
RUN <命令行命令># <命令行命令> 等同于,在终端操作的 shell 命令。
  • exec 格式:
RUN ["可执行文件", "参数1", "参数2"]# 例如:# RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline
  1. 构建镜像:
    在 Dockerfile 文件的存放目录下,执行构建动作。
    以下示例,通过目录下的 Dockerfile 构建一个 nginx:v3(镜像名称:镜像标签)。
    $ docker build -t nginx:v3 .

八、docker-compose

1. 介绍

docker-compose.yml包含version、services、networks 3大部分

  • services的书写规则:
services:	web:        		# 服务名称,用户自定义	build:		context: ./jeecg-boot-module-system	image: busybox    # 镜像名称/镜像ID,如果本地不存在compose会拉取镜像       # 以下格式都可   	images: redis    	images: mysql:latest   	images: example-registry.com:4000/postgresql
  • build:
    基于Dockerfile,指定Dockerfile所在路径,Compose会利用它自动构建镜像,然后启动服务容器
# 绝对路径build: /path/build# 相对路径build:./build# 设定上下文跟目录,以此目录指定Dockerfilebuild:    context: ../    dockerfile: path/Dockerfile# 给Dockerfile构建的镜像命名build: ./dirimages: nginx:latest

2. docker-compose 安装

  • Docker Compose安装
官网安装步骤地址:https://docs.docker.com/compose/install/#install-compose1、安装Run this command to download the latest version of Docker Composesudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose2、赋权Apply executable permissions to the binary:sudo chmod +x /usr/local/bin/docker-compose3、# 将文件copy到 /usr/bin/目录下sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose4、测试(查看版本)Test the installationsudo docker-compose --version

3. docker-compose 部署 springboot

4. docker-compose 挂载容器里面的目录到宿主机

volumes:  - ./app:/mnt/app

这样本地的当前宿主机目录下的 app 这个目录里的东西,跟容器里的 /mnt/app 这个目录就是同步的了。

九、docker 私仓

1. 阿里云仓库

https://cr.console.aliyun.com/repository/cn-hangzhou/docker-pentiumcm/trmis/details

  1. 将镜像推送到Registry:
  • $ sudo docker login --username=pentiumcm_n registry.cn-hangzhou.aliyuncs.com
  • $ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/docker-pentiumcm/trmis:[镜像版本号]
  • $ sudo docker push registry.cn-hangzhou.aliyuncs.com/docker-pentiumcm/trmis:[镜像版本号]

十、docker权限

添加docker权限给用户