Docker系列学习(篇一):Docker介绍与docker-ce安装


前言

环境及相关软件:CentOS。


一、什么是Docker

Docker 将应用程序与该程序的依赖,打包在一个文件里面,该文件包括了所有打包得应用程序的所有依赖,像数据库等;直接运行该文件,就可以让程序跑起来,从而不用再去考虑环境问题。

在这里插入图片描述

二、CentOS安装docker-ce

sudo yum install   docker-ce

2.1 docker数据迁移

2.1.1 背景

开发服务器随着docker运行服务的变多,docker目录占用磁盘空间也在逐渐变大,终于在最近磁盘彻底占满导致容器启动不起来并提示"no device space left"。为了防止以后出现docker占用磁盘容量不够的情况决定对docker数据目录迁移。

2.1.2 迁移步骤

1、查看docker数据目录并创建迁移目录
# 1)
$ docker info | grep "Docker Root Dir"
errors pretty printing info
# 若还是报错,先启动docker后台服务进程:sudo systemctl start docker
$ sudo docker info | grep "Docker Root Dir"
 Docker Root Dir: /var/lib/docker

可看出,docker数据默认存储在/var/lib/docker 目录下。

# 2)
# 从下图中看出目前大容量硬盘挂载在了/home目录下,所以新目录建立在/home目录下
df -h

在这里插入图片描述

# 3)创建目录
mkdir -p ~/data/lib
2、停止docker服务
# sudo systemctl stop docker 或者 sudo service docker stop
# 解释:这是docker在关闭状态下被访问自动唤醒机制,很人性化,即这时再执行任意docker命令会直接启动
# 注:如果真的不希望docker被访问自动唤醒,执行 systemctl stop docker 后再执行systemctl stop docker.socket即可
$ sudo systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:
  docker.socket
3、迁移目录
第一种方法:

(1)迁移整个/var/lib/docker目录到目的路径:

sudo mv /var/lib/docker ~/data/lib/

(2)建立symlink软链接

sudo ln -s  ~/data/lib/docker  /var/lib/docker

(3)确认文件夹类型

ls -al /var/lib/docker
第二种方法:

(1)迁移整个/var/lib/docker目录到目的路径:

# cp命令这两个参数比较关键(R:递归复制;p:保留原有权限),如果不加p参数可能会导致迁移后的目录的/tmp目录og(其他人&&组)丢失w(写)权限。教训:mongo容器启动需要在/tmp目录下创建****.sock监听请求,由于cp没有加上  p参数导致/tmp目录从drwxrwxrwt权限变为drwxr-xr-t权限,无法成功启动。t权限是x+SBIT形成的。
sudo cp -rp /var/lib/docker ~/data/lib/
# 或 sudo cp -Rp /var/lib/docker/* ~/data/lib/

(2)编辑docker配置文件(也可建立软链接,需要删除原目录或者ln命令加上f参数强行移除)
vim /etc/docker/daemon.json

{
  "registry-mirrors": [],
  "graph": "/home/data/lib"
}
4、重启docker服务
sudo systemctl start docker
# 或 sudo service docker start

2.2 修改系统配置

(1)增大文件监控限制。
用vim编辑 sudo vim /etc/sysctl.conf ,加入下面两行

fs.inotify.max_user_watches=524288
fs.inotify.max_user_instances=8192

fs.inotify.max_user_instances=8192 # 表示每一个real user ID可创建的inotify instatnces的数量上限,默认128
fs.inotify.max_user_watches=524288 # 同一用户同时可以添加的watch数目,默认8192

(2)刷新sysctl

sudo sysctl -p

2.3 Docker配置

2.3.1 免sudo使用docker命令

Linux文件权限由三个数据左右,drwxrwxrwx
其中第一位d代表该文件是一个文件夹
前三位、中三位、后三位分别代表着属主权限、属组权限、其他人权限
(1)将当前用户添加到docker属组:

sudo groupadd docker

(2)将用户加入该group内,然后退出并重新登录:

sudo gpasswd -a ${USER} docker

(3)查看是否添加成功:

cat /etc/group | grep ^docker

(4)重启docker服务:

sudo service docker restart

(5)切换当前会话到新group或者重启X会话:

newgrp - docker

(6)执行docker命令,比如:

docker ps -a

2.3.2 配置daemon.json

# 查看是否有daemon.json文件
ls /etc/docker

若没有,vim /etc/docker/daemon.json 创建该文件并加入以下内容,配置registry-mirrors镜像源和insecure-registries私有仓库(按实际需要添加),以下还加入了阿里云的docker 镜像加速地址:

{
     "registry-mirrors":["https://registry.docker-cn.com","https://y4xpdpoy.mirror.aliyuncs.com"],
     "insecure-registries":["10.76.10.25:80"]
}

重新加载daemon:

systemctl daemon-reload

重启docker:

systemctl restart docker

三、制作镜像的两种方法

1、通过Dockerfile制作镜像(建议这种,需要熟悉Dockerfile修改和shell编程)

(1)导入ubuntu 18.04基础镜像(本地有现成的,不然要去镜像仓库pull一个)

docker  load    <  ubuntu.18.04.tar

(2)查看导入的镜像

$ docker images
REPOSITORY                     TAG             IMAGE ID       CREATED         SIZE
ubuntu                         18.04           54919e10a95d   12 months ago   63.1MB

(3)利用Dockfile制作一个新的docker 镜像。

# 进入Dockfile所在目录,ubuntu-18.04:compile_v1表示镜像名称:镜像标签,可自定义
docker build -t="ubuntu-18.04:compile_v1"  .
# 或者直接执行脚本 bash docker_build.sh

2、在容器中安装好环境,打包拷贝到宿主机(比较简单)

(1)本地构建镜像,并启容器:

docker run --rm -it ubuntu-18.04:compile_v1 /bin/bash

(2)安装所需的环境
(3)再执行以下命令对根目录下的文件打包:

tar -cvf img.tar / --exclude=/proc --exclude=/sys --exclude=img.tar

(4)然后将打包好的文件拷贝到宿主机下随便一个目录下:

# 容器ID通过docker ps查看
docker cp 容器ID:/img.tar .

(5)最后生成新的镜像:

cat img.tar | sudo docker import - img
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值