https://www.bilibili.com/video/BV1Ls411n7mx?p=4&spm_id_from=pageDriver
解决运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
准备
你需要64位的ubuntu操作系统 Cosmic 18.10、Bionic 18.04 (LTS)、Xenial 16.04 (LTS)其中之一。
docker支持的架构为:x86_64 (or amd64), armhf, arm64, s390x (IBM Z), and ppc64le (IBM Power)。
查看ubuntu系统是32位的还是64位的:getconf LONG_BIT
查看系统信息:lsb_release -a
查看操作系统架构:uname -a
卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
/var/lib/docker的内容,包括镜像、容器、卷和网络,可以保留也可以删除。
执行之后,输入docker —version仍能看到docker版本
采用另一种方式:
sudo apt-get purge docker
sudo apt-get purge docker-ce
sudo apt-get remove -y docker-*
sudo rm -rf /var/lib/docker(慎重:这是镜像和容器的默认存储位置,不要误删)
(apt-get remove 会删除软件包而保留软件的配置文件
apt-get purge 会同时清除软件包和软件的配置文件)
Install using the repository
1)sudo apt-get update
2)允许apt通过https使用repository安装软件包
sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
3)添加Docker官方GPG key
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
(国内阿里云版 sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -)
4)验证key的指纹
sudo apt-key fingerprint 0EBFCD88
正常输出为:
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) docker@docker.com
sub rsa4096 2017-02-22 [S]
5)添加稳定版repository
sudo add-apt-repository \ “deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable”
国内阿里云版:
sudo add-apt-repository \ “deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) \ stable”
5)sudo apt-get update
6)安装最新版本的docker ce和containerd
sudo apt-get install docker-ce docker-ce-cli containerd.io
(如果您启用了多个Docker存储库,则在apt-get install或apt-get update命令中未指定版本的情况下安装或更新将始终安装尽可能高的版本)
7)安装指定版本的
查看可获取的版本 apt-cache madison docker-ce
sudo apt-get install docker-ce=
8)验证:docker —version
sudo docker run hello-world
9)将非root用户加入docker组,以允许免sudo执行docker
sudo gpasswd -a 用户名 docker
重启服务并刷新docker组成员
sudo service docker restart newgrp - docker
10)设置开机自启动并启动 Docker-ce(安装成功后默认已设置并启动,可忽略)
sudo systemctl enable docker sudo systemctl start docker
11)升级版本
a) sudo apt-get update
b) 按照以上步骤安装新版本
12)安装docker-compose
https://www.runoob.com/docker/docker-compose.html
sudo curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s-uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose —version
二、docker相关命令
2.1 docker命令
2.2 镜像相关指令
2.3 容器相关命令
三、Docker容器的数据卷

- 数据卷是宿主机中的一个目录或文件
- 当容器目录和数据卷目录绑定后,对方的修改会立即同步
- 一个数据卷可以被多个容器同时挂载
- 一个容器也可以被挂载多个数据卷
数据卷作用
| 关键字 | 作用 | 备注 |
|---|---|---|
| FROM | 指定父镜像 | 指定dockerfile基于那个image构建 |
| MAINTAINER | 作者信息 | 用来标明这个dockerfile谁写的 |
| LABEL | 标签 | 用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看 |
| RUN | 执行命令 | 执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN [“command” , “param1”,”param2”] |
| CMD | 容器启动命令 | 提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD [“command” , “param1”,”param2”] |
| ENTRYPOINT | 入口 | 一般在制作一些执行就关闭的容器中会使用 |
| COPY | 复制文件 | build的时候复制文件到image中 |
| ADD | 添加文件 | build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务 |
| ENV | 环境变量 | 指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value |
| ARG | 构建参数 | 构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数 |
| VOLUME | 定义外部可以挂载的数据卷 | 指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME [“目录”] |
| EXPOSE | 暴露端口 | 定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp |
| WORKDIR | 工作目录 | 指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径 |
| USER | 指定执行用户 | 指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户 |
| HEALTHCHECK | 健康检查 | 指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制 |
| ONBUILD | 触发器 | 当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大 |
| STOPSIGNAL | 发送信号量到宿主机 | 该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。 |
| SHELL | 指定执行脚本的shell | 指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shell |
五、docker 私有仓库搭建
5.1 私有仓库搭建
1、拉取镜像
docker pull registry
2、 启动容器
docker run -id --name=registry -p 5000:5000 registry
3、 打开浏览器
输入地址http://私有仓库服务器ip:5000/v2/_catalog,看到{“repositories”:[]} 表示私有仓库 搭建成功
4、修改deamon.json
vim /etc/docker/daemon.json
在上述文件中添加一个key,保存退出。此步用于让 docker 信任私有仓库地址;注意将私有仓库服务器ip修改为自己私有仓库服务器真实ip
{“insecure-registries”:[“私有仓库服务器ip:5000”]}
5、重启docker服务
systemctl restart docker
docker start registry
5.2 将镜像上传到私有仓库
1、 标记镜像为私有仓库的镜像
docker tag centos:7 私有仓库服务器IP:5000/centos:7
2、上传标记的镜像
docker push 私有仓库服务器IP:5000/centos:7
5.3 从私有仓库拉取镜像
docker pull 私有仓库服务器ip:5000/centos:7



