Centos 8.1安装Docker

下载docker-ce.repo

curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo

安装依赖

yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm

安装docker-ce

yum install docker-ce -y

启动docker

systemctl start docker

阿里云镜像加速器配置

阿里云镜像加速器地址 https://cr.console.aliyun.com/cn-shanghai/instances/mirrors

  • vim /etc/docker/daemon.json
  • { “registry-mirrors”: [“https://xxxx.mirror.aliyuncs.com”] }
  • systemctl daemon-reload
  • systemctl restart docker

最后使用docker info命令查看镜像加速器是否生效

命令

帮助命令

docker --help

docker info

docker version

镜像命令

docker images 列出本地主机上的镜像

​ -a 列出本地所有的镜像(含中间映像层)

​ -q 只显示镜像ID

​ --digests 显示镜像的摘要信息

​ --no-trunc 显示完整的镜像信息

docker search 在hub上查找有哪些镜像

docker search -s 300 tomcat 收藏数超过300的tomcat镜像

​ --no-trunc 显示完整的镜像信息

docker pull tomcat == docker pull tomcat:latest 下载镜像

docker rmi hello-world 删除hello-world镜像

docker rmi -f hello-world 强制删除hello-world镜像

docker rmi -f nginx hello-world 删除多个

docker rmi -f $(docker images -q) 删除所有

docker history hzy/centos:2.0 列出镜像变更历史

docker如何导入导出镜像

导出

docker save 镜像id >/mydocker/tomcat.tar

导入

docker load < tomcat.tar

修改镜像名称和标签名称

docker tag 镜像id tomcat:8

容器命令

docker run -it imageid 启动交互式容器 (image id 使用docker images查看)

​ --name 为容器指定一个名称

​ -d 后台运行容器,并返回容器ID

​ -i 以交互式模式运行容器

​ -t 为容器重新分配一个伪输入终端

​ -P 随机端口映射

​ -p 指定端口映射

docker run -d centos /bin/sh -c “while true;do echo hello centos;sleep 5;done” 带脚本的后台运行容器

docker run -d -p:3306:8080 hzy/tomcat:1.0 不带脚本的后台运行容器

docker run -it -p:8080:8080 tomcat 指定外部端口和容器端口

docker run -it -P tomcat 随机端口映射

docker ps 查看运行的

​ -l 上次运行的容器

​ -a 列出当前所有正在运行的容器+历史上运行的

​ -n 显示最近n个创建的容器 如:-n 5

​ -q 静默模式,只显示容器编号

​ --no-trunc 不截断输出

exit 容器停止退出

ctrl+P+Q 容器不停止退出

docker start 容器id 启动容器 (容器id CONTAINER ID ,可以使用docker ps查看)

docker restart 容器id 重启容器

docker stop 容器id 停止容器

docker kill 容器id 强制停止容器

docker rm 容器id 删除已经停止的容器

​ -f 先停止在删除

docker rm -f $(docker ps -qa) 删除所有容器

docker logs 容器id 查看容器日志

​ -t 加入时间戳

​ -f 跟随最新日志打印

​ --tail 显示最后多少条

docker top 容器id 查看容器内运行的进程

docker inspect 容器id 查看容器内部细节

docker attach 容器id 直接进入容器启动命令的终端,不会启动新的进程

docker exec 容器id ls -l /root 在容器外宿主机操作容器

docker exec -it 容器id /bin/bash 进入容器

docker cp 容器id:容器文件地址 宿主机地址 复制容器内的文件到宿主机上

docker commit -a=“作者” -m=“提交的描述信息” 容器id 要创建的目标镜像名:标签名

docker commit -a=“hzy” -m=“tomcat9” 容器id hzy/tomcat 提交

数据卷

docker run -it -v 宿主机绝对路径目录:容器内目录 镜像名

docker run -it -v 宿主机绝对路径目录:容器内目录:ro 镜像名 ro只读,容器只能读文件

编写Dockerfile制作容器卷

第一步:

# volume test
FROM centos
VOLUME ["/dataVolumeContainer1","dataVolumeContainer2"]
CMD echo "finished,-----------success"
CMD /bin/bash

第二步:

执行build -f 参数才是用来指定 Dockerfile 的路径的

docker build 最后的 . 号 指定镜像构建过程中的上下文环境的目录

docker build -f Dockerfile目录 -t 镜像名称 .

docker build -f /mydocker/Dockerfile -t centos .

第三步:docker run 新的镜像名称

使用 docker inspect 指令来查看数据卷中容器的目录地址对应宿主机的地址

docker inspect 容器id

数据卷容器

启动01

docker run -it --name 01 hzy/centos:1.0

启动02 并继承 01(使用继承 父子可以共享文件,各自添加都可以共享。及时父容器被删除,子容器与子容器之间依旧可以共享)

docker run -it --name 02 --volumes-from 01 hzy/centos:1.0

DockerFile

保留字指令

FROM 基础镜像,当前镜像是基于哪个镜像的

MAINTAINER 镜像维护者的姓名和邮箱地址

RUN 容器构建时需要运行的命令

EXPOSE 当前容器对外暴露的端口

WORKDIR 指定在创建容器后,终端默认登录的进来的工作目录,一个落脚点

ENV 用来在构建镜像过程中设置环境变量

ADD 将宿主机目录下的文件拷贝到镜像且自动处理URL和解压tar压缩包

COPY 类似ADD 拷贝文件和目录到镜像中

VOLUME 容器数据卷,用于数据保存持久化工作

CMD 指定一个容器启动时要运行的命令,DockerFile中可以有多个CMD命令,但只有最后一个生效,CMD会被docker run之后参数替换

ENTRYPOINT 和CMD一样,不同点:,CMD不会被docker run之后参数替换,会追加

ONBUILD 当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的onbuild被触发

制作centos的DockerFile并构建镜像

编写DockerFile文件并命令为DockerfileCentos

FROM centos
MAINTAINER hzy<hu_ziyang@foxmail.com>ENV MYPATH /usr/local
WORKDIR $MYPATHRUN yum -y install vim
RUN yum -y install net-toolsEXPOSE 80CMD echo "------success------"
CMD /bin/bash

执行build构建新的镜像

docker build -f /mydocker/DockerfileCentos -t hzy/centos:2.0 .

制作tomcat的DockerFile并构建镜像

编写DockerFile文件并命令为Dockerfile

FROM centos
MAINTAINER hzy<hu_ziyang@foxmail.com>COPY c.txt /usr/local/copy.txt
ADD jdk-8u231-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.59.tar.gz /usr/local/RUN yum -y install vimENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_231
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.59
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.59
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/binEXPOSE 8080CMD /usr/local/apache-tomcat-8.5.59/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.59/bin/logs/catalina.out

执行build构建新的镜像

docker build -t hzy/tomcat8:1.0 .

执行run(添加两个容器卷 --privileged=true 权限问题)

docker run -d -p 8080:8080 --name tomcat8 -v /mydocker/tomcat/test:/usr/local/apache-tomcat-8.5.59/webapps/test
-v /mydocker/tomcat/tomcat8logs/:/usr/local/apache-tomcat-8.5.59/logs
--privileged=true
hzy/tomcat8:1.0

常用安装

mysql5.7安装

拉镜像

docker pull mysql:5.7

执行

 docker run -p 3306:3306 --name mysql -v /mydocker/mysql5.7/conf:/etc/mysql/conf.d  -v /mydocker/mysql5.7/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=19981101 -d d821b79a874a

启动成功,进入mysql容器

docker exec -it mysql容器id /bin/bash

进入mysql容器,登录mysql

mysql -uroot -p

在宿主机上备份mysql所有数据库

 docker exec mysql容器id  sh -c 'exec mysqldump --all-databases -uroot -p"123456"' >/mydocker/mysql5.7/all-databases.sql

redis3.2安装

拉镜像

docker pull redis:3.2

执行

docker run -p 6379:6379 -v /mydocker/redis3.2/data:/data -v /mydocker/redis3.2/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis:3.2 redis-server /usr/local/etc/redis/redis.conf --appendonly yes

编写redis配置文件

vim /mydocker/redis3.2/conf/redis.conf/redis.conf
# Redis配置文件样例
# Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
# 启用守护进程后,Redis会把pid写到一个pidfile中,在/var/run/redis.pid
daemonize no# 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
pidfile /var/run/redis.pid# 指定Redis监听端口,默认端口为6379
# 如果指定0端口,表示Redis不监听TCP连接
port 6379# 绑定的主机地址
# 你可以绑定单一接口,如果没有绑定,所有接口都会监听到来的连接
# bind 127.0.0.1# 当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 0# 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
loglevel verbose# 日志记录方式,默认为标准输出,如果配置为redis为守护进程方式运行,而这里又配置为标准输出,则日志将会发送给/dev/null
logfile stdout
# 设置数据库的数量,默认数据库为0,可以使用select <dbid>命令在连接上指定数据库id
# dbid是从0到‘databases’-1的数目
databases 16################################ SNAPSHOTTING  #################################
# 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
# Save the DB on disk:
#
#   save <seconds> <changes>
#
#   Will save the DB if both the given number of seconds and the given
#   number of write operations against the DB occurred.
#
#   满足以下条件将会同步数据:
#   900秒(15分钟)内有1个更改
#   300秒(5分钟)内有10个更改
#   60秒内有10000个更改
#   Note: 可以把所有“save”行注释掉,这样就取消同步操作了save 900 1
save 300 10
save 60 10000# 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
rdbcompression yes# 指定本地数据库文件名,默认值为dump.rdb
dbfilename dump.rdb# 工作目录.
# 指定本地数据库存放目录,文件名由上一个dbfilename配置项指定
#
# Also the Append Only File will be created inside this directory.
#
# 注意,这里只能指定一个目录,不能指定文件名
dir ./slave-serve-stale-data yes
# 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。
# 因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no
# IMPORTANT: Check the BGREWRITEAOF to check how to rewrite the append
# log file in background when it gets too big.appendonly no# 指定更新日志文件名,默认为appendonly.aof
# appendfilename appendonly.aof# The fsync() call tells the Operating System to actually write data on disk
# instead to wait for more data in the output buffer. Some OS will really flush
# data on disk, some other OS will just try to do it ASAP.# 指定更新日志条件,共有3个可选值:
# no:表示等操作系统进行数据缓存同步到磁盘(快)
# always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
# everysec:表示每秒同步一次(折衷,默认值)appendfsync everysec
# appendfsync no
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mbslowlog-log-slower-than 10000
slowlog-max-len 1024# 指定是否启用虚拟内存机制,默认值为no,
# VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中
# 把vm-enabled设置为yes,根据需要设置好接下来的三个VM参数,就可以启动VM了
vm-enabled no
# vm-enabled yes# Redis交换文件最好的存储是SSD(固态硬盘)
# 虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享vm-swap-file /tmp/redis.swap# 将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多少,所有索引数据都是内存存储的(Redis的索引数据就是keys)
# 也就是说当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0
vm-max-memory 0# Redis swap文件分成了很多的page,一个对象可以保存在多个page上面,但一个page上不能被多个对象共享,vm-page-size是要根据存储的数据大小来设定的。
# 建议如果存储很多小对象,page大小最后设置为32或64bytes;如果存储很大的对象,则可以使用更大的page,如果不确定,就使用默认值
vm-page-size 32# 设置swap文件中的page数量由于页表(一种表示页面空闲或使用的bitmap)是存放在内存中的,在磁盘上每8个pages将消耗1byte的内存
# swap空间总容量为 vm-page-size * vm-pages
#
vm-pages 134217728
# 设置访问swap文件的I/O线程数,最后不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的,可能会造成比较长时间的延迟,默认值为4
vm-max-threads 4# 指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法
hash-max-zipmap-entries 512
hash-max-zipmap-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
# 指定是否激活重置哈希,默认为开启
activerehashing yes# 指定包含其他的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各实例又拥有自己的特定配置文件
# include /path/to/local.conf
# include /path/to/other.conf

在宿主机上连接redis

docker exec -it redis容器id redis-cli

镜像推送阿里云

制作镜像

docker commit -a="hzy" -m="redis3.2" 容器id hzy/redis:3.2.1
  • 在阿里云容器镜像服务中创建镜像仓库

  • docker login --username=199****5067 registry.cn-hangzhou.aliyuncs.com
    
  • docker tag 镜像id  registry.cn-hangzhou.aliyuncs.com/huziyang/myredis:3.2.1
    docker push registry.cn-hangzhou.aliyuncs.com/huziyang/myredis:3.2.1
    

Docker基础(centos安装、阿里云镜像加速器配置、常用命令、数据卷、DockerFile、镜像推送阿里云等)相关推荐

  1. Docker 之 基础篇(安装、卸载、阿里云镜像加速、常用命令、发布、应用安装)

    前言 这一章开始,我们就开始记录Docker了,它也是开发中很实用的一项技术,希望通过学习能够有一个初步的了解和掌握,在后续的工作中,可以快速上手,熟练运用,熟能生巧. 一.简介 1.是什么 Dock ...

  2. 浅谈Docker:DockerLinux安装,镜像管理命令,镜像制作命令,容器管理命令,数据卷,DockerFile,Docker-compose

    什么是Docker? Docker 概念 • Docker 是一个开源的应用容器引擎 • 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc) • ...

  3. Docker镜像推送阿里云和私有库

    原文地址:http://www.linzichen.cn/article/1592190934097854464 当公司有新同事入职时,我们常常会让其从git或svn上拉代码下来,并在本地跑通.若公司 ...

  4. centos6.8 安装docker并配置阿里云镜像加速器

    centos6.8 安装docker并配置阿里云镜像加速器 1.查看linux系统版本和内核版本 cat /etc/issue cat /proc/version 因为docker运行在Centos6 ...

  5. 安装Docker并配置阿里云镜像加速器

    安装Docker并配置阿里云镜像加速器 官方地址:https://www.docker.com/ 下面就是作为一个centos系统上安装Docker的案例 设置镜像仓库 官方推荐的方法 sudo yu ...

  6. 【云原生 | Docker 基础篇】03、Docker 阿里云镜像加速器

    目录 一.阿里云镜像加速 1.是什么 2.注册一个属于自己的阿里云账户(可复用淘宝账号) 3.进入控制台 4.选择容器镜像服务 5.获取加速器地址 6.配置镜像加速器 二.永远的 Hello Word ...

  7. docker系列2:阿里云镜像加速器

    传送门 前面介绍了docker的安装:docker系列1:docker安装 里面根据docker官网指南在阿里云服务器上面安装了docker 配置阿里云镜像加速器 在安装的过程中,因为官方的仓库地址是 ...

  8. 【Docker学习系列】Docker学习2-docker设置阿里云镜像加速器

    在上一篇中,我们学会了在centos中安装docer.我们知道,镜像都是外网的,镜像一般都是比较大的,因为种种原因,我们知道,从外网下载比较慢的.所以,本文,凯哥就介绍怎么将docker的镜像拉取设置 ...

  9. Docker学习之路02:阿里云镜像加速器

    阿里云镜像加速器 Docker学习路线传送门: Docker学习之路01:Docker的安装 Docker学习之路02:阿里云镜像加速器 Docker学习之路03:Docker的常用命令 Docker ...

最新文章

  1. 为什么 M1 和 Mac 是绝配?
  2. 微信生成带参数的二维码,合成海报,扫码后推送小程序?
  3. IBM开发单原子存储技术 iPod能存上3万部电影?
  4. 如何使ArrayList 线程安全
  5. jdk1.7 tomcat7 centos 安装
  6. 【SpringCloud】 failed to req API:/nacos/v1/ns/instance after all servers code:500 msg Read timed out
  7. 【鲁棒控制】平面2R型机器人的鲁棒逆推跟踪控制(matlab实现)
  8. linux安装Telnet工具
  9. DIM抠图网络 Deep Image Matting 论文笔记
  10. Android主流插件化
  11. 计算机中公式提取用什么函数,技巧:Excel快速从文本中提取单元格中的数字函数公式...
  12. Ubuntu 20.04 实现Windows 复制粘贴
  13. [逻辑]-- 25匹马赛跑问题
  14. 英文论文写作注意事项整理
  15. 9种AR/VR交互方式解读,让你更加了解透彻AR/VR
  16. 我的AI转型之路与AI之我见
  17. 新时代区块链研究院 | 区块链人才需求激增200%,薪资已赶超互联网!
  18. 5. 文件上传下载 与 db数据库
  19. 人人学5G-5G频谱方案与关键技术
  20. 追求稳定的人,终究会被时代淘汰。人生被只顾低头拉车,更要抬头看路。

热门文章

  1. Had I not seen the Sun(如果我不曾见过太阳)
  2. 模型和算法,有什么区别
  3. 6s测试信号软件,手机信号强度测试:苹果iPhone 6s不敌三星S6
  4. 好久能旅游?新加坡,一座惬意的城市
  5. PicGo+Gitee(码云)搭建个人博客的免费图床
  6. mac下Aria2GUI+Chrome解决网盘下载速度慢
  7. 微信个人好友增加到10000人啦!
  8. 光学红外雨量IFR202型传感器智慧检测雨量场景等行业
  9. CSU_WF-中南大学网络服务队2020招新培训-硬件知识
  10. android连接打印机