Docker容器详细操作
Docker操作
- 镜像篇
- 下载镜像
- 导入镜像文件
- 删除镜像文件
- 查看镜像
- 导出镜像文件
- 运行镜像文件
- 容器篇
- 查看容器
- 启动容器
- 进入(exec)指定容器
- 从容器(Container)中退出(exit)
- 停止运行的容器
- 重新启动容器
- 删除容器
- 清理所有处于终止状态容器
- 管理容器篇
- 创建数据卷
- 查看所有数据卷
- 查看指定 数据卷 的信息
- 启动挂载数据卷的容器
- 删除数据卷(如果数据卷被容器使用则无法删除)
- 清理无主数据卷
- 挂载主机目录
- 查看挂载目录信息
- 挂载在主机目录与挂载在数据卷的区别
- Docker镜像制作实践篇
- 制作JDK镜像
- 新建一个文件夹(jdk)
- 创建Dockerfile文件
- 创建JDK镜像文件
- 运行JDK镜像(image)文件
- 制作Sentinel镜像
- 新建一个文件夹(sentinel)
- 创建Dockerfile文件
- 创建JDK镜像文件
- 后台运行sentinel容器
- 查看sentinel容器
- 访问sentinel服务
- 镜像安装实践篇
- 安装MySql数据库
- 下载mysql镜像
- 新建文件mysql并复制文件到此文件夹
- 进入文件夹导入mysql镜像
- 检查mysql镜像
- 启动运行mysql镜像(即启动一个容器)
- mysql服务操作
- 进入容器 (退出容器用exit)
- 新建mysql数据库文件并放入xx.mysql
- 启动mysql服务
- 登陆(默认密码root)数据库
- 导入数据
- 退出数据库
- 停止mysql服务(可选)
- 设置mysql开机自启动(可选)
- 安装redis数据库
- 下载redis镜像
- 新建文件redis并复制文件到此文件夹
- 进入文件夹导入redis镜像
- 检查redis镜像
- 准备配置文件
- 创建redis配置文件目录
- 在配置文件录下创建redis.conf配置文件
- 查看正在运行的进程
- 访问redis服务器
- 控制台直接连接redis测试
- 检测redis 版本
- 登录redis(默认不需要密码)
- 启动redis服务
- 停止redis服务
- 重启 redis 服务(可选)
- 设置redis 开机自启动(可选)
- 安装ngnix
- 下载ngnix镜像
- 新建文件ngnix并复制文件到此文件夹
- 进入文件夹导入redis镜像
- 检查redis镜像
- 创建数据卷
- 查看数据卷对应的宿主机目录
- 启动nginx服务
- 访问nginx服务
镜像篇
下载镜像
docker pull 镜像名
docker pull hello-world
导入镜像文件
镜像导入(要在hello-world.tar.gz 文件所在目录下执行)
docker load < hello-world.tar.gz
删除镜像文件
docker image rm hello-world
查看镜像
docker images
导出镜像文件
镜像导出(linux系统中的镜像文件下载到本地-例如window),导出后给他人使用
docker save hello-world | gzip > hello-world.tar.gz
运行镜像文件
基于镜像,启动容器运行。
docker run hello-world
容器篇
容器是在镜像上使用的,要先得有镜像文件,才能启动!!,详细操作看镜像篇
查看容器
docker ps -a (all的简写)
启动容器
命令:docker run -it xxxx bash
1)xxxx - 镜像名, 或 image id 的前几位,
2)-it 这是两个参数(-i表示交互式操作, -t 表示终端)
3) bash 表示进入操作终端,基于交互式进行相关操作(例如执行linux相关指令)。
docker run -it centos:7 bash
进入(exec)指定容器
docker exec -it 802 bash #802为容器id
从容器(Container)中退出(exit)
exit
停止运行的容器
docker container stop 802 #802为容器自己的id
重新启动容器
docker container restart 802 #802位容器自己的id
删除容器
docker (container) rm -f(强制删除) 9a1(容器的id)
清理所有处于终止状态容器
docker container prune
管理容器篇
在容器中管理数据主要有两种方式:数据卷(Volumes)挂载主机目录 (Bind mounts)
创建数据卷
docker volume create container-vol
查看所有数据卷
docker volume ls
查看指定 数据卷 的信息
docker volume inspect container-vol
启动挂载数据卷的容器
docker run -it --mount source=container-vol,target=/root centos:7 bash或
docker run -it -v container-vol:/root centos:7 bash说明:
-v container-vol:/root 把数据卷 container-vol 挂载到容器的 /root 目录
删除数据卷(如果数据卷被容器使用则无法删除)
docker volume rm container-vol
清理无主数据卷
docker volume prune
挂载主机目录
docker run -it -v /usr/app:/opt/app centos:7 bash说明:
1)/usr/app:为宿主机目录
2)/opt/app: 为启动容器的一个目录
3)-v 用于指定挂载目录,如果本地目录(宿主机目录)不存在, Docker 会自动为你按照挂载目录进行目录的创建。
查看挂载目录信息
docker inspect 91a #91a 为容器id
挂载在主机目录与挂载在数据卷的区别
挂载在主机目录:优点:目录由用户自己管理,比较灵活缺点:写入数据可能需要权限(假如用户没有给目录权限),需要重新赋权且目录的安全性比较低。
挂载在docker容器:优点:由容器管理,即使容器坏掉也对文件没有影响,且写入数据的目录比较深,相对挂载在主机目录较安全。
Docker镜像制作实践篇
制作JDK镜像
新建一个文件夹(jdk)
/root/setup/jdk 并将“jdk-8u51-linux-x64.tar.gz”文件拷贝到改目录下
创建Dockerfile文件
/root/setup/jdk/Dockerfile ,并复制一下代码到文件中
FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker
ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51 \PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH
CMD ['bash']
创建JDK镜像文件
在Dockerfile所在目录(即:/root/setup/jdk)执行docker build指令
docker build -t jdk:8 . #不要丢掉这里的点,-t表示镜像标识(镜像名),是tag单词的缩写.
运行JDK镜像(image)文件
docker run -it jdk:8 bash #不要丢掉这里的点,-t表示镜像标识(镜像名),是tag单词的缩写.
制作Sentinel镜像
新建一个文件夹(sentinel)
/root/setup/sentinel并将“jdk-8u51-linux-x64.tar.gz ,sentinel-dashboard-1.8.1.jar”两个文件拷贝到改目录下
创建Dockerfile文件
/root/setup/sentinel/Dockerfile ,并复制一下代码到文件中
FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/
ADD sentinel-dashboard-1.8.1.jar /usr/local/
ENV JAVA_HOME=/usr/local/jdk1.8.0_51 \PATH=/usr/local/jdk1.8.0_51/bin:$PATH
EXPOSE 8080
ENTRYPOINT ["java","-jar","/usr/local/sentinel-dashboard-1.8.1.jar"]
其中,EXPOSE表示对外暴露的服务端口,ENTRYPOINT中写的是你容器启动时候要执行的指令.
创建JDK镜像文件
在Dockerfile所在目录(即:/root/setup/jdk)执行docker build指令
docker build -t sentinel:8 . #不要丢掉这里的点
后台运行sentinel容器
docker run -d --name sentinel8181 -p 8181:8080 sentinel:8 #-d 表示后台运行,-p用于指定端口映射,sentinel:8为镜像文件名
查看sentinel容器
docker ps
访问sentinel服务
http://192.168.126.128:8181/
访问不了原因分析:
1.IP地址和端口号是否写正确
2.docker容器所在的Linux操作系统的网关是否关闭,或者是否开放我们访问的端口
解决方法:
1)检查防火墙状态:firewall-cmd --state
2)通过命令手动将防火墙关闭:systemctl stop firewalld.service
3)告诉linux系统以后开机不需要启动防火墙systemctl disable firewalld.service
4)重启防火墙firewall-cmd --reload想要更多详细操作,请参考:
镜像安装实践篇
安装MySql数据库
下载mysql镜像
在hub.docker.com上搜索
新建文件mysql并复制文件到此文件夹
/root/setup/mysql
进入文件夹导入mysql镜像
docker load < mysql.tar.gz
检查mysql镜像
docker images
启动运行mysql镜像(即启动一个容器)
sudo docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0.23
mysql服务操作
进入容器 (退出容器用exit)
sudo docker exec -it mysql bash
新建mysql数据库文件并放入xx.mysql
/usr/local/docker/mysql/mysql-files:/var/lib/mysql-files
问号前部分:为宿主目录,后部分:docker容器目录
mkdir -p /usr/local/docker/mysql/mysql-files
启动mysql服务
docker start mysql
登陆(默认密码root)数据库
mysql -u root -p root
导入数据
启动mysql容器,进入数据库(若你退出了,请参考前几个步骤重新做一遍),最后导入xxx.mysql文件
source /var/lib/mysql-files/jt-sso.mysql
假如希望查看mysql启动时的日志,可以执行 docker container logs mysql 这个指令。
退出数据库
输入:exit+回车或按住快捷键Ctrl+C
停止mysql服务(可选)
docker stop mysql
设置mysql开机自启动(可选)
docker update mysql --restart=always
安装redis数据库
下载redis镜像
方法同MySQL一样
新建文件redis并复制文件到此文件夹
/root/setup/redis
进入文件夹导入redis镜像
docker load < redis.tar.gz
检查redis镜像
docker images
准备配置文件
创建redis配置文件目录
mkdir -p /usr/local/docker/redis01/conf
在配置文件录下创建redis.conf配置文件
这个文件一定要创建,否在我们进行目录挂载时默认生成的是一个目录
touch /usr/local/docker/redis01/conf/redis.conf
查看正在运行的进程
docker ps
访问redis服务器
控制台直接连接redis测试
docker exec -it redis01 bash
检测redis 版本
redis-server -v
登录redis(默认不需要密码)
redis-cli
启动redis服务
docker start redis01
停止redis服务
docker stop redis01
重启 redis 服务(可选)
docker restart redis01
设置redis 开机自启动(可选)
docker update redis --restart=always
安装ngnix
下载ngnix镜像
方法同MySQL一样
新建文件ngnix并复制文件到此文件夹
/root/setup/ngnix
进入文件夹导入redis镜像
docker load < ngnix.tar.gz
检查redis镜像
docker images
创建数据卷
docker volume create nginx-vol
查看数据卷对应的宿主机目录
docker inspect nginx-vol
启动nginx服务
docker run --name nginx -p 80:80 -v nginx-vol:/etc/nginx -d nginx
其中:/etc/nginx 为nginx容器启动时,nginx镜像文件默认的解压目录
说明:假如以后想修改nginx配置,可以直接去nginx-vol数据卷对应的目录去修改.
访问nginx服务
Docker容器详细操作相关推荐
- Docker容器怎么操作
Docker容器怎么操作 帮助命令 镜像命令 docker images查看所有本地的主机上的镜像 docker search 搜索镜像 docker pull 下载镜像 docker rmi 删除镜 ...
- 【docker容器常用操作】
docker容器常用操作 docker生成镜像 docker 加载镜像 docker生成镜像 step1: 查看需要生成镜像的容器的id sudo docker ps 例如: comacai@DGX2 ...
- 【云原生】Docker容器详细讲解
前言 大家好,本文是对 Docker 容器的详细讲解,讲解了如何启动容器.进入容器,以及操作容器的命令.希望对大家有所帮助~ 目录 前言 一.Docker 容器 - 操作 Docker 容器 1.启动 ...
- 在docker容器中操作es,并给es7.6添加用户鉴权设置密码
1.docker启动命令:docker-compose up -d 加上 -d 表示后台运行,只是docker-compose up则是在控制台运行,会不停的打印日志. 2.从容器中拷贝文件到宿主机: ...
- FaceRecognitionDotNet人脸识别项目发布到linux服务器docker容器详细教程
本人服务器为linux Ubuntu 首先新增Dockerfile,我使用的Dockerfile文件如下: FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS ba ...
- Docker 镜像详细操作
一.安装 Docker 1.1.CentOS 1.2.Ubuntu 二.Docker 镜像加速器 2.1.Ubuntu 14.04.Debian 7 Wheezy 2.2.Ubuntu 16.04+. ...
- Centos7下安装Docker容器详细图文介绍
文章目录 为什么用docker Docker安装 1. 先卸载机器上原本的docker 2. 安装相关依赖 3. 设置镜像仓库 4. 安装相关引擎 5. 启动docker 6. 拉取镜像测试docke ...
- 【Microsoft Azure 的1024种玩法】六十八.基于Azure云平台使用Azure Virtual machines快速搭建Docker容器
[简介] Docker 是一个开放源代码软件,主要应用于开发应用.交付应用.运行应用,Docker 可以将应用程序及其依赖项打包到可以在任何 Linux.Windows 或 macOS 计算机上运行的 ...
- docker容器从入门到实战0826
##docker容器安装和配置### #docker的git-hub网站(账号rshare,密rshare520):https://github.com/login #docker官网hub仓库(账号 ...
最新文章
- 【每日DP】day2、P1879 [USACO06NOV]Corn Fields G玉米地(状压DP模板题)难度⭐⭐⭐★
- linux下抓包代码阿里云,10.10 linux下抓包
- MMinte:预测微生物群体内代谢物互作
- LeetCode算法题13:DFS/BFS - 单词搜索
- linux安装neo4j及远程访问
- [脚本收集]提取Tripntale图片
- Python CGI 编程 | 类FieldStorage的使用
- PHP笔记-PHP中Web Service.
- python判断set里是否包含值_【python】判断值是否在list和set的对比以及set的实现原理...
- Windows安装MySQL 5.7.19及相关问题处理
- 架构师补给站之EA(企业架构)
- MP算法与OMP算法
- “Master”围棋对战50胜1和,人工智能身份欲揭?
- 图解机器学习—算法原理与Python语言实现(文末留言送书)
- 【JVM】尚硅谷宋红康JVM系列1:内存与垃圾回收篇
- ARM-Linux移植中文输入法 IMX6Q
- asp毕业设计——基于asp+access的学生论坛设计与实现(毕业论文+程序源码)——学生论坛
- python小游戏编程arcade----坦克动画图片合成
- ReactNative动画之Animated初识篇
- 大连渤海・黄海潮汐时间表
热门文章
- Dynamics 365 New Feature之Rich Text Editor Control
- 云服务器只能显示控制台吗,云服务器控制台使用方法
- ATMEL芯片系列介绍1
- NTC电阻短路(高温)电池未停止充电分析
- Python-matplotlib画图,柱状图,双柱图,折线图,散点图,饼图,线柱混合图。附代码模板与详细注释
- 大数据分析实战之异构数据源联合分析业务创新实践
- oracle数据库向表中新增字段以及插入一行数据
- apache ii评分怎么评_如何正确进行APACHE II评分
- 【移动网络】[5G 核心网络架构] 5GC: Architecture
- 20170916_Linux下线程池技术