Loading

Docker安装 使用 镜像操作 容器操作 迁移与备份 私服搭建

介绍:

Docker是一个客户端-服务器(C/S)架构程序
重点:
  -镜像:镜像当作容器的“源代码”,类比面向对象中的:类
  -容器:就是一个一个的操作系统:对象

docker安装:

# 更新yum源
>>: sudo yum update
# yum换源--阿里源
>>: sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装dcoker
>>: yum install docker-ce -y

docker相关命令:

# 查看版本信息
docker -v

# 启动docker
systemctl start docker

# 停止docker
systemctl stop docker

# 重启docker
systemctl restart docker

# 查看docker状态信息
systemctl status docker

# 查看docker概要信息
docker info

# 打印人容器的日志信息
docker logs ElasticSearch
# 打印近30分钟的日志信息
docker logs --since 30m ElasticSearch
# 从某个时间点开始打印100行日志
docker logs -f -t --since="2023-06-20" --tail=100 ElasticSearch

# 设置开机启动
systemctl enable docker

# 将指定用户添加到用户组
usermod -aG docker root

docker换源:

# 修改配置文件
vim /etc/docker/daemon.json
# 配置项增加如下配置
{
"registry-mirrors" : [ "https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn", "https://cr.console.aliyun.com/" ] }

镜像相关操作:

# 搜索镜像
# 也可在https://hub.docker.com/地址里搜索
>>: docker search python
# 下载镜像
>>: docker pull [镜像名称]
>>: docker pull centos:centos7.7.1908
>>: docker pull centos  #下载最新版本
# 查看下载的镜像
>>: docker imgs
# 删除镜像
>>: docker rmi [镜像id号]

将容器打包为镜像并导出文件:

# 使用docker export 命令将容器打包为镜像并导出到文件
docker export [容器id] > image.tar
# 上面命令执行之后,我们便可以通过ls命令查看在当前目录下的 image.tar

# 导入镜像
# 使用docker import命令将这个镜像导进来
docker import [容器名] < image.tar

# 通过docker images 命令查看镜像是否导入
docker images

将镜像打包并导出文件:

# 通过docker image查看本机上的所有镜像
docker images

# 找到要上传的镜像的id,使用docker save命令将镜像保打包导出为一个文件
docker save [镜像id] > image.tar

# docker save 可以将多个image打包成一个文件
docker save -o image.tar [镜像1] [镜像2]

# 通过docker load载入镜像
docker load < image.tar

容器相关命令:

容器启动相关指令参数:

  -i:表示运行容器
  -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
  --name :为创建的容器命名。
  -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
  -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
  -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

# 查看正在运行的容器
docker ps

# 查看所有容器
docker ps -a

# 启动容器(基于image启动)
docker run [参数1][参数2][...][参数n]

# 目录挂载
docker run -di -v /home/test:/home/test --name=mycentos3 centos:centos7.7.1908

# 启动centos7
docker run -id --name mycentos7 centos:centos7.7.1908    

# 停止容器
docker stop [容器id/名字]

# 启动已经有的容器
docker start [容器id/名字]

# 进入到容器内部
docker exec -it [容器名称/容器ID] /bin/bash
docker exec -it [容器名称/容器ID] sh
# 退出当前容器
exit

# 文件拷贝
#向里拷贝(从宿主机---》容器)
docker cp [需要被拷贝的文件或目录] [容器名称:容器目录]
docker cp /home/elasticsearch.yml ElasticSearch:/usr/share/elasticsearch/config/elasticsearch.yml
# 向外拷贝(从容器---》宿主机)
docker cp [容器名称:容器目录] [需要拷贝到的文件或目录]
docker cp ElasticSearch:/usr/share/elasticsearch/config/elasticsearch.yml /home/elasticsearch.yml

# 查看容器ip地址
>>: docker inspect [容器名称/id]
>>: docker inspect --format='{{.NetworkSettings.IPAddress}}' [容器名称/id]

# 删除容器
>>: docker rm [容器名称/id]

已运行容器进行目录挂载:

# 查看当前容器在宿主机上的目录信息
docker inspect ElasticSearch

# 进入该目录
cd /var/lib/docker/containers/e7b4a8d57b3b982450906bc237c943a0d148ec230f2176d6438d31ce11d3f31e/

# 修改hostconfig.json文件增加Binds配置项
"Binds":["/usr/local/docker/volumes/ik:/usr/share/elasticsearch/plugins/ik"]

# 修改config.v2.json增加MountPoints配置项
"MountPoints":{"/usr/share/elasticsearch/plugins/ik":{"Source":"/usr/local/docker/volumes/ik","Destination":"/usr/share/elasticsearch/plugins/ik","RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate","Spec":{"Type":"bind","Source":"/usr/local/docker/volumes/ik","Target":"/usr/share/elasticsearch/plugins/ik"},"SkipMountpointCreation":false}}

部署redis并支持远程连接:

>>: docker pull redis
# 创建conf和data文件夹
>>: cd /home
>>: mkdir conf data
# 在conf文件夹中创建redis.conf文件并写入以下内容
bind 0.0.0.0 #绑定地址
daemonize NO
protected-mode no #允许远程连接
requirepass 123456 #密码是123456
# 运行容器
docker run -p 6379:6379 --name redis_6379 -v /home/test/redis/conf/redis.conf:/etc/redis/redis.conf -v /home/test/redis/data:/data -d redis:alpine3.11 redis-server /etc/redis/redis.conf --appendonly yes

迁移与备份:

# 本质就是把容器打包成镜像
>>: docker commit mynginx mynginx_i
# 保存并压缩 可以传到别的机器
>>: docker  save -o mynginx.tar mynginx_i
# 别的机器load回来 就能恢复到image run起来直接运行容器
>>: docker load -i mynginx.tar    

Dockerfile:

# Dockerfile
# Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像(本质:Dockerfile能生成镜像)
# 文件名字必须是Dockerfile
# Dockerfile文件内容:
"""
    FROM image_name:tag    # 定义了使用哪个基础镜像启动构建流程
    MAINTAINER user_name    # 声明镜像的创建者
    ENV key value    # 设置环境变量 (可以写多条)
    # RUN command    是Dockerfile的核心部分(可以写多条),linux命令
    RUN wget https://www.python.org/ftp/python/3.6.10/Python-3.6.10.tgz
    RUN tar -xzf Python-3.6.10.tgz
    ADD source_dir/file dest_dir/file    # 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
    COPY source_dir/file dest_dir/file    # 和ADD相似,但是如果有压缩文件并不能解压
    WORKDIR path_dir    # 设置工作目录
"""
# 案例:在python下安装django 1.11.9和requests模块
FROM python:3.6
MAINTAINER lqz
RUN pip3 install django==1.11.9
RUN pip3 install requests
WORKDIR /home
# Dockerfile构建镜像
docker build  -t=[标签] [Dockerfile目录]
>>: docker build -t='django1.11.9' .
# 查看是否构建完成
>>: docker images

docker私服搭建:

开启远程访问:

# 1、修改docker配置文件
vim /lib/systemd/system/docker.service

在ExecStart=后面加上:
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

修改后的配置如下:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

# 2、刷新配置重启服务
systemctl daemon-reload
systemctl restart docker

私服搭建:

# 搭建步骤:
# 1.拉取私有仓库镜像(若私服已经存在,此步省略)
>>: docker pull registry
>>: docker run -di --restart=always --name=registry -p 5000:5000 registry
# 2.打开浏览器输入地址 http://121.43.122.94:5000/v2/_catalog 看到{"repositories":[]} 表示私有仓库搭建成功并且内容为空
# 3.修改daemon.json,配置docker的私有仓库为该容器地址
>>: vi /etc/docker/daemon.json
# 4.添加以下内容,保存退出
{"insecure-registries":["121.43.122.94:5000"]}
# 5.重启docker 服务
>>:systemctl restart docker
# 6.镜像上传至私有仓库
# 7.给本地镜像增加标签,用于上传到私有仓库
>>: docker tag django2.0 121.43.122.94:5000/django2.0
# 8.再次启动私服容器
>>: docker start registry
# 9.上传标记的镜像
>>: docker push 121.43.122.94:5000/django2.0

 

posted @ 2021-03-29 15:21  1640808365  阅读(164)  评论(0编辑  收藏  举报