在日常开发过程中docker的安装与使用,是避不开的,在这提供一套docker的全安装过程,以及常用命令的一些讲解。在这里至于docker是干什么的,有什么用我就不去叙述它,想要了解的朋友可以自行的查看。

1、docker的安装篇–centos为例

1、yum一键式安装

  • 安装之前:移除旧版本
方式一:(自我不喜欢这种方式)
//sudo:使用管理员的权限的方式,使用root权限用户可以加这个,后面安装,步骤均未加这个,需要的自己加上
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
方式二:yum remove docker*
  • 设置yum源
 安装yum-utils包(它提供yum-config-Manager实用程序)yum install -y yum-utils
//yum 的docker源
//一:docker官方源(不推荐)
yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
//二:中央仓库
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo
//三:阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 安装docker engine
    - 直接安装最新的版本
    yum install docker-ce docker-ce-cli containerd.io
    - 安装指定的版本
//找到所有可用docker版本列表
yum list docker-ce --showduplicates | sort -r// 安装指定版本,用上面的版本号替换<VERSION_STRING>
yum install docker-ce-<VERSION_STRING>.x86_64 docker-ce-cli-<VERSION_STRING>.x86_64 containerd.io
//例如:
yum install docker-ce-3:20.10.5-3.el7.x86_64 docker-ce-cli-3:20.10.5-3.el7.x86_64 containerd.io
//注意加上 .x86_64 大版本号

2、使用二进制文件安装

  • 去下载相应的文件:https://download.docker.com/linux/centos/
  • 安装步骤
//1、解压安装yum install /path/to/package.rpm

2、docker启动和镜像加速配置

  • 启动
//启动
systemctl start docker
//设置开机自启
systemctl enable docker
  • 镜像加速
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
//以后docker下载直接从阿里云拉取相关镜像
//上面的镜像地址,自己去阿里云开启


docker常用命令

  • 常见命令
命令 作用
attach 绑定到运行中容器的 标准输入, 输出,以及错误流(这样似乎也能进入容器内容,但是一定小心,他们操作的就是控制台,控制台的退出命令会生效,比如redis,nginx…)
build 从一个 Dockerfile 文件构建镜
commit 把容器的改变 提交创建一个新的镜像
cp 容器和本地文件系统间 复制 文件/文件夹
create 创建新容器,但并不启动(注意与docker run 的区分)需要手动启动。start\stop
diff 检查容器里文件系统结构的更改【A:添加文件或目录 D:文件或者目录删除 C:文件或者目录更改】
events 获取服务器的实时事件
exec 在运行时的容器内运行命令
export 导出容器的文件系统为一个tar文件。commit是直接提交成镜像,export是导出成文件方便传输
history 显示镜像的历史
images 列出所有镜像
import 导入tar的内容创建一个镜像,再导入进来的镜像直接启动不了容器。docker-entrypoint.sh nginx -g ‘daemon ow ;’ docker ps --no-trunc 看下之前的完整启动命令再用他
info 显示系统信息
inspect 获取docker对象的底层信息
kill 杀死一个或者多个容器
load 从 tar 文件加载镜像
login 登录Docker registry
logout 退出Docker registry
logs 获取容器日志;容器以前在前台控制台能输出的所有内容,都可以看到
pause 暂停一个或者多个容器
port 列出容器的端口映射
ps 列出所有容器
pull 从registry下载一个image 或者repository
push 给registry推送一个image或者repository
rename 重命名一个容器
restart 重启一个或者多个容器
rm 移除一个或者多个容器
rmi 移除一个或者多个镜像
run 创建并启动容器
save 把一个或者多个镜像保存为tar文件
search 去docker hub寻找镜像
start 启动一个或者多个容器
stats 显示容器资源的实时使用状态
stop 停止一个或者多个容器
tag 给源镜像创建一个新的标签,变成新的镜像
top 显示正在运行容器的进程
unpause pause的反操作
update 更新一个或者多个docker容器配置
version Show the Docker version information
container 管理容器
image 管理镜像
network 管理网络
volume 管理卷
  • 例子
docker pull redis == docker pull redis:latest(最新版)
# 阿里云的镜像是从docker hub来的,我们配置了加速,默认是从阿里云(缓存)下载
REPOSITORY(名) TAG (标签) IMAGE ID(镜像id) CREATED(镜像的创建时间) SIZE
redis 5.0.12-alpine3.13 50ae27fed589 6 days ago 29.3MB
redis latest 621ceef7494a 2 months ago 104MB
# 镜像是怎么做成的。基础环境+软件
redis的完整镜像应该是: linux系统+redis软件
alpine:超级经典版的linux 5mb;+ redis = 29.0mb
没有alpine3的:就是centos基本版
# 以后自己选择下载镜像的时候尽量使用
alpine: slim:
docker rmi -f $(docker images -aq) #删除全部镜像
docker image prune #移除游离镜像 dangling:游离镜像(没有镜像名字的)
docker tag 原镜像:标签 新镜像名:标签 #重命名
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
docker create [设置项] 镜像名 [启动] [启动参数...]
docker create redis: 按照redis:latest镜像启动一个容器
docker kill是强制kill -9(直接拔电源);
docker stop可以允许优雅停机(当前正在运行中的程序处理完所有事情后再停止)
docker create --name myredis -p 6379(主机的端口):6379(容器的端口) redis -p port1:port2
port1 是必须唯一的,那个是没关系的。
docker run --name myredis2 -p 6379:6379 -p 8888:6379 redis :默认是前台启动的,一般加上-d 让他后台悄悄启动, 虚拟机的很多端口绑定容器的一个端口是允许的
docker run -d == docker create + docker start
#启动了nginx;一个容器。docker 容器里面安装了nginx,要对nginx的所有修改都要进容器
进容器:
docker attach 绑定的是控制台. 可能导致容器停止。不要用这个
docker exec -it -u 0:0 --privileged mynginx4 /bin/bash: 0用户,以特权方式进入容器
docker container inspect 容器名 = docker inspect 容器
docker inspect image /network/volume ....
# 一般运行中的容器会常年修改,我们要使用最终的新镜像
docker commit -a leifengyang -m "first commit" mynginx4 mynginx:v4
#把新的镜像放到远程docker hub,方便后来在其他机器下载
---------export操作容器/import-------------------
docker export导出的文件被import导入以后变成镜像,并不能直接启动容器,需要知道之前的启动命令
(docker ps --no-trunc),然后再用下面启动。
docker run -d -P mynginx:v6 /docker-entrypoint.sh nginx -g 'daemon off;'
或者docker image inspect 看之前的镜像,把 之前镜像的 Entrypoint的所有和 Cmd的连接起来就
能得到启动命令
----save/load--操作镜像--
docker save -o busybox.tar busybox:latest 把busybox镜像保存成tar文件
docker load -i busybox.tar 把压缩包里面的内容直接导成镜像
----------
镜像为什么能长久运行
镜像启动一定得有一个阻塞的进程,一直干活,在这里代理。
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run --name myredis2 -p 6379:6379 -p 8888:6379 redis
镜像启动以后做镜像里面默认规定的活。
docker run -it busybox; 交互模式进入当前镜像启动的容器
-------------产生镜像--------------
1、基于已经存在的容器,提取成镜像
2、人家给了我tar包,导入成镜像
3、做出镜像
-1)、准备一个文件Dockerfile
FROM busybox
CMD ping baidu.com-2)、编写Dockerfile-3)、构建镜像
docker build -t mybusy66:v6 -f Dockerfile .
------------做redis的镜像------------
FROM alpine(基础镜像)
//下载安装包
//解压
//准备配置文件
CMD redis-server redis.conf
----------
build 是根据一个Dockerfile构建出镜像
commit 是正在运行中的容器提交成一个镜像
  • 典型的操作例子以及安装常见的服务
docker run-d: 后台运行容器,并返回容器ID;-i: 以交互模式运行容器,通常与 -t 同时使用;-P: 随机端口映射,容器内部端口随机映射到主机的端口-p:指定端口映射,格式为:主机(宿主)端口:容器端口-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用--name="nginx-lb":为容器指定一个名称;--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;-h "mars": 指定容器的hostname;-e username="ritchie": 设置环境变量;--env-file=[]: 从指定文件读入环境变量;--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;-m :设置容器使用内存最大值;--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;--link=[]: 添加链接到另一个容器;--expose=[]: 开放一个端口或一组端口;--restart , 指定重启策略,可以写--restart=awlays 总是故障重启--volume , -v: 绑定一个卷。一般格式 主机文件或文件夹:虚拟机文件或文件夹

1、部署Nginx

# 注意 外部的/nginx/conf下面的内容必须存在,否则挂载会覆盖
docker run --name nginx-app \
-v /app/nginx/html:/usr/share/nginx/html:ro \
-v /app/nginx/conf:/etc/nginx
-d nginx

2、部署MySQL

# 5.7版本
docker run -p 3306:3306 --name mysql57-app \
-v /app/mysql/log:/var/log/mysql \
-v /app/mysql/data:/var/lib/mysql \
-v /app/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
#8.x版本,引入了 secure-file-priv 机制,磁盘挂载将没有权限读写data数据,所以需要将权限透传,
或者chmod -R 777 /app/mysql/data
# --privileged 特权容器,容器内使用真正的root用户
docker run -p 3306:3306 --name mysql8-app \
-v /app/mysql/conf:/etc/mysql/conf.d \
-v /app/mysql/log:/var/log/mysql \
-v /app/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--privileged \
-d mysql

3、部署Redis

# 提前准备好redis.conf文件,创建好相应的文件夹。如:
port 6379
appendonly yes
#更多配置参照 https://raw.githubusercontent.com/redis/redis/6.0/redis.conf
docker run -p 6379:6379 --name redis \
-v /app/redis/redis.conf:/etc/redis/redis.conf \
-v /app/redis/data:/data \
-d redis:6.2.1-alpine3.13 \
redis-server /etc/redis/redis.conf --appendonly yes

4、部署ElasticSearch

#准备文件和文件夹,并chmod -R 777 xxx
#配置文件内容,参照
https://www.elastic.co/guide/en/elasticsearch/reference/7.5/node.name.html 搜索相
关配置
# 考虑为什么挂载使用esconfig ...
docker run --name=elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms300m -Xmx300m" \
-v /app/es/data:/usr/share/elasticsearch/data \
-v /app/es/plugins:/usr/shrae/elasticsearch/plugins \
-v esconfig:/usr/share/elasticsearch/config \
-d elasticsearch:7.12.0

5、部署Tomcat

# 考虑,如果我们每次 -v 都是指定磁盘路径,是不是很麻烦?
docker run --name tomcat-app -p 8080:8080 \
-v tomcatconf:/usr/local/tomcat/conf \
-v tomcatwebapp:/usr/local/tomcat/webapps \
-d tomcat:jdk8-openjdk-slim-buster

6、重启策略
no,默认策略,在容器退出时不重启容器
on-failure,在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3,在容器非正常退出时重启容器,最多重启3次
always,在容器退出时总是重启容器
unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

docker的安装教程以及常用命令(一)相关推荐

  1. ajax nginx 转发 sessionid_Nginx:初识Nginx(概念、在Docker中安装Nginx、常用命令、配置文件) - 怀梦想,致远方...

    1.Nginx初识 (1)概念 Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好 Nginx可以作为静态页面 ...

  2. docker 20安装教程及常见命令详解

    本文笔记学习来自B站狂神说 视频链接: https://www.bilibili.com/video/BV1og4y1q7M4?p=14 docker安装 先卸载系统之前的老版本docker sudo ...

  3. Linux系统Vi/Vim编辑器的简单介绍、安装/卸载、常用命令

    Linux系统Vi/Vim编辑器的简单介绍.安装/卸载.常用命令 1.介绍 vi(Visual Interface)编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下.由于不需要图形界 ...

  4. linux安装教程 ce,docker CE安装教程

    docker CE安装教程 2018-11-09 10:28 | coding云 | 31451次阅读 | 本文开发环境为Ubuntu 16.04 LTS 64位系统,通过apt的docker官方源安 ...

  5. linux eth0 目录,教程 | Linux常用命令大全

    原标题:教程 | Linux常用命令大全 来源:Linux爱好者 ID:LinuxHub Linux常用命令 目录操作命令 ls 命令名称:ls 命令英文原意:list 命令所在路径:/bin/ls ...

  6. ubuntu使用教程与常用命令

    ubuntu使用教程 一. Ubuntu简介 Ubuntu(乌班图)是一个基于Debian的以桌面应用为主的Linux操作系统,据说其名称来自非洲南部祖鲁语或科萨语的"ubuntu" ...

  7. docker 一起性重启所有镜像_docker系列四之docker镜像与容器的常用命令

    docker镜像与容器的常用命令 一.概述 docker的镜像于容器是docker中两个至关重要的概念,首先给各位读者解释一下笔者对于这两个概念的理解.镜像,我们从字面意思上看,镜子里成像,我们人站在 ...

  8. Docker入门级安装教程

    Docker入门级安装教程 一.安装docker 1.卸载旧版本 2.安装Docker Engine-Community (1)安装所需的软件包. (2)使用以下命令来设置稳定的仓库.(阿里云) 3. ...

  9. Linux下的docker容器安装教程

    Linux下的docker容器安装教程 一.初始环境配置 1.yum仓库配置 2.检查yum仓库 3.关闭防火墙和selinux 二.开启内核的流量转发 三.安装docker 1.配置docker相关 ...

  10. 【MAC、Windows系统的node版本管理工具——nvm】nvm的安装、nvm常用命令、nvm设置默认 node 版本

    nvm 目录 总结 nvm 的使用 1. nvm 安装 2. nvm 常用命令 总结 总结 在我们的实际开发过程中,需要使用 nvm use vxx 将 node 版本设置成其他更高或更低的版本,但是 ...

最新文章

  1. csvtk:高效命令行版极简dplyr
  2. scapy安装and简介
  3. 企业运维之域控篇(九)--辅助域强制占用后的操作--清除数据
  4. RDD, DataFrame or Dataset
  5. f-measure[转]
  6. python frame如何置顶_Python tkinter frame父窗口小部件排列列
  7. 螺旋矩阵 java实现(待消化)
  8. 复杂结构体的存取器 [C宏——智者的利刃,愚者的恶梦]
  9. java 反射创建属性_使用Java反射机制确定基本数据类型属性
  10. 给控件做数字签名之二:生成证书文件
  11. 计算机控制系统电阻加热课设,计算机控制系统课程设计资料.doc
  12. List集合去重方式及效率对比
  13. 你用过猿如意吗?猿如意可以使用ChatGPT哦,这里详细介绍了猿如意的功能,为什么我建议你使用猿如意,来看看吧
  14. 文字加下划线单选按钮效果,RadioGroup实现
  15. 华为交换机配置syslog发送_华为交换机的 syslog功能
  16. mysql动态表单设计与实现_动态表单的数据库结构设计
  17. 基础实验——ADC(模数转换)
  18. arm工控主板,三星S5P4418嵌入式开发板
  19. ---------------------------SQL之机选大乐透,双色球算法-----------------------------
  20. 中国虚拟邮箱软件行业市场供需与战略研究报告

热门文章

  1. The Code is successfully generatd...使用stm32cude生成工程时报错
  2. Google Earth Engine ——Landsat 8 影像集合Collection详细介绍
  3. 【小墨mysql】mysql系列之一---索引
  4. LaTeX常用的希腊字符、数学符号、矩阵、公式、排版、中括号、大括号以及插入图片等操作手册
  5. ppt滚动动画随机选题
  6. 方法重载与重写的区别
  7. 我给浏览器加了个语音搜索功能
  8. SAR图像滤波方法比较与分析
  9. 等级保护2.0的变化
  10. Axure原型分享:可视化统计图表