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 机器上,也可以实现虚拟化.容器是完全使用沙箱机制 ...
随机推荐
- 公司新来的小姐姐不懂java中的static关键字,这样给她描述不香吗?
前言 static关键字是摆在刚入行编程语言的小白们面前的一道难题,为什么要用static?使用它有什么好处?修饰方法和修饰变量有什么区别?本文将就java中static关键字的使用方法及注意事项进行 ...
- Echo Delay:FL中好用的声音制作处理方法
今天来一起研究FL Studio的Echo Delay的作用,Echo Delay可以从MIDI输入创建回声,并允许我们通过音量,声像,切除和共振,音高和时间来操纵延迟. 图1:Echo Dealy ...
- uniapp兄弟组件如何修改数据?一看就废!
1. 如A组件里有个num = 10 并需要在生命周期函数created里通过uniapp提供的uni.$on方法来注册全局事件,并加一个形参.( uni.$on( '自定义事件名') , 形参 =& ...
- 慢SQL优化:where id in (select max(id)...) 改为join后性能提升400倍
背景 有两张表,都是主键递增,类似于主表和明细表: statistics_apply:统计申请表,主键applyId,7万多条记录 statistics_apply_progress:统计申请进度表( ...
- mybatis中的一些标签使用
主要有两个配置文件,一个是主配置文件SqlConfig.xml, 还有一个是dao接口实现类相对应的mapper的配置文件 .比如userDao的userDao.xml配置文件. 1.resultTy ...
- thinkPHP 无法加载控制器:Hello
出现这种问题的情况下要看看: (1).控制器的名称是否写对,控制器的命名规范(别忘下class) 控制器的命名规则1.必须采用大驼峰的命名规则2.必须以Controller.class.php来结尾I ...
- Linux没有netstat和ifconfig命令问题
安装了精简版命令行centos7系统,运行netsta查看端口和ifconfig查看IP命令都提示找不到命令. 解决方法: yum search ifconfig 通过yum search 这个命令我 ...
- GitHub 上 1.3k Star 的 strman-java 项目有值得学习的地方吗?源码视角
大家好,我是沉默王二. 很多初学编程的同学,经常给我吐槽,说:"二哥,你在敲代码的时候会不会有这样一种感觉,写着写着看不下去了,觉得自己写出来的代码就好像屎一样?" 这里我必须得说 ...
- FlashCache初体验
注意: 测试用的是CentOS6.5 内核版本2.6.32-431.el6.x86_64 步骤: 上传CentOS6.5做本地yum源,安装以下包. yum install gcc yum insta ...
- 微信小程序 下拉刷新
<scroll-view class='scroll-view-container' scroll-y="true" bindscrolltolower='scrollToL ...