栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker

Docker docker安装 (centos8)
# 安装
	#1.查看内核版本(3.10以上的可以安装)
	uname -r
	#2.使用yum安装 (如果缺少以来的话使用yum -y update)
	yum -y install
	#3.查看是否安装成功(出现client server两部分的时候安装成功)
	docker version
#启动docker
systemctl start docker
#添加开机自启
systemctl enable docker
#卸载docker
	#1.卸载之前先暂停已经开启的docker
	systemctl stop docker
	#2.检查安装过的包
	yum list installed | grep docker
	#3.卸载查询出来的已安装软件
	yum remove 软件名
	#4.删除已经安装的容器和镜像等
	rm -rf /var/lib/docker
docker 配置阿里云镜像加速

1.去阿里官网 https://www.aliyun.com/ 点击控制台

2.点击容器镜像服务-》镜像工具-》镜像加速器

3.根据描述步骤操作

docker指令
docker [指令] --help #docker查看指令帮助文档
docker镜像

docker运行容器之前需要镜像,如果镜像不存再本地,就去远程仓库拉取。

docker pull NAME[:tag]#拉取镜像
 -q#只显示镜像的id
docker images #查看本地有的镜像
docker rmi NAME[:tag] #删除本地镜像,注意删除前要先删除本地已经运行该镜像的容器,如果患有运行该镜像的容器,不会真正删除
	-f#强制删除
docker search NAME[:tag]#搜索dockers镜像在dockerhub上
dockers容器

docker镜像的运行实例。

docker ps #docker正在运行的容器列表
 -a #查询所有容器(包括已经运行过现在不运行的)
 -q #显示容器的id
docker creart [option] NAME[:tag] #创建一个docker容器,但是不运行
 -p #指定端口 宿主机端口:docker容器内的端口
docker start ID#启动已有的容器
docker run [option] NAME[:tag] [args] #创建并运行一个dockers容器
 -d #后台运行
 -p #端口
 -i #交互模式运行
 -t #分配伪终端
 -v #挂载数据卷
 -e #设置环境变量
docker stop ID#停止容器
docker kill ID#强制停止
docker rm#删除容器
 -f#删除正在运行的容器
docker exec [option] NAME [args]
 -i #交互
 -t #分配伪终端
docker logs [option] NAME|ID #查看容器日志
 -f #跟踪日志输出
 -t #显示时间措
 

案例1:创建一个redis容器,端口为16379

docker create -p 16379:6379 --name myredis redis:4.0 #创建docker容器,但是不运行
docker ps -a #查看已经创建的容器,可以看到status是Create和该容器的id号等信息
docker start 632 #启动已有的容器(后面跟的是ps查出来的id,几位能唯一标识就可以,不需要全写)
docker exec -it myredis /bin/bash #进入docker容器查看,ctrl+d或exit可以退出
docker logs -f myredis #查看容器日志
docker 仓库

存放docker镜像的地方

1.创建阿里个人镜像仓库 https://cr.console.aliyun.com/#/imageList

2.开通镜像仓库服务-》创建命名空间-》创建仓库-》

3.执行登录操作:sudo docker login --username=用户名 registry.cn-hangzhou.aliyuncs.com,密码是刚刚开启服务的时候的密码

4.给要上传的镜像打标签 docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/ffd/myredis:[镜像版本号]

5.推送镜像到阿里云 docker push registry.cn-hangzhou.aliyuncs.com/ffd/myredis:[镜像版本号]

6.点击镜像版本,查看上传情况

数据卷
 -v 宿主机目录:容器内目录

把运行容器中的数据内容挂在宿主机上面,防止丢失。

在create或者run容器的时候,通过-v参数指定宿主机的目录挂载在容器的某一个目录上,这样容器的目录就和宿主机的目录数据同步了。

案例2:将mysql的数据放在主机的/data/mysql-data中

docker pull mysql:5.7 #1.拉取mysql容器
docker create --name mysql13306 -v /data/mysql-data:/var/lib/mysql -p 13306:3306 -e  MYSQL_ROOT_PASSWORD=root mysql:5.7  #创建容器
docker start mysql13306
拷贝

除了数据卷挂载目录外也可以使用cp指令,在宿主机和容器之间相互拷贝数据。

dcoker SRCDIR TAGETDIR #源地址 目的地址 (容器内的目录要在地址前面加容器ID:)
构建镜像 Dockerfile文件编写

dockerfile是一个文本文件,描述镜像构建的细节(这里为了方便看,命令使用了小写,建议使用大写)

 1. from  #基于的基础镜像
 2. maintainer  #维护者的信息
 3. run  | run ["executable","param1",param2] #前者将会在shell终端运行命令,即/bin.sh -c
 #后者使用exec执行,指定使用其他终端可以通过第二种方式实现,如 run ["/bin/bash","-c","echo hello"]
 # 每条run指令将在当前镜像基础上执行指定命令,并提交新的镜像。当命令较长的时候可以使用来换行
 4. cmd ["executable","param1","param2"] #使用exec执行
 cmd command param1 param2 #在/bin/sh中执行,提供给需要交互的应用
 cmd ["param1","param2"] #提供给enterpoint的默认参数
 #指定启动容器时执行的命令,每个dockerfile只能有一条cmd命令,有多条只有最后一条会执行
 #如果用户启动容器的时候指定了运行的命令,则会覆盖掉cmd指定的命令
 5. expose  [...] #告诉docker服务端容器暴露的端口号,供互联系统使用。在启动容器时需要
 # 通过-P,docker主机会自动分配一个端口转发到指定的端口,-p可以具体指定到哪个本地端口映射过来
 6. env   #指定一个环境变量,会被后续run指令使用,并在容器运行时保持
 7. add   #该命令将复制4指定的到容器中的.其中可以是dockerfile所在目录
 #的一个相对路径(文件或目录);也可以是一个url,还可以是一个tar文件(自动解压为目录)
 8. copy   #该命令将复制到容器中的。如果目标路径不存在会自动创建
 #当使用本地目录为源目录时,推荐使用copy
 9. entrypoint ["executable","param1","param2"]
 entrypoint command param1 param2(shell中执行)
 # 入口 配置容器启动后执行的命令,并且不可被docker run 提供的参数覆盖
 10. volume ["/data"] #挂载 创建一个可以以本地主机或其他容器挂载的挂载点,一般用来存放数据库
 11. user deamon #指定运行容器时的用户名或uid,后续run也会指定用户。
 12. workdir /path #为后续的run,cmd,entrypoint指令配置工作目录
 13. onbuild [insertuction] #配置当所创建的镜像作为其他新创建容器的基础镜像时,所执行的操作命令

案例3:自己创建redis镜像

在官网下载redis的tar.gz安装包,放在需要创建镜像的目录下,并在这个目录下编写dockerfile

vi Dockerfile,拷贝如下内容
构建Redis镜像
 niaopeng

#基于Centos7构建
FROM centos:7

#安装依赖
RUN yum -y install tar cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make gcc-c++ libstdc++-devel tcl

#创建安装目录
RUN mkdir -p /redis/data &&  cd /redis

#拷贝redis的安装包
COPY ./redis-5.0.0.tar.gz /redis

#解压
RUN cd /redis && tar -xvf redis-5.0.0.tar.gz && rm -rf redis-5.0.0.tar.gz && cd redis-5.0.0

#编译、安装
RUN cd /redis/redis-5.0.0 &&  make && make install

#复制配置文件到/redis中,并且修改redis为后台运行
RUN cp /redis/redis-5.0.0/redis.conf /redis/ && echo "daemonize yes" >> redis.conf

#设置数据挂载目录以及工作目录
VOLUME /redis/data
WORKDIR /redis/data

#容器启动后执行该命令
ENTRYPOINT ["/usr/local/bin/redis-server", "/redis/redis.conf"]

#设置对外的端口号
EXPOSE 6379
docker build -t myredis ./ #根据dockerfile构建docker镜像
	-t#指定导出镜像名
导入导出
docker export [option] ID > NAME #导出容器快照到本地文件,容器id,导出文件名
docker import [option] file|URL| [NAME] #从文件中创建镜像
docker save [option] IMAGE #导出指定的镜像保存成tar归档文件
docker load < FILE #导入tar变成镜像
容器构建镜像
docker commit [option] ConTAINER [IMG:tag] 
	#-a 提交镜像作者
	#-m 提交时的说明文字

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nq4h8RAO-1636012664650)(C:homecachenodeImg1636007007566.png)]

容器连接
-P #create run命令使用,把容器上的端口随机映映射导宿主机的端口
-p 宿主机端口:容器端口#create run指令使用,把容器上宿主机的端口手动映射起来
docker port NAME #列出指定容器的端口映射情况
docker network create -d bridge NET-NAME #创建一个新的docker网络
docker run --network NET-NAME centos #可以指定容器的网络连接导指定的地方
#使用上面这两个方式可以实现容器互联,也可以使用docker-compose
#在宿主机的/etc/docker/deamon.json文件中添加以下内容设置全部容器的dns
{
  "dns" : [
    "114.114.114.114",
    "8.8.8.8"
  ]
}

dockers compose

定义和运行多个容器docker应用程序的工具,通过compose,可以使用yml文件来配置应用程序需要的所有服务。

1.使用dockerfile定义应用程序环境

2.使用docker-compose.yml定义构成应用程序的服务

3.执行docker-compose up命令来启动并运行整个应用程序

# yaml 配置实例
version: '3'
services:
  web:
    build: .
    ports:
   - "5000:5000"
    volumes:
   - .:/code
    - logvolume01:/var/log
    links:
   - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

docker-compose安装:

1.获取docker-compose的最新版本

curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2.给二进制执行文件授权

chmod +x /usr/local/bin/docker-compose /usr/bin/docker-compose

3.创建软链:

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

4.查看是否安装成功

docker-compose --version
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/450198.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号