1 docker安装
1 yum包的更新到最新
yum update
2 安装需要软件包,yum-util
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
3 设置yum源 4 安装 docker
yum install -y docker-ce
5 查看 docker版本
docker -v

2 docker 架构

镜像: docker 镜像,就相当于一个root 文件系统
容器:容器是镜像运行的实体,可以被创建,启动,停止,删除,暂停
仓库: 一个代码控制中心,用来包含镜像

3 配置docker镜像加速器s

https://5l16nu5f.mirror.aliyuncs.com
[root@localhost ~]# sudo mkdir -p /etc/docker
[root@localhost ~]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["https://5l16nu5f.mirror.aliyuncs.com"]
> }
> EOF
{s
"registry-mirrors": ["https://5l16nu5f.mirror.aliyuncs.com"]
}
国内官方的的docker数据源: {
"registry-mirrors": ["https://registry.docker-cn.com"]
}
最佳数据源:
$ cat daemon.json
{
"registry-mirrors": [
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"dns": ["8.8.8.8","8.8.4.4"]
} [root@localhost ~]# sudo systemctl daemon-reload
[root@localhost ~]# sudo systemctl restart docker
[root@localhost ~]#

4 docker 命令

服务相关命令

启动docker[root@localhost ~]# systemctl start docker
停止docker: systemctl stop docker
重启docker: systemctl restart docker
[root@localhost ~]# systemctl status docker
开机启动docker服务:systemctl enable docker

镜像相关明细

查看镜像
[root@localhost ~]# docker images -q
REPOS
ITORY TAG IMAGE ID CREATED SIZE
搜索镜像:
[root@localhost ~]# docker search redis 如果出现:错误Error response from daemon: Get https://index.docker.io/v1/search?q=mysql&n=25: x509: certificate has expired or is not yet valid
原因和解决方案: 是时间同步出现问题, 执行 # ntpdate cn.pool.ntp.org 即可 拉取镜像: docker pull redis docker pull redis:5.0 删除镜像:[root@localhost ~]# docker rmi 7614ae9453d1

docker 容器的相关的命令:

查看容器:docker ps -a

创建容器:docker run   -i 一直运行 -t 一个终端 --name=c1 masql:6.0 /bin/bash
-
进入容器:docker exec -it c2(名字) /bin/bash
启动容器:docker start kangou
停止容器 docker stop kangou
删除容器:docker rm 查看容器配置:docker inspect kangou

5 docker 容器的数据卷

数据卷的作用: 容器的数据持久化; 外部机器和荣期间通信,容器间数据交换

5.1 配置数据卷

创建启动容器时,使用-v参数,设置数据券
docker run -it --name:kanogu -v .... -v 宿主机目录:容器内目录文件
举例:
docker run -it --name=kangou -v /root/docker_data:/root/container_data redis:5.0 /bin/bas
#一个容器可以挂载两个目录(多个目录)
# 容器删除后,可以重新挂载
# 两个容器同时挂载同一目录,实现两个容器的通信

数据卷容器

多容器挂载同一个数据卷
数据卷容器:
容器数据券:
[root@localhost ~]# docker run -it --name=kanogu3 -v dockerdata redis:5.0 /bin/bash
docker run -it --name=kanogu2 --volumes-from kangou3 redis:5.0 /bin/bash docker run -it --name=kanogu1 --volumes-from kangou3 redis:5.0 /bin/bash

增加内容odoo容器:

16
拉取数据库和odoo
docker pull odoo:16.0
docker pull postgres:15.0 docker run -d -p 5482:5432 -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=2022test -e POSTGRES_DB=postgres --name odoo16_db postgres:15.0 --name:容器名 --p:映射宿主主机端口 -v:挂载宿主目录到容器目录 -e:设置环境变量,此处指定root密码 -d:后台运行容器 253edf7672f08d7f1acd1a0b37f90cafd952437fbfe271e30b97e59de559d907
[root@localhost ~]# docker run -d -p 8082:8069 --name odoo16_app --link odoo16_db:db -t odoo:16.0
8387fc07da051052adedeef85dfc177ea19de0dbcc6584ca4e826c83f485597f
odoo16 密码:z2au-ykcx-hv3f
odoo15 密码:eqt5-w9at-ts39
odoo14:
odoo13
[root@localhost ~]# docker run -d -p 5483:5432 -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=2022test -e POSTGRES_DB=postgres --name
odoo14_db postgres:15.0a956bd676bae5a0867feade3bef7e881940296b692c7cd1bb21fce4db9597117
[root@localhost ~]# docker run -d -p 8084:8069 --name odoo14_app --link odoo14_db:db -t odoo:14.0

修改容器接口:

1 首先关闭 docker 服务
[root@localhost ~]# systemctl stop docker
2 关闭之后,找到容器的配置文件路径 通常都是安装在这个路径下方
[root@localhost ~]# cd /var/lib/docker/
[root@localhost docker]# ls
[root@localhost docker]# cd containers
[root@localhost containers]# ls
[root@localhost containers]# cd db8cdcf971e36b795c0af31f706b6e2115359b31bd83619711acbf74b666e5f5
vi hostconfig.json
3重启 docker
systemctl start docker
4 启动相关容器 [root@localhost bbaf3786edb3038530bddac79ad806fb848da29450706e8a8c335d693d0dd187]# docker start 8387fc07da05 :利用docker commit新构镜像
docker commit:把一个容器的文件改动和配置信息commit到一个新的镜像。这个在测试的时候会非常有用,把容器所有的文件改动和配置信息导入成一个新的docker镜像,然后用这个新的镜像重起一个容器,这对之前的容器不会有任何影响。 停止docker容器 docker stop container01
1
commit该docker容器 docker commit container01 new_image:tag
1
用前一步新生成的镜像重新起一个容器 docker run --name container02 -p 80:80 new_image:tag
1
优缺点:这种方式的优点是不会影响统一宿主机上的其他容器,缺点是管理起来显得比较乱,没有第二种方法那么直观

6 docker 应用部署

需要端口映射

mysql

1 搜索mysql 镜像[root@localhost ~]# docker search mysql

2 拉取mysql 镜像:docker pull mysql :5.6

3  创建容器 设置端口映射,目录映射
mdk
[root@localhost mysql]# docker run -id -p 3306:3306 --name=c_mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v
$PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6 4 操作容器
# 进入mysql 容器:[root@localhost mysql]# docker exec -it c_mysql /bin/bash

5 启用容器:

docker start 303d97fddeaf

redis

根据参数配置redis

/etc/redis/redis.conf
sudo /etc/redis/reids.conf

2 docker 安装redis的步骤

第一步:# 启动docker 一般都启动; 启动 systemctl start docker;
#也可以查看docker: systemctl status docker
第二步:# 查找 docker search redis 查看redis镜像记录 命令:docker search <镜像名称>
第三部 # 拉取 docker pull redis 拉取镜像文件 命令::docker pull <镜像名称>:<版本号>
第四部# 配置挂载配置文件
#liunx 下redis.conf文件位置: /home/redis/myredis/redis.conf
#liunx 下redis的data文件位置 : /home/redis/myredis/data
第五步:运行的Redis
[root@localhost myredis]# docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6650:6379 --name myredis01 -v /home/redis/myredis/myre
dis.conf:/etc/redis/redis.conf -v /home/redis/myredis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123456
–restart=always 总是开机启动
–log是日志方面的
-p 6650:6379 将6650端口挂载出去
–name 给这个容器取一个名字
-v 数据卷挂载
/home/redis/myredis/myredis.conf:/etc/redis/redis.conf 这里是将 liunx 路径下的myredis.conf 和redis下的redis.conf 挂载在一起。
/home/redis/myredis/data:/data 这个同上
-d redis 表示后台启动redis
redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的/home/redis/myredis/myredis.conf
–appendonly yes 开启redis 持久化
–requirepass 123456 设置密码 (如果你是通过docker 容器内部连接的话,就随意,可设可不设。但是如果想向外开放的话,一定要设置
#第六步 查看运行情况
[root@localhost myredis]# docker ps -a |grep myredis
# 第七步 查看日志情况
docker logs --since 1000m myredis01
# 第八步 :容器内部链接
[root@localhost myredis]# docker exec -it myredis01 /bin/bash
# 第九步 :
root@localhost myredis]# docker exec -it myredis01 redis-cli
127.0.0.1:6379> get s1 # 第十步:输入密码 127.0.0.1:6379> auth 123456 重置密码:config get requirepass #第十一步: 配置文件 myredis.conf [root@localhost myredis]# docker exec -it myredis01 /bin/bash
# 第十二步 : 客户端 在命令行输入: redis-cli -c -h 192.168.124.130 -p 6650 -a 123456 补充信息: 停止docker并删除容器
docker stop docker-redisdocker rm docker-redis

dockder 学习第一篇的更多相关文章

  1. LINQ to XML LINQ学习第一篇

    LINQ to XML LINQ学习第一篇 1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: public static void CreateDoc ...

  2. 从.Net到Java学习第一篇——开篇

    以前我常说,公司用什么技术我就学什么.可是对于java,我曾经一度以为“学java是不可能的,这辈子不可能学java的.”结果,一遇到公司转java,我就不得不跑路了,于是乎,回头一看N家公司交过社保 ...

  3. Java并发包下锁学习第一篇:介绍及学习安排

    Java并发包下锁学习第一篇:介绍及学习安排 在Java并发编程中,实现锁的方式有两种,分别是:可以使用同步锁(synchronized关键字的锁),还有lock接口下的锁.从今天起,凯哥将带领大家一 ...

  4. JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇

    JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇 作为一个使用Java语言开发的程序员,我们都知道,要想运行Java程序至少需要安装JRE(安装JDK也没问题).我们也知道我们Java程序 ...

  5. Golang学习-第一篇 Golang的简单介绍及Windows环境下安装、部署

    序言 这是本人博客园第一篇文章,写的不到位之处,希望各位看客们谅解. 本人一直从事.NET的开发工作,最近在学习Golang,所以想着之前学习的过程中都没怎么好好的将学习过程记录下来.深感惋惜! 现在 ...

  6. Python学习第一篇

    好久没有来博客园了,今天开始写自己学习Python和Hadoop的学习笔记吧.今天写第一篇,Python学习,其他的环境部署都不说了,可以参考其他的博客. 今天根据MachineLearning里面的 ...

  7. Android基础学习第一篇—Project目录结构

    写在前面的话: 1. 最近在自学Android,也是边看书边写一些Demo,由于知识点越来越多,脑子越来越记不清楚,所以打算写成读书笔记,供以后查看,也算是把自己学到所理解的东西写出来,献丑,如有不对 ...

  8. ImageJ 学习第一篇

    ImageJ是世界上最快的纯Java的图像处理程序.它可以过滤一个2048x2048的图像在0.1秒内(*).这是每秒40万像素!ImageJ的扩展通过使用内置的文本编辑器和Java编译器的Image ...

  9. Java图像处理最快技术:ImageJ 学习第一篇

    ImageJ是世界上最快的纯Java的图像处理程序. 它能够过滤一个2048x2048的图像在0.1秒内(*). 这是每秒40万像素!ImageJ的扩展通过使用内置的文本编辑器和Java编译器的Ima ...

  10. H264学习第一篇(编码结构分析)

    学习H264之前,最好阅读一下维基百科中有关H264的相关介绍,里面包含了其的发展历程.主要特点.参考文献.参考网站等. 研究H264的主要文件包括两份参考手册(一份是语法结构参考手册,一份是JM开发 ...

随机推荐

  1. 基于 Gitlab + Harbor + K8s + Kuboard 的 CI 实践

    CI/CD 概念 CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法.CI/CD 的核心概念是持续集成.持续交付和持续部署.作为一种面向开发和运维团队的解决方案,CI/CD 主要 ...

  2. Linux常用命令 备查

    区分关系: 有很多类型的shell,最常见的一种Shell是bash env 查看所有环境变量 用echo查看环境变量 echo $LOGNAME echo $PATH https://shimo.i ...

  3. Apinto Dashboad V2.0 发布:可视化控制台让配置更轻松!

    大家好, Eolink 旗下开源网关 Apinto 本次带来了 Apinto Dashboad V2.0 的版本发布. Dashboad 需要与 Apinto 主版本一起使用,目前 Dashboad ...

  4. CAS乐观锁(原子操作)

    更多内容,前往 IT-BLOG 锁主要分为两种:乐观锁和悲观锁,而 synchronized 就属于一种悲观锁,每次在操作数据前都会加锁.乐观锁是指:乐观的认为自己在操作数据时,别人不会对当前数据进行 ...

  5. 为什么说 ICMP 协议是网络最强辅助

    大家好,我是风筝 轻解网络系列又来了.已有高清 PDF 版本可以离线阅读了,全册 65 页,如果有需要离线版的高清 PDF 可以直接下载. 今天咱们说说 ICMP 协议.ICMP 可谓是网络世界中的最 ...

  6. PyQt5学习 (3)--QWidget(下)

    层级关系.层级控制: 调整Z轴顺序 点击查看代码 label1 = QLabel(window) label1.setText("标签1") label1.resize(200, ...

  7. [ACM]Uva572-Oil Deposits-DFS应用

    #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> usin ...

  8. OpenGL Mac开发-如何使用imgui(1.89.4)插件进行调试

    为了调试我们的OpenGL Demo,可以尝试使用一个成熟的开源GUI插件imgui. 1,首先进入imgui在github上的地址. 在Release中下载最近的版本,可以得到一个Zip压缩包. 现 ...

  9. KVM WEB管理工具 WebVirtMgr

    一.webvirtmgr介绍及环境说明 温馨提示:安装KVM是需要2台都操作的,因为我们是打算将2台都设置为宿主机所有都需要安装KVM相关组件 github地址https://github.com/r ...

  10. 用Abp实现找回密码和密码强制过期策略

    @ 目录 重置密码 找回密码 发送验证码 校验验证码 发送重置密码链接 创建接口 密码强制过期策略 改写接口 Vue网页端开发 重置密码页面 忘记密码控件 密码过期提示 项目地址 用户找回密码,确切地 ...