欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Ubuntu16.04:安装docker

程序员文章站 2022-06-03 09:23:44
...
  1. Docker是什么
    Docker是一个由GO语言写的程序运行的“容器”(Linux containers, LXCs),它是完整的一套容器管理系统
    Docker提供了一组命令,让用户更加方便直接地使用容器技术,而无需要过多关心底层内核技术

    注1:什么是容器
    一个容器就相当于一个虚拟机

    注2:docker用途,目前有三大类
    1.提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境
    2.提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容
    3.组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构

在ubuntu中如果要使用docker首先要安装vim
在安装vim的前提下,要更新apt包索引
注意首先要切换成管理员登录
sudo su

sudo apt-get update

然后等更新成功后再安装vim

sudo  apt-get install vim

再进行一次更新,为了让更新的更快我们在此次更新后进行换源,换成阿里源

更新

sudo apt-get update

换源


首先输入以下代码
sudo vim /etc/apt/sources.list

Ubuntu16.04:安装docker


编辑先输入i
保存退出 esc键,:wq
将上面有的红色内容都注释掉然后换成以下代码片
在这里插入代码片
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

然后弄好之后再次更新,换源就好了当然本人觉得centos比较好,没那么麻烦,嘿嘿-------------------------

Ubuntu16.04安装docker(在线方式)

1.卸载可能存在的旧版本

apt-get remove docker docker-engine docker-ce docker.io

2.更新apt包索引

apt-get update

3.安装以下包以使apt可以通过HTTPS使用存储库(repository)

apt-get install -y apt-transport-https ca-certificates curl software-properties-common

4.添加Docker官方的GPG**

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

成功后应该显示OK

5.设置stable存储库

add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”

6.再更新一下apt包索引

apt-get update

7.安装最新版本的Docker CE

apt-get install -y docker-ce

8.验证

8.1查看docker服务是否启动

systemctl status docker

或如下命令

service docker status

8.2若未启动,则启动docker服务

systemctl start docker

或如下命令

service docker start

8.3经典的hello world

docker run hello-world

输入以上命令后,窗口有输出,表示docker安装成功

注1:linux内核版本要求
docker 目前支持的最低 ubuntu 版本为 14.04 LTS ,但实际上从稳定性上考虑,推荐使用
16.04或18.0.4 LTS 版本,并且系统内核越新越好,以支持 Docker 最新的特性

    内核版本信息检查
    uname -a 或 cat /proc/version

注2:查看docker的版本,第二个命令是详细查看
docker --version 或 docker info

注3:如果安装了sysv-rc-conf,也可以通过sysv-rc-conf查看docker的状态、并里德启动和关闭操作

镜像
Docker 运行容器前需要本地存在对应的镜像, 如果镜像不存在, Docker 会尝试先从默认镜像仓库下载
(默认使用 Docker Hub 公共注册服务器中的仓库), 用户也可以通过配置,使用自定义的镜像仓库

镜像相关操作
1.配置加速器
国内从Docker Hub下载镜像速度很慢,我们可以配置阿里云专属加速器来解决
1.浏览器访问并登陆阿里云(淘宝或支付宝帐号登陆也可以)
https://www.aliyun.com/

 2.登陆后,进入阿里云“控制台”,搜索“容器镜像服务”,然后点击菜单:“镜像中心”-->“镜像加速器”
   最后,将容器右边的“加速器地址”复制下来即可
   https://2cxr0r2h.mirror.aliyuncs.com

Ubuntu16.04:安装docker

 3.设置容器镜像服务的密码(可选)
   容器镜像服务(Container Registry)提供多地域镜像托管能力,稳定的国内外镜像构建服务,便捷的镜像授权功能,
   方便用户进行镜像全生命周期管理。在开通流程中,您需要设置独立于账号密码的Registry登录密码,便于镜像的上传、下载。
   注1:此步骤为可选,如果需要使用阿里云来管理你的镜像 ,此步骤必须设置

 4.修改docker相关配置
   linux输入命令,
   vim /etc/docker/daemon.json
   添加下面内容(地址替换成上面的加速器地址):
   {
     "registry-mirrors":["https://2cxr0r2h.mirror.aliyuncs.com"]
   }

 5.重新加载daemon
   systemctl daemon-reload

 6.重启docker
   systemctl restart docker 

2.搜索镜像
docker search 镜像名称
例如:docker search mysql

3.下载镜像
docker pull 镜像名

 例如, 获取一个 Ubuntu 16.04 系统的基础镜像可以使用如下的命令
 ## 未指定版本一般会使用latest(最新的)版本
 docker pull ubuntu 
 ## 或者直接指定版本
 docker pull ubuntu:16.04
 docker pull ubuntu:18.04

4.查看宿主机上的镜像
docker images

 注1:查看image位置
      ## /var/lib/docker为docker默认安装目录
      cd /var/lib/docker/containers 
      ls

5.删除镜像
docker rmi 镜像ID/标签
例如:
docker rmi 2ca708c1c9cc
docker rmi ubuntu:latest 或 docker rmi ubuntu:16.04

 注1:如果提示镜像被使用,需要先停止某个ID的容器,那么要先删除容器再删除镜像。或者强制删除镜像
      docker rmi -f ubuntu:16.04 
      -f, -force: 强制删除镜像, 即使有容器依赖它
      注意, 通常并不推荐使用-f参数来强制删除一个存在容器依赖的镜像。 正确的做法是,
      先删除依赖该镜像的所有容器, 再来删除镜像

下面的内容后续再讲

6.保存镜像
docker commit -m=“description about images” --author=“author” {container_id} {repository/images_name:tag}

7.推送镜像到代码仓库(以阿里云docker平台为例)
docker login --username=your_username registry.cn-beijing.aliyuncs.com
docker tag [ImageId] registry.cn-beijing.aliyuncs.com/[命名空间]/[仓库名称]:[镜像版本号]
docker push registry.cn-beijing.aliyuncs.com/[命名空间]/[仓库名称]:[镜像版本号]

8.使用Dockerfile创建新的镜像(注意:末尾有一个点,表示当前路径)
docker build -t “repository/images_name:tag” .

Docker容器
容器是Docker的另一个核心概念。简单来说,容器是镜像的一个运行实例。所不同的是,
镜像是静态的只读文件,而容器带有运行时需要的可写文件层,同时,容器中的应用进程处于运行状态

如何理解:类->实例,镜像->容器

常用操作
1.启动、停止、重启容器命令
docker start 容器ID或name
docker stop 容器ID或name
docker restart 容器ID或name

2.查看当前运行的容器
docker ps

3.查看所有容器
docker ps -a

4.删除容器
docker rm 容器ID

 注1:主要支持的选项包括
      -f, --force=false 是否强行终止并删除一个运行中的容器
      -1, --link=false :删除容器的连接 ,但保留容器;
      -v, --volumes=false :删除容器挂载的数据卷
 注2:删除容器,还可以参考附录三,可根据条件删除

5.创建容器(重点)
docker create -it ubuntu:latest
docker create -it --name tomcat01 ubuntu:latest

 注1:命令说明
      create:关键字
      ubuntu:latest:即镜像名字:版本(或镜像ID),将使用指定镜像创建容器。另外,Docker会检查本地是否存在指定的镜像,
                     不存在就从公有仓库下载
      -it:是两个参数,-i:interactive容器具有交互功能,-t:容器将提供伪终端
      --name:指定生成的容器的名字,允许空,如果不指定会自动生成

 注2:此时,通过如下命令,可以查看到刚刚创建的容器
      docker ps - a
 注3:create命令新建的容器处于停止状态,可以使用start命令来启动它
      docker start 容器ID
 注4:docker容器状态可参考“images/docker容器状态转换图.png”(重点~~~重点~~~重点~~~)

6.启动容器(重点)
docker start 容器ID/name

 注1:更多的时候,需要让 Docker 容器在后台以守护态( Daemonized )形式运行 此时,可以通过添加-d参数来实现
      docker start -d 容器ID/name
 注2:docker ps 查看已启动容器,注意:此时容器状态为UP

7.进入容器(重点)
docker exec -it 容器ID/容器NAME /bin/bash
## 简写
docker exec -it 容器ID/容器NAME bash

 注1:只有在容器启动的时候即UP状态才能进入容器终端

8.创建\启动\进入容器(run=create+start)
## 新建->启动->进入容器
docker run -it ubuntu:latest /bin/bash

 ## 指定了端口号
 docker run -it -p 7001:8001 ubuntu:latest /bin/bash 

 ## 使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口     
 docker run -it -P --name tomcat03 ubuntu:latest /bin/bash

 ## 此命令没有进入容器,可以之后再进入
 docker run -it -d --name webapp ubuntu:16.04
 docker exec -it webapp /bin/bash  

 参数说明:
 -p:端口映射80为宿主端口,8080为容器端口
 -P: 注意是大写P,使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口
 -d:后台运行模式
 --name:容器的名字

9.退出容器
退出时如果想继续运行容器:按顺序按【ctrl+p】,【ctrl+q】
如果不想继续运行:按【ctrl+d】或输入exit

10.宿主机和docker容器之间复制文件(重点)
docker cp 宿主机绝对路径 容器id:路径

查看Docker容器内部信息
1.进入容器内部获取信息
docker exec -it 容器ID/容器NAME /bin/bash
如果此时已进入容器内部,可分别执行hostname、ip addr、env这三个命令可以获取相关信息
hostname
ip addr
env

2.在宿主机,执行docker exec命令
获取容器的hostname:docker exec tomcat001 hostname
获取容器ip地址:docker exec tomcat001 ip addr
获取容器环境变量:docker exec tomcat001 env

3.在宿主机,使用docker inspect命令
推荐使用docker inspect来获取信息,这个命令会返回一个json字符串,里面以key-value的格式准备了该容器相关的信息,
内容十分丰富,可以一次性取得全部内容,也可以返回指定key对应的信息
docker inspect 容器ID/容器NAME

 如果我们只对其中的一些感兴趣,例如hostname、ip地址、环境变量,该如何查看呢
 查看数据所在节点,根据节点位置编写命令,例如:
 hostname位于Config.Hostname这个节点位置,所以执行命令docker inspect -f {{.Config.Hostname}} tomcat001即可获取到hostname  

如何卸载原先安装的 docker
1.打开Terminal,执行下面命令:
sudo apt-get purge docker-ce

2.删除Docker安装目录
sudo rm -rf /var/lib/docker

3.验证是否删除成功
docker info

bash: /usr/bin/docker: No such file or directory

我们可以看到已经无法找到 docker 安装目录,证明 卸载成功

关于删除容器
方法一:
#显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID,
sudo docker ps -a|grep Exited|awk ‘{print $1}’
#查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器
sudo docker rm docker ps -a|grep Exited|awk '{print $1}'

方法二:
#删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)
sudo docker rm $(sudo docker ps -a -q)

方法三:
#根据容器的状态,删除Exited状态的容器
sudo docker rm $(sudo docker ps -qf status=exited)

方法四:
#Docker 1.13版本以后,可以使用 docker containers prune 命令,删除孤立的容器。
sudo docker container prune (推荐)

docker常用命令(不断补充中)
1.docker查看容器的cpu占用率
docker stats

centos7 安装docker的方式看博文
https://blog.csdn.net/li1325169021/article/details/90780627