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

文章目录

  • 前言
  • 一、什么是Docker
  • 二、CentOS安装docker-ce
    • 2.1 docker数据迁移
      • 2.1.1 背景
      • 2.1.2 迁移步骤
        • 1、查看docker数据目录并创建迁移目录
        • 2、停止docker服务
        • 3、迁移目录
          • 第一种方法:
          • 第二种方法:
        • 4、重启docker服务
    • 2.2 修改系统配置
    • 2.3 Docker配置
      • 2.3.1 免sudo使用docker命令
      • 2.3.2 配置daemon.json
  • 三、制作镜像的两种方法
    • 1、通过Dockerfile制作镜像(建议这种,需要熟悉Dockerfile修改和shell编程)
    • 2、在容器中安装好环境,打包拷贝到宿主机(比较简单)


前言

环境及相关软件:CentOS。


一、什么是Docker

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

Docker系列学习(篇一):Docker介绍与docker-ce安装_第1张图片

二、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

Docker系列学习(篇一):Docker介绍与docker-ce安装_第2张图片

# 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

你可能感兴趣的:(Linux,1024程序员节,docker,linux,centos)