Docker(一):Docker安装
简介
Docker是dotcloud公司开源的一款产品,主要基于PAAS平台为开发者提供服务。是解决运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
Docker组件
Docker仓库:https://hub.docker.com
Docker Client:Docker 的客户端。
Docker Server:Docker daemon 的主要组成部分,接受用户通过Docker Client发出的请求,并按照相应的路由规则实现路由分发。
Docker镜像:Docker镜像运行之后生成容器,镜像就好比图纸,容器相当于根据图纸制作好的实物。
Docker安装
前提条件
安装Docker,官方推荐必须需要一个CentOS7系统。该centos-extras库必须启用。默认情况下,此存储库是启用的,但是如果已禁用它,则需要重新启用它。overlay2建议使用存储驱动程序。
卸载旧版本
# 全新的ContOS7精简版,没有安装过docker
[root@localhost ~]# yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
Loaded plugins: fastestmirror
Repository epel is listed more than once in the configuration
Repository epel-debuginfo is listed more than once in the configuration
Repository epel-source is listed more than once in the configuration
No Match for argument: docker
No Match for argument: docker-client
No Match for argument: docker-client-latest
No Match for argument: docker-common
No Match for argument: docker-latest
No Match for argument: docker-latest-logrotate
No Match for argument: docker-logrotate
No Match for argument: docker-engine
No Packages marked for removal
安装
官方推荐使用仓库安装docker,若不方便可选择rpm软件包或脚本安装。此次演示的为官方推荐。
设置仓库
[root@localhost ~]# yum install -y yum-utils
# 注意,此仓库为官方提供仓库,国内用户访问网络很坑,这里选择阿里仓库
[root@localhost ~]# yum-config-manager \
> --add-repo \
> https://download.docker.com/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
- 阿里仓库
[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
安装Docker引擎
# 可选
[root@k8s-node02 ~]# yum update
# 安装Docker引擎
[root@localhost ~]# yum install docker-ce docker-ce-cli containerd.io
启动Docker
[root@localhost ~]# systemctl start docker
查看状态
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2020-04-11 10:15:26 CST; 15s ago
Docs: https://docs.docker.com
Main PID: 18129 (dockerd)
Tasks: 12
Memory: 46.4M
CGroup: /system.slice/docker.service
└─18129 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Apr 11 10:15:25 localhost.localdomain dockerd[18129]: time="2020-04-11T10:15:25.935145283+08:00" level=info msg="scheme \"unix\" not registered, fallback to default scheme" module=grpc
Apr 11 10:15:25 localhost.localdomain dockerd[18129]: time="2020-04-11T10:15:25.935172947+08:00" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock 0 <nil>}] <nil>}" module=grpc
Apr 11 10:15:25 localhost.localdomain dockerd[18129]: time="2020-04-11T10:15:25.935193242+08:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
Apr 11 10:15:25 localhost.localdomain dockerd[18129]: time="2020-04-11T10:15:25.962339880+08:00" level=info msg="Loading containers: start."
Apr 11 10:15:26 localhost.localdomain dockerd[18129]: time="2020-04-11T10:15:26.230751040+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to...rred IP address"
Apr 11 10:15:26 localhost.localdomain dockerd[18129]: time="2020-04-11T10:15:26.329307123+08:00" level=info msg="Loading containers: done."
Apr 11 10:15:26 localhost.localdomain dockerd[18129]: time="2020-04-11T10:15:26.353432378+08:00" level=info msg="Docker daemon" commit=afacb8b graphdriver(s)=overlay2 version=19.03.8
Apr 11 10:15:26 localhost.localdomain dockerd[18129]: time="2020-04-11T10:15:26.353629385+08:00" level=info msg="Daemon has completed initialization"
Apr 11 10:15:26 localhost.localdomain dockerd[18129]: time="2020-04-11T10:15:26.381834522+08:00" level=info msg="API listen on /var/run/docker.sock"
Apr 11 10:15:26 localhost.localdomain systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.
测试
查看版本
[root@localhost ~]# docker version
Client: Docker Engine - Community
Version: 19.03.8
API version: 1.40
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:27:04 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.8
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:25:42 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
helloworld
# 执行三次也没有成功, 原因是下载镜像失败
[root@localhost ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/latest: Get https://auth.docker.io/token?scope=repository%3Alibrary%2Fhello-world%3Apull&service=registry.docker.io: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.
[root@localhost ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pulling fs layer
docker: error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/fc/fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e/data?verify=1586574550-P3eY%2BuJ7zYienz1l526gNyOltTI%3D: read tcp 192.168.0.11:43826->104.18.121.25:443: read: connection reset by peer.
See 'docker run --help'.
[root@localhost ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.
配置镜像加速
cat > /etc/docker/daemon.json <<-EOF
{
"registry-mirrors": ["https://e9vsm9qn.mirror.aliyuncs.com"]
}
EOF
# 加载daemon配置
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
阿里镜像加速器地址(需要登录):https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
再次执行helloworld
[root@localhost ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:f9dfddf63636d84ef479d645ab5885156ae030f611a56f3a7ac7f2fdd86d7e4e
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
卸载Docker
- 卸载Docker Engine,CLI和Containerd软件包:
[root@localhost ~]# yum remove docker-ce docker-ce-cli containerd.io
- 主机上的映像,容器,卷或自定义配置文件不会自动删除。要删除所有图像,容器和卷:
[root@localhost ~]# rm -rf /var/lib/docker
Docker常用命令
帮助命令
# docker版本
[root@localhost ~]# docker version
# docker信息
[root@localhost ~]# docker info
# docker帮助
[root@localhost ~]# docker --help
镜像命令
# 查询本地所有镜像,docker images [OPTIONS]
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest fce289e99eb9 15 months ago 1.84kB
OPTIONS说明:-a 列出本地所有镜像 -q 只显示镜像id
[root@localhost ~]# docker images -q
fce289e99eb9
# 在docker仓库中查找nginx镜像, docker search [OPTIONS] [镜像名字]
[root@localhost ~]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12958 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1769 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 764 [OK]
#省略
OPTIONS说明:-s [执行数值],列出start数不小于指定值的镜像
[root@localhost ~]# docker search -s 100 nginx
Flag --stars has been deprecated, use --filter=stars=3 instead
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12958 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1769 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 764 [OK]
linuxserver/nginx An Nginx container, brought to you by LinuxS… 102
# 将镜像下载到本地, docker pull [镜像名字]:[TAG] 默认为:latest
[root@localhost ~]# docker pull nginx
Using default tag: latestdocker pull nginx
latest: Pulling from library/nginx
c499e6d256d6: Pull complete
74cda408e262: Pull complete
ffadbd415ab7: Pull complete
Digest: sha256:282530fcb7cd19f3848c7b611043f82ae4be3781cb00105a1d593d7e6286b596
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
# 删除本地镜像,docker rmi [OPTIONS] [镜像名字/ID]:[TAG] [镜像名字/ID]:[TAG],只能删除没有运行的镜像,-f 强制删除
[root@localhost ~]# docker rmi hello-world
Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container 1566e1e530c4 is using its referenced image fce289e99eb9
[root@localhost ~]# docker rmi -f hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:f9dfddf63636d84ef479d645ab5885156ae030f611a56f3a7ac7f2fdd86d7e4e
Deleted: sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e
# 删除全部本地镜像
[root@localhost ~]# docker rmi -f $(docker images -qa)
Untagged: nginx:latest
Untagged: nginx@sha256:282530fcb7cd19f3848c7b611043f82ae4be3781cb00105a1d593d7e6286b596
Deleted: sha256:ed21b7a8aee9cc677df6d7f38a641fa0e3c05f65592c592c9f28c42b3dd89291
Deleted: sha256:8a305f371a6c3c445a1dfc500c1364743868a269ab8cdaf95902692e82168352
Deleted: sha256:d079ef06ec1f10a8050887365f9a940b39547ba6bcc46b16a463e740984f3223
Deleted: sha256:c3a984abe8a88059915bb6c7a1d249fd1ccc16d931334ac8816540b0eb686b45
容器命令
镜像运行才会生成容器。
Docker(一):Docker安装的更多相关文章
- docker学习(1) 安装
docker是啥就不多讲了,简言之就是更轻量.更牛叉的新一代虚拟机技术.下面是安装步骤: 一.mac/windows平台的安装 docker是在linux内核基础上发展而来的,无法直接运行在mac/w ...
- Docker实践:安装wordpress
本文将示例如何使用Docker来安装wordpress.使用三种方法: 1.基于官方的wordpress镜像使用docker run实现: 2.基于官方的wordpress镜像使用fig命令编排工具实 ...
- 原创docker dcos 的安装
原创哈,上个星期无意间发现了一个可以好东西 DC/OS https://dcos.io 这个是官网哈 然后就痛苦的折磨了一个多星期; 基本是参照到https://dcos.io/docs/1.7/ad ...
- Docker初步认识安装和简单实例
前话 问题 开发网站需要搭建服务器环境,FQ官网下载软件包,搭建配置nginx,apache,数据库等.官网没有直接可用的运行版本,担心网络流传的非官方发布软件包不安全还得自行编译官方源码安装,忘记步 ...
- Docker系列(一)安装
操作系统版本:Centos7 Docker版本:1.8 设置安装源 1 cat > /etc/yum.repos.d/docker.repo << -EOF 2 [dockerr ...
- 【Howie玩docker】-docker安装
windows忽略,小苹果木有,所以咱只看ubuntu和centOS的吧! 参考书<Docker技术入门与实战> Ubuntu 14.04安装Docker Ubuntu 14.04版本官方 ...
- Docker 简介及安装
Docker简介: 什么是Docker?将应用程序自动部署到容器 go语言开源引擎 Github地址:https://github.com/docker/docker 2013年初 dotCloud ...
- .NET遇上Docker - Harbor的安装与基本使用
Harbor是一个开源企业级Docker注册中心,可以用于搭建私有的Docker Image仓库.可以实现权限控制等. 安装Harbor 首先,需要安装Docker和Docker Compose,参考 ...
- [Docker基础]Docker安装教程
Install Docker Docker支持几乎所有的Linux发行版,也支持Mac和Windows. 各操作系统的安装方法可参考Docker官网. 安装环境 ubuntu 16.04 Docker ...
- docker基础及安装
Docker介绍: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制 ...
随机推荐
- 循序渐进VUE+Element 前端应用开发(27)--- 数据表的动态表单设计和数据存储
在我们一些系统里面,有时候会需要一些让用户自定义的数据信息,一般这些可以使用扩展JSON进行存储,不过每个业务表的显示项目可能不一样,因此需要根据不同的表单进行设计,然后进行对应的数据存储.本篇随笔结 ...
- 面试阿里,字节跳动99%会被问到的java线程和线程池,看完这篇你就懂了!
前言: 最近也是在后台收到很多小伙伴私信问我线程和线程池这一块的问题,说自己在面试的时候老是被问到这一块的问题,被问的很头疼.前几天看到后帮几个小伙伴解决了问题,但是问的人有点多我一个个回答也回答不过 ...
- python 中 try...finally... 的优雅实现
1. 关于 try.. finally.. 假如上帝用 python 为每一个来到世界的生物编写程序,那么除去中间过程的种种复杂实现,最不可避免的就是要保证每个实例最后都要挂掉.代码可简写如下: tr ...
- FL Studio杂项设置页讲解(上)
今天我们来看一下FL Studio通道设置窗口中的杂项设置页面.该页面存在于FL Studio绝大多数的通道中,我们可以通过它来设置一些发生器或者第三方插件的参数,接下来就让我们一起来学习下这些参数的 ...
- 使用iOS 设备管理器 iMazing导出苹果设备中的录音文件
iMazing是一款功能强大的苹果设备管理软件,能为用户提供便捷的录音文件导出功能.用户可以直接将录音文件从苹果设备中导出,接下来,就让小编为大家演示一下如何操作吧. 图1:iMazing界面 1.打 ...
- guitar pro系列教程(二十七):Guitar Pro教程之理解记谱法
前面的章节我们讲解了很多关于Guitar Pro'的功能使用,今天小编还是采用图文结合的方式为大家讲解它的理解记谱法,对于很多新人来说,在我们看谱之前,我们肯定要先熟悉他的一些功能如何使用以及一些关于 ...
- L - Deque 题解(区间dp)
题目链接 题目大意 给你一个双端队列里面有n个数组元素(n<=3000) 有两个人,每次一个人都可以选择队列里的首元素或者尾元素删除,轮流进行,删除后那个人即可获得这个元素的值 第一个人的总权值 ...
- shardingsphere与分布式事务
rt https://blog.csdn.net/l1028386804/article/details/79769043 https://blog.csdn.net/qq_20387013/arti ...
- 败家玩意儿!Redis 竟然浪费了这么多内存!
作为内存数据库,内存空间大小对于 Redis 来说是至关重要的.内存越多,意味着存储的数据也会越多.但是不知道你有没有遇到过这样的情况,明明空间很大,但是内存的使用却不是很理想. 为什么会出现这样的情 ...
- 如何使用Python 进行数据可视化
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 在进行数据分析的时候,经常需要将数据进行可视化,以方便我们对数据的认识和理解. 0,Matplotl ...