Docker入门及技术指南

初识Docker

参考文档

《docker 从入门到实践.pdf》《第一本Docker书 完整版.pdf》

版本

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,
强调安全,付费使用,支持周期 24 个月。

手册帮助:Docker 教程 | 菜鸟教程CentOS Docker 安装 | 菜鸟教程Docker 教程 | 菜鸟教程

                  https://docs.docker.com/ 

docker hub 镜像资源站 :Docker Hub   

什么是Docker?

Docker 是使用 Go 语言开发的一种 Linux 容器封装,提供简单易用的使用接口,是目前最流行的 Linux 容器解决方案。

Docker与VM的区别

参考:Docker与VM虚拟机的区别以及Docker的特点_JingZhunBianCheng的博客-CSDN博客_docker和虚拟机的区别

docker和传统虚拟机技术的特性比较:docker和传统虚拟机技术的特性比较_hello_清风的博客-CSDN博客

Docker容器化虚拟机:抛弃传统虚拟机:Docker容器化虚拟机:抛弃传统虚拟机_boonya的博客-CSDN博客_容器化 虚拟机

Docker安装

Centos7.0以下的参考:CentOS 6.5下Docker的安装_猿来如此呀的博客-CSDN博客_centos6.5安装dockerCentOS Docker 安装 | 菜鸟教程CentOS 6.5下Docker的安装_猿来如此呀的博客-CSDN博客_centos6.5安装docker

以下适用于centos7.0以上

注:最新安装方法参见“CentOS Docker 安装 | 菜鸟教程” 

安装命令如下:
$ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

1、更新update到最新的版本

# yum  -y update

2、卸载老版本docker

# yum  remove docker  docker-common docker-selinux  docker-engine

注意:如果centos 8版本,安装docker会报错“Unable to find a match: docker”。centos8默认使用podman代替docker,所以需要containerd.io(参考centos8 安装docker报错Error: Unable to find a match: docker_架构路上的博客-CSDN博客

# yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm

将服务器上的软件包信息 现在本地缓存,以提高 搜索 安装软件的速度

#yum makecache

必要是清除yum缓存,yum clean all,重新生成。

3、安装需要的软件包

# yum install -y yum-utils  device-mapper-persistent-data lvm2

4、设置yum源

# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum makecache
 

# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

5、查看docker版本

 yum list docker-ce --showduplicates|sort -r  

6、安装docker

yum install -y docker-ce

指定版本安装,如下:

yum  install  docker-ce-18.03.1.ce -y

7、启动docker

sudo systemctl start docker

8、加入开机自启

sudo systemctl enable docker

9、配置国内镜像

vi /etc/docker/daemon.json

{

    "registry-mirrors": ["http://hub-mirror.c.163.com"]

}

 阿里云提供推荐镜像地址的方法如下:

访问阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台,取得如下地址

根据上述界面,复制镜像地址,来配置docker镜像地址,是阿里云给你所属地速度最佳的地址,配置进去就可以用了。

换镜像源还有另外方法(替换文件网址名称)

cd /etc/yum.repos.d/
vim docker-ce.repo
# 按ecs进行非编辑模式
:%s/https:\/\/download.docker.com/https:\/\/mirrors.aliyun.com\/docker-ce/g

几个基本概念

Docker 包括三个基本概念
镜像( Image )
容器( Container )
仓库( Repository )

Docker三剑客

Docker-Composer

Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。

Docker-machine

Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安
装 Docker 环境。Docker Machine 项目基于 Go 语言实现,目前在 Github 上进行维护。

Docker-Swarm

Docker Swarm 是 Docker 官方三剑客项目之一,提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。使用它,用户可以将多个 Docker 主机封装为单个大型的虚拟 Docker 主机,快速打造一套容器云平台。

镜像操作

  • 获取镜像  #docker pull redis:latest
  • 列出镜像  #docker images

                #docker image ls

  • 删除镜像  #docker image rm [选项]              [选项]可以是镜像短 ID 、 镜像长 ID 、 镜像名 或者 镜像摘要

    删除镜像为none的 #  docker rmi $(docker images | grep "none" | awk '{print $3}')

  • 构建镜像实例:#docker build -t nginx-yan1 .

                        # docker build -t angelkitty/nginx_web:v1 .

  • 保存镜像  #docker save -o a.tar 1e1148e4cc2c

                #docker save 1e1148e4cc2c > /home/a.tar

  • 加载镜像  #docker load -i nginx-yan1.tar 1e1148e4cc2c

                #docker load < /home/a.tar

  • 更改docker标签:#docker tag ae91f9dad35b nginx-yan1:20190328
  • 更改docker容器名:# docker rename 原容器名  新容器名

# docker rename mysql-master57 mysql-master8  

  • 构建镜像实例  #docker build -t nginx-yan1:v1 .

注:当前目录中应当包含脚本文件Dockerfile容器操作

  • 停止容器 #  docker container stop <container id>

   批量    # docker container stop $(docker ps -a -q)

  • 列出所有容器  #docker ps
  • 删除容器  # docker container rm <container id>

   批量    # docker container rm $(docker ps -a -q)

  • 根据镜像创建容器

# docker run -itd --name redis-yan-v1 --net mynetwork -p 6380:6379 --ip 192.168.0.2 redis-yan:v1

-d: 后台运行容器,并返回容器ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-p: 端口映射,格式为:主机(宿主)端口:容器端口

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

--ip: 为容器制定一个固定的ip

--net: 指定网络模式

  • 进入容器

# docker exec -it redis-yan-v1 bash

  docker exec -it <container id> bash

仓库操作

  • 下载仓库组件生成镜像:# docker pull cenos
  • 上传本地镜像到仓库 # docker push 127.0.0.1:5000/ubuntu:latest
  • 查看仓库中的镜像 # $ curl 127.0.0.1:5000/v2/_catalog
  • 查询远程仓库镜像:#docker search centos

自定义网络操作

  • 列出所有的网络配置  # docker network ls
  • 创建自定义网络  #  docker network create --subnet=192.168.0.0/16 mynetwork
  • 查看容器的网络配置  #docker network inspect <network id>
  • 删除网络配置  #docker network rm <network id>

数据卷

  • 挂载一个数据目录作为数据卷

#  docker run -itd --name test \
--mount type=bind,source=/home/myapp,target=/myapp alpine

# docker exec -it test sh

//test为容器名,alpine为镜像名,意为将本地目录/home/myapp挂载到容器test的/myapp中。这样容器的/myapp目录修改数据后,本机目录也同时修改。即使容器删除,数据不会丢失。

卸载docker

  • 卸载Docker
    #yum remove docker-ce
  • 清理镜像、容器、存储卷等
    #rm -rf /var/lib/docker

技巧及提示

1、docker安装后,核心文件在目录/var/lib/docker/下有目录containers、images等,排查错误时可进相应目录查看。

2、docker安装容器组件后,进入容器,一些简单linux命令工具vim等都没有,怎么操作呢?

答:可以使用apt-get工具,

# apt-get update

# apt-get install vim

这样执行后,就可以使用vim了。

问题记录

  • 问题:docker容器存放目录磁盘空间满了,如何做

解决:docker数据默认存放在/var/lib/docker,若存满了,可以迁移数据,然后使用使用软连接将数据存放在数据盘,#ln -s /vdb1/var/lib/docker /var/lib/docker

参考docker容器存放目录磁盘空间满了,转移数据修改Docker默认存储位置_周子青的博客-CSDN博客_修改docker 数据目录

  • 问题:删除镜像时image is referenced in multiple repositories,

#docker rmi [IMAGEID]时会提示上述错误

解决:#docker image rm nginx2:latest  ,带镜像tag删除,提示“Untagged: nginx2:latest”,再次查看解除镜像了。

  • 问题:docker创建网络时报错“Pool overlaps with other one on this address space“”

解决:因为已经有网络定义了192.168.0.0/16的subnet,网段定义重叠了,无须再定义,或重新定义其他网段。

  • 问题:docker run报错:172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name

解决:https://blog.csdn.net/qq_14853889/article/details/79678406?utm_source=blogxgwz6

  • 问题:容器运行后总是exitd

解决:docker update --restart=always <container id>

或docker run --restart=always ... 注意加--restart=always参数

持续完善,待续...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云焰

你的鼓励是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值