docker的安装教程以及常用命令(一)
在日常开发过程中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的安装教程以及常用命令(一)相关推荐
- ajax nginx 转发 sessionid_Nginx:初识Nginx(概念、在Docker中安装Nginx、常用命令、配置文件) - 怀梦想,致远方...
1.Nginx初识 (1)概念 Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好 Nginx可以作为静态页面 ...
- docker 20安装教程及常见命令详解
本文笔记学习来自B站狂神说 视频链接: https://www.bilibili.com/video/BV1og4y1q7M4?p=14 docker安装 先卸载系统之前的老版本docker sudo ...
- Linux系统Vi/Vim编辑器的简单介绍、安装/卸载、常用命令
Linux系统Vi/Vim编辑器的简单介绍.安装/卸载.常用命令 1.介绍 vi(Visual Interface)编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下.由于不需要图形界 ...
- linux安装教程 ce,docker CE安装教程
docker CE安装教程 2018-11-09 10:28 | coding云 | 31451次阅读 | 本文开发环境为Ubuntu 16.04 LTS 64位系统,通过apt的docker官方源安 ...
- linux eth0 目录,教程 | Linux常用命令大全
原标题:教程 | Linux常用命令大全 来源:Linux爱好者 ID:LinuxHub Linux常用命令 目录操作命令 ls 命令名称:ls 命令英文原意:list 命令所在路径:/bin/ls ...
- ubuntu使用教程与常用命令
ubuntu使用教程 一. Ubuntu简介 Ubuntu(乌班图)是一个基于Debian的以桌面应用为主的Linux操作系统,据说其名称来自非洲南部祖鲁语或科萨语的"ubuntu" ...
- docker 一起性重启所有镜像_docker系列四之docker镜像与容器的常用命令
docker镜像与容器的常用命令 一.概述 docker的镜像于容器是docker中两个至关重要的概念,首先给各位读者解释一下笔者对于这两个概念的理解.镜像,我们从字面意思上看,镜子里成像,我们人站在 ...
- Docker入门级安装教程
Docker入门级安装教程 一.安装docker 1.卸载旧版本 2.安装Docker Engine-Community (1)安装所需的软件包. (2)使用以下命令来设置稳定的仓库.(阿里云) 3. ...
- Linux下的docker容器安装教程
Linux下的docker容器安装教程 一.初始环境配置 1.yum仓库配置 2.检查yum仓库 3.关闭防火墙和selinux 二.开启内核的流量转发 三.安装docker 1.配置docker相关 ...
- 【MAC、Windows系统的node版本管理工具——nvm】nvm的安装、nvm常用命令、nvm设置默认 node 版本
nvm 目录 总结 nvm 的使用 1. nvm 安装 2. nvm 常用命令 总结 总结 在我们的实际开发过程中,需要使用 nvm use vxx 将 node 版本设置成其他更高或更低的版本,但是 ...
最新文章
- csvtk:高效命令行版极简dplyr
- scapy安装and简介
- 企业运维之域控篇(九)--辅助域强制占用后的操作--清除数据
- RDD, DataFrame or Dataset
- f-measure[转]
- python frame如何置顶_Python tkinter frame父窗口小部件排列列
- 螺旋矩阵 java实现(待消化)
- 复杂结构体的存取器 [C宏——智者的利刃,愚者的恶梦]
- java 反射创建属性_使用Java反射机制确定基本数据类型属性
- 给控件做数字签名之二:生成证书文件
- 计算机控制系统电阻加热课设,计算机控制系统课程设计资料.doc
- List集合去重方式及效率对比
- 你用过猿如意吗?猿如意可以使用ChatGPT哦,这里详细介绍了猿如意的功能,为什么我建议你使用猿如意,来看看吧
- 文字加下划线单选按钮效果,RadioGroup实现
- 华为交换机配置syslog发送_华为交换机的 syslog功能
- mysql动态表单设计与实现_动态表单的数据库结构设计
- 基础实验——ADC(模数转换)
- arm工控主板,三星S5P4418嵌入式开发板
- ---------------------------SQL之机选大乐透,双色球算法-----------------------------
- 中国虚拟邮箱软件行业市场供需与战略研究报告