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容器详细操作相关推荐

  1. Docker容器怎么操作

    Docker容器怎么操作 帮助命令 镜像命令 docker images查看所有本地的主机上的镜像 docker search 搜索镜像 docker pull 下载镜像 docker rmi 删除镜 ...

  2. 【docker容器常用操作】

    docker容器常用操作 docker生成镜像 docker 加载镜像 docker生成镜像 step1: 查看需要生成镜像的容器的id sudo docker ps 例如: comacai@DGX2 ...

  3. 【云原生】Docker容器详细讲解

    前言 大家好,本文是对 Docker 容器的详细讲解,讲解了如何启动容器.进入容器,以及操作容器的命令.希望对大家有所帮助~ 目录 前言 一.Docker 容器 - 操作 Docker 容器 1.启动 ...

  4. 在docker容器中操作es,并给es7.6添加用户鉴权设置密码

    1.docker启动命令:docker-compose up -d 加上 -d 表示后台运行,只是docker-compose up则是在控制台运行,会不停的打印日志. 2.从容器中拷贝文件到宿主机: ...

  5. FaceRecognitionDotNet人脸识别项目发布到linux服务器docker容器详细教程

    本人服务器为linux Ubuntu 首先新增Dockerfile,我使用的Dockerfile文件如下: FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS ba ...

  6. Docker 镜像详细操作

    一.安装 Docker 1.1.CentOS 1.2.Ubuntu 二.Docker 镜像加速器 2.1.Ubuntu 14.04.Debian 7 Wheezy 2.2.Ubuntu 16.04+. ...

  7. Centos7下安装Docker容器详细图文介绍

    文章目录 为什么用docker Docker安装 1. 先卸载机器上原本的docker 2. 安装相关依赖 3. 设置镜像仓库 4. 安装相关引擎 5. 启动docker 6. 拉取镜像测试docke ...

  8. 【Microsoft Azure 的1024种玩法】六十八.基于Azure云平台使用Azure Virtual machines快速搭建Docker容器

    [简介] Docker 是一个开放源代码软件,主要应用于开发应用.交付应用.运行应用,Docker 可以将应用程序及其依赖项打包到可以在任何 Linux.Windows 或 macOS 计算机上运行的 ...

  9. docker容器从入门到实战0826

    ##docker容器安装和配置### #docker的git-hub网站(账号rshare,密rshare520):https://github.com/login #docker官网hub仓库(账号 ...

最新文章

  1. 【每日DP】day2、P1879 [USACO06NOV]Corn Fields G玉米地(状压DP模板题)难度⭐⭐⭐★
  2. linux下抓包代码阿里云,10.10 linux下抓包
  3. MMinte:预测微生物群体内代谢物互作
  4. LeetCode算法题13:DFS/BFS - 单词搜索
  5. linux安装neo4j及远程访问
  6. [脚本收集]提取Tripntale图片
  7. Python CGI 编程 | 类FieldStorage的使用
  8. PHP笔记-PHP中Web Service.
  9. python判断set里是否包含值_【python】判断值是否在list和set的对比以及set的实现原理...
  10. Windows安装MySQL 5.7.19及相关问题处理
  11. 架构师补给站之EA(企业架构)
  12. MP算法与OMP算法
  13. “Master”围棋对战50胜1和,人工智能身份欲揭?
  14. 图解机器学习—算法原理与Python语言实现(文末留言送书)
  15. 【JVM】尚硅谷宋红康JVM系列1:内存与垃圾回收篇
  16. ARM-Linux移植中文输入法 IMX6Q
  17. asp毕业设计——基于asp+access的学生论坛设计与实现(毕业论文+程序源码)——学生论坛
  18. python小游戏编程arcade----坦克动画图片合成
  19. ReactNative动画之Animated初识篇
  20. 大连渤海・黄海潮汐时间表

热门文章

  1. Dynamics 365 New Feature之Rich Text Editor Control
  2. 云服务器只能显示控制台吗,云服务器控制台使用方法
  3. ATMEL芯片系列介绍1
  4. NTC电阻短路(高温)电池未停止充电分析
  5. Python-matplotlib画图,柱状图,双柱图,折线图,散点图,饼图,线柱混合图。附代码模板与详细注释
  6. 大数据分析实战之异构数据源联合分析业务创新实践
  7. oracle数据库向表中新增字段以及插入一行数据
  8. apache ii评分怎么评_如何正确进行APACHE II评分
  9. 【移动网络】[5G 核心网络架构] 5GC: Architecture
  10. 20170916_Linux下线程池技术