Docker基础入门

本文是Docker的基础入门教程,涵盖了Docker的特点、目标,以及安装启动、镜像和容器的操作。详细讲解了如何配置国内加速镜像、创建与管理容器,包括交互式和守护式容器的创建、文件拷贝、目录映射挂载等。还介绍了Redis、MySql、Tomcat的部署案例,并探讨了可能遇到的问题及其解决方案。最后,阐述了Docker的备份与迁移方法。
摘要由CSDN通过智能技术生成

1.Dockers概述

1.1简介

Docker是一个开源的,基于GO语言开发,LXC技术搭建的容器引擎。

1.2Docker特点

隔离环境,资源和系统环境隔离,容器不影响宿主机。
沙箱机制,不同集装箱不会影响,每个集装箱都是一个运行环境。
便携易移植,可以在不同的平台的不同的docker环境下使用。
轻量且性能高,一个机器上可运行多个docker容器,共享资源,占用内存少。
易扩展,可以增加和自动分发容器副本。
可堆叠,可以垂直堆叠服务并及时堆叠服务。

1.3Docker目标

提供一次性的环境,提供单元测试和构建的环境。
提供弹性的云服务,可以随时开关,适合动态扩缩容。
组建微服务架构,多个容器,一个机器跑多个服务。

解决问题:环境管理复杂,云时代软件管理,虚拟化手段的需求,LXC的便携性。

1.4容器和虚拟机

       虚拟机        Docker
尺寸    大             小
启动    慢             快
整合   困难半天     方便秒级

2.安装和启动

安装环境,Linux虚拟机,推荐centos7以上。
查看是否安装过

yum list installed | grep docker

删除旧版本

相关的都删除
yum remove docker-ce
分别删除
sudo yum remove docker-ce \docker-ce-cli \

清除默认的docker目录

其中包含之前的镜像和容器文件,配置等
rm -rf /var/lib/docker

安装一些必要的系统工具

sudo yum install -y 
yum-utils device-mapper-persistent-data lvm2

添加软件源信息

sudo yum-config-manager --add-repo 
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum缓存

sudo yum makecache fast

手工查看并删除用户创建的配置文件
必须先更新yum源,否则找不到docker-ce,只能找到docker

查看所有仓库中所有docker版本
yum list docker-ce --showduplicates|sort -r 
 直接安装Docker CE 
 yum -y install docker-ce
 或选择安装64位的版本:
 yum install docker-ce.x86_64
 或选择特定版本安装,比如这里的版本是19.03.0.ce:
 yum -y install docker-ce-19.03.0.ce

启动与停止

 systemctl stop docker 停止
 systemctl start docker  启动
 dockersystemctl restart docker 重启docker服务
 systemctl status docker  查看状态
 docker info 查看信息
 systemctl enable docker 开机启动
 docker --help 查看所有命令

3.操作准备

3.1Docker的几个对象概念

镜像,docker容器的基石,类似虚拟机镜像。
容器,镜像的运行实例,是一个运行环境。
注册中心,保存用户构建的镜像,官方Docker Hub。
仓库,注册中心服务器是放仓库的地方,通过标签来区分。

3.2注册中心国内加速镜像Mirror的配置

常见的加速镜像地址:

中科大Docker加速镜像地址:
https://docker.mirrors.ustc.edu.cn
中科大Docker加速镜像官网说明:https://lug.ustc.edu.cn/wiki/mirrors/help/docker
中科大Linux加速镜像官网说明:
https://mirrors.ustc.edu.cn/

Docker中国官方镜像加速-地址:
https://registry.docker-cn.com
Docker中国官方镜像加速-官网说明:
https://www.docker-cn.com/registry-mirror

编辑daemon.json文件
vi /etc/docker/daemon.json
在配置文件中加入
{  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}
配置完成重启docker服务
systemctl daemon-reload && systemctl restart docker

4.Image镜像操作

查找  docker search centos
拉取  docker pull centos
查看  docker images docker images centos
删除  docker rmi imagedocker rmi centosdocker rmi id

5.Container容器操作

5.1查看容器

docker ps  查看运行的
docker ps -a  查看所有

5.2容器创建

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]            
              选项    镜像    命令    额外参数 中括号非必填

5.2.1交互式容器

创建一个由于测试的容器,容器创建成功后自动分配伪终端,可进行人际交互。
用于测试或者临时演示。
优点:创建完容器后,自动运行容器,可以直接进入到子容器系统中操作,主要用于测试使用。
缺点:当退出子容器后,该容器会自动停止运行。

docker run -i -t centos:7.6.1810 bash
-i打开标准输入
-t 分配一个伪终端bash    
- t后面一定要加bash
docker run -it --name=mycentos centos:7.6.1810 bash
或docker run -i -t --name=mycentos centos:7.6.1810 bash
或docker run --interactive=true --tty=true --name=mycentos centos:7.6.1810 /bin/bash

5.2.2守护式容器
创建一个需要长期运行的容器,就可以创建一个守护式容器。

docker run -i -t --name=mycentos centos:7.6.1810 bashdocker run -id --name=mycentos2 centos:7.6.1810

5.2.3登录守护式容器方式

docker exec -it mycentos2 bash

优点:从守护式容器中退出,不影响容器的运行
缺点:必须手动的命令
进入到容器交互式容器使用后再启动就变成了守护式容器。

5.3容器停止启动

docker stop mycentos2
docker stop id
docker restart [OPTIONS] CONTAINER [CONTAINER...]
docker pause CONTAINER [CONTAINER...]
docker unpause CONTAINER [CONTAINER...]

5.4文件拷贝

拷进去
touch test.txtdocker cp test.txt mycentos2:/rm -f test.txt
拷出来
docker cp mycentos2:/test.txt ./

5.5目录映射挂载

宿主机的目录挂载映射到容器中。
宿主机的目录必须是以/或~开头
docker run -v 宿主机目录:容器目录 [–read-only] image

mkdir myvolume
docker run -id --name=mycentos3 -v /root/myvolume:/myvolume  centos:7.6.180

5.6可能遇到的问题:

如果你共享的是多级目录,挂载宿主机已存在目录后,在容器内对其进行操作,报“Permission denied”,可能会出现权限不足的提示。

解决方案:一.指定–privileged参数,以特权方式启动容器(推荐)

docker run -id --name=mycentos3 -v /root/myvolume:/myvolume --privileged centos:7.6.1810
或docker run -id --name=mycentos3 -v /root/myvolume:/myvolume --privileged=true centos:7.6.1810

二.关闭centos7的安全模块selinux(了解)

临时关闭
setenforce 0
永久关闭
修改/etc/selinux/config或/etc/sysconfig/selinux文件,
将SELINUX的值设置为disabled。
#默认值是enforcingSELINUX=disabled#注释掉这行(可选)#SELINUXTYPE=targeted

保存,退出,重启系统

5.7容器删除

docker stop mycentos3
docker rm mycentos3
docker rm id
docker rm -f mycentos2
docker ps -a -q 查询id
docker rm -f `docker ps -aq` 全删

6.部署案例

6.1Redis的部署

docker pull redis:5.0.5
docker images
docker run -d --name=my_redis -p 6379:6379 redis:5.0.5redis-cli -h 192.168.37.134 -p 6379

6.2MySql的部署

docker pull mysql:8.0.17
docker run -di --name=my_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.17
#e 环境
docker ps
docker exec -it my_mysql bash
mysql -u root -p

可能出现问题:
MySql8的默认密码加密策略发生了变化,之前的一些客户端的软件会出现无法登录的情况
解决方案:使用MySql原生的客户端登录,使用之前的密码加密策略重新修改密码#本地登录(如果仅仅用原生的命令行在本地登录的话,可不用改)

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

远程登录

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

创建容器的时候,直接指定MySql的默认认证插件使用

mysql_native_password:docker run -di --name=my_mysql2 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.17 --default-authentication-plugin=mysql_native_password

6.3Tomcat部署

docker pull tomcat:8.5.43
docker run -d --name=my_tomcat -p 9001:8080 tomcat:8.5.43
docker run -id --name=my_tomcat -p 9001:8080 -v ~/myvolume:/usr/local/tomcat/webapps tomcat:8.5.43

6.4部署web应用

将程序拷贝到宿主机的~/myvolume下面

docker run -id --name=my_tomcat3 -p 9003:8080 -v ~/myvolume:/usr/local/tomcat/webapps --privileged=true tomcat:8.5.43

比如:再建立目录myapp,里面编辑一个index.html页面作为测试主页

mkdir myapp
cd myapp/
vim index.html
<!doctype html>
<html lang="en">
<head>  
<meta charset="UTF-8"> 
 <meta name="Generator" content="EditPlus®"> 
  <meta name="Author" content="">  
  <meta name="Keywords" content="">  
  <meta name="Description" content="">  
  <title>Document</title>
  </head>
  <body>  
  我是docker中的tomcat应用的页面!
  </body>
  </html>

在虚拟机的宿主机上的浏览器地址栏中输入:http://192.168.37.131:9001/myapp (用自己的虚拟机地址)

7.备份与迁移

7.1容器提交新镜像

docker images
docker ps 

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]


docker commit my_redis myredis:1.0.1
docker imagesdocker run -d --name=my_redis2 -p 6380:6379 myredis:1.0.1
docker ps

7.2镜像保存

docker save [OPTIONS] IMAGE [IMAGE…]

docker save -o  myredis-1.0.1.save.tar 

7.3镜像加载

docker load [OPTIONS]

docker load -i myredis-1.0.1.save.tar

更多精彩分享,请访问个人博客Mingju’s Lab

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值