文章目录
docker — 安装与使用
一、docker安装
1. Linux
参考资料:
1.0 先决条件
-
yum 包更新到最新:
sudo yum update
-
设置 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
-
-
-
卸载旧版本:
-
较旧的Docker版本称为
docker
或docker-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 存储库安装
-
设置存储库:
# 安装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
-
安装 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
-
-
-
启动并加入开机启动
sudo systemctl start docker sudo systemctl enable docker
-
权限设置:
-
执行 docker 命令需要为 root 用户,或者 非root 用户操作 docker 时候需要加 sudo
-
避免 非root 每次都要加 sudo,可将非root用户添加到用户组中,命令如下:
# 将非root用户添加到用户组 sudo usermod -aG docker 【非root用户】
-
查看是否添加成功:
cat /etc/group
-
重启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
-
-
验证安装是否成功:
有client和service两部分表示docker安装启动都成功了
docker version
1.2 离线包安装
1.3 自动安装
在测试和开发环境中,一些用户选择使用自动 [便利脚本],在生成环境中不建议。
-
使用官方安装脚本自动安装,安装命令如下:
从 get.docker.com下载脚本 并运行它以在 Linux 上安装最新的稳定版本的 Docker:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
-
也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
2. windows
- 参考资料:https://www.cnblogs.com/joyny/p/10486682.html
二、修改 docker 路径
此章节主要介绍修改 docker 的默认镜像和容器的位置
参考资料:
- https://blog.csdn.net/u013948858/article/details/78424115
-
查看docker信息:
包含了docker的磁盘路径等
$ docker info
三、远程访问
参考:https://www.cnblogs.com/zoujiaojiao/p/13277862.html
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. 防火墙设置
-
服务器防火墙配置:
开启防火墙
https://www.cnblogs.com/xxoome/p/7115614.html
-
docker远程端口
开启2375端口:
firewall-cmd --add-port=2375/tcp --permanentfirewall-cmd --reloadfirewall-cmd --zone=public --list-ports
-
服务器配置安全组:
-
来源:0.0.0.0/0
-
端口:
- tcp:2375
-
或者直接关闭防火墙:
- 参考:https://jingyan.baidu.com/article/ff42efa9fd8c1cc19e2202bb.html
四、阿里容器服务
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
五、修改镜像位置
(一) windows
- 参考:https://blog.csdn.net/pentiumCM/article/details/117963518
六、管理容器和镜像
参考资料:
-
删除镜像容器:
https://blog.csdn.net/qq_26709459/article/details/80785761
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. 镜像操作
-
新建 Dockerfile 文件
Dockerfile 内容如下:
FROM nginxRUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html
-
构建镜像:
docker build -t nginx:v3 .
-
启动镜像:
docker run -p 本机映射端口:镜像映射端口 -d --name 启动镜像名称 -e 镜像启动参数 镜像名称:镜像版本号
七、Dockerfile
参考:https://www.cnblogs.com/panwenbin-logs/p/8007348.html
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文件中使用
RUN
,CMD
,FROM
,EXPOSE
,ENV
等指令。- RUN:构建镜像时执行的命令
- ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
- COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
- CMD:构建容器后调用,也就是在容器启动时才进行调用。
- ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数。
- ENV:设置环境变量
- EXPOSE:指定于外界交互的端口
- VOLUME:用于指定持久化目录
-
容器启动时执行指令
2. 例子:
**以定制一个 nginx 镜像为例:**
-
在一个空目录下,新建一个名为 Dockerfile 文件,
并在文件内添加以下内容:
FROM nginxRUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html
-
FROM 和 RUN 指令的作用:
FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。
后续的操作都是基于 nginx。
RUN:用于执行后面跟着的命令行命令。有以下俩种格式:
-
shell 格式:
RUN <命令行命令># <命令行命令> 等同于,在终端操作的 shell 命令。
-
exec 格式:
RUN ["可执行文件", "参数1", "参数2"]# 例如:# RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline
-
-
构建镜像:
在 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 安装
https://blog.csdn.net/ytangdigl/article/details/103831739
-
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
https://blog.csdn.net/xiaoguaishou_520/article/details/105216002
4. docker-compose 挂载容器里面的目录到宿主机
volumes: - ./app:/mnt/app
这样本地的当前宿主机目录下的 app 这个目录里的东西,跟容器里的 /mnt/app 这个目录就是同步的了。
九、docker 私仓
1. 阿里云仓库
https://cr.console.aliyun.com/repository/cn-hangzhou/docker-pentiumcm/trmis/details
-
将镜像推送到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权限给用户
https://blog.csdn.net/liangllhahaha/article/details/92077065