DOCKER应用

https://yq.aliyun.com/articles/40494?spm=a2c4e.11153940.0.0.2e933068PIF5zP

https://yq.aliyun.com/articles/2914?spm=a2c4e.11153940.0.0.722a1571t6wJyy

(
windows上安装docker)
https://yq.aliyun.com/articles/698007?spm=a2c4e.11153940.0.0.2e933068PIF5zP

1、docker怎样做数据备份,怎样防止容器崩溃导致数据丢失?

Docker的特性,决定了容器本身是非持久化的,容器被删除后其中的数据也一并被删除了。Docker提供数据卷(Volume),通过挂载宿主机上的目录来实现持久存储。

但在集群环境中,宿主机上的数据卷有很大的局限性

  • 容器在机器间迁移时,数据无法迁移
  • 不同机器之间不能共享数据卷

为了解决这些问题,阿里云容器服务提供第三方数据卷,将各种云存储包装成数据卷,可以直接挂载在容器上,并在容器重启、迁移时自动重新挂载。目前支持ossfs和云盘两种存储。

二所数据库应用使用
宿主机上的数据卷满足要求。

2、不同内核Dockers的应用

现在Docker只能运行在Linux内核的机器上。

所以在Windows或是Mac系统上,需要通过运行Linux的虚拟机来使用Docker服务。

而Docker Toolbox提供了一整套工具,让你在Windows或Mac系统上更快的搭建起这套环境。

Docker Toolbox 组件包括:

  • Docker Client
  • Docker Machine
  • Docker Compose (Mac only)
  • Docker Kitematic
  • VirtualBox

Docker Toolbox 适用于 Mac OS X 10.10.3+ 或 Windows 7 & 8.1。

在Windows安装 docker 有两种选择 :

1、docker for windows

2、docker toolbox

区别:

docker for windows-64位Windows 10、必须开启 Hyper-V

docker toolbox -有virtualbox即可

2.1   
DockerToolbox-18.03.0-ce.exe(
http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/?spm=a2c4e.11153940.0.0.2e933068PIF5zP)

*
Kitematic,这是GUI管理Docker的工具

a)
通过迅雷
下载最新
v19.03.5
版本boot2docker.iso, 放到
系统盘用户目录\.docker\machine\cache下,点击Docker Quickstart Terminal 图标来启动 Docker Toolbox 终端,
运行后会在Virtualbox中创建一个叫做default的虚拟机,出现
Start interactive shell提示:直接使用docker命令,也可以通过用PowerShell进行虚拟机的管理:

docker-machine ls   //
Docker虚拟机的状态


docker-machine create --driver=virtualbox default   //
创建一个Docker虚拟机




docker-machine env default    //
获得虚拟机的环境变量





docker-machine env default | Invoke-Expression  //
把当前的PowerShell和虚拟机里面的Docker Linux建立的连接,接下来就可以在PowerShell中使用docker命令.






https://developer.aliyun.com/mirror/docker-toolbox?spm=a2c6h.13651102.0.0.35dd1b11nt3EwC

b)镜像加速win7

https://yq.aliyun.com/articles/65076?spm=a2c4e.11153940.0.0.2e933068PIF5zP


需要设置独立于账号密码的Registry登录密码,便于镜像的上传、下载。
https://cr.console.aliyun.com/cn-hangzhou/new)

针对安装了Docker Toolbox的用户,参考以下配置步骤:

创建一台安装有Docker环境的Linux虚拟机,指定机器名称为default,同时配置Docker加速器地址。
到PowerShell中去依次执行

docker-machine ssh default sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=加速地址 |g" /var/lib/boot2docker/profile 
exit 
docker-machine restart default

重启Docker后就可以用国内的镜像来加速下载了。

c)镜像加速器
CentOS7 

https://yq.aliyun.com/articles/29941?spm=a2c4e.11153940.0.0.393b2a65Q4AbyL

CentOS7 的配置,需要先将默认的配置文件复制出来

/lib/systemd/system/docker.service -> /etc/systemd/system/docker.service

然后再将加速器地址添加到配置文件的启动命令

重启Docker就可以了。

sudo cp -n /lib/systemd/system/docker.service /etc/systemd/system/docker.service
sudo sed -i "s|ExecStart=/usr/bin/docker daemon|ExecStart=/usr/bin/docker daemon --registry-mirror=<your accelerate address>|g" /etc/systemd/system/docker.service
sudo sed -i "s|ExecStart=/usr/bin/dockerd|ExecStart=/usr/bin/dockerd --registry-mirror=<your accelerate address>|g" /etc/systemd/system/docker.service
sudo systemctl daemon-reload
sudo service docker restart

3、
win7--
virtualbox--
boot2docker--mysql容器 
网络梳理

a)mysql(docker容器):
//mysql   IP:PORT : 172.17.0.2:3306  ,Server version: 8.0.19 MySQL Community Server

   
PowerShell进入容器>docker exec -it  c9bb34c9995b bash

                                # mysqladmin -uroot -pabc

                                # mysql -uroot -pabc     //进入mysql--ok

 问题1)         mysql>GRANT ALL ON *.* TO 'sa'@'%' IDENTIFIED BY 'abc';    //不支持
IDENTIFIED BY


                     
mysql>GRANT ALL ON *.* TO 'root'@'%' ;  //ok



 问题2)        SQLyog连接报错“
Authentication plugin 'caching_sha2_password' cannot be loaded”,
出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,
之后是caching_sha2_password,


       
mysql>ALTER USER 'root'@'%' identified with mysql_native_password by 'abc'    //
把mysql用户登录密码加密规则还原成mysql_native_password,
SQLyog连接OK.




 问题3)(未验证)
 使用SQL Manager Lite for MySQL导入二所备份数据库atcdb.back,报错(导出dump也报错):

                Error: ERROR 2026 (HY000): SSL connection error: unknown error number





        mysql>
SHOW VARIABLES LIKE '%ssl%';   //查看
have_ssl的值为YES,表示已开启SSL




        
修改配置文件my.cnf,
加入内容:
skip_ssl ,然后service mysqld restart生效,
have_ssl的值为DISABLED,表示已关闭SSL。


导入二所数据库):使用SQLyog,按SQL语句执行
导入OK。
atcdb.back是sql批处理文件。

b)boot2docker: Linux default 4.14.154-boot2docker x86_64

                 docker0:172.17.0.1    

                      eth0:10.0.2.15

                      eth2:192.168.99.100   //netstat -an | grep 3306   //查看所有3306端口使用情况:OK


            vethb40b498: 没有IPv4地址


c)virtualbox: 网卡1:NAT

                     网卡2:VirtualBox Host-Only Network #2  

        ssh管理虚拟机boot2docker:docker-machine ip 获取IP,或查看C:\Users\mizy\.docker\machine\machines\default\config.json

d)win7:VirtualBox Host-Only Network:192.168.56.1

         VirtualBox Host-Only Network #2:192.168.99.1  //ping 192.168.99.100 (OK);netstat -an | findstr 3306 (No)

          无线网络连接:DHCP


docker run -d -p
192.168.99.1:3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=‘abc' mysql:latest    //cannot assign requested IP address



docker run -d -p 
192.168.99.100:3306:3306
 --name mysql -e MYSQL_ROOT_PASSWORD='abc' mysql:latest    //run OK




docker  
rm
 
$(
docker 
ps
 
-a -q)     
//
   
remove删除所有容器


docker run -d --name nginx --volume nginx-vol:/usr/share/nginx/html -p 80:80  nginx:latest  //nginx/html
持久化存储于
boot2docker虚拟机的/var/lib/docker/volumes/
nginx-vol/_data/目录下,
_data目录为空则容器拷贝内容,不为空容器不拷贝。自动刷新网页index.htm:添加
<head><meta http-equiv="refresh" content="60"></head>
 
实现通播号实时更新

4、MySQL容器使用vi   《测试OK》

    MySQL容器没有vi,yum,但是有apt-get。

    a)更换apt源,cat /etc/os-release,查看版本Debian GNU/Linux 10,百度Debian 10 apt国内源:

  echo 'deb http://mirrors.163.com/debian/ buster main non-free contrib
deb http://mirrors.163.com/debian/ buster-updates main non-free contrib# deb http://mirrors.163.com/debian/ buster-backports main non-free contribdeb-src http://mirrors.163.com/debian/ buster main non-free contrib# deb-src http://mirrors.163.com/debian/ buster-updates main non-free contribdeb-src http://mirrors.163.com/debian/ buster-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ buster/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ buster/updates main non-free contrib' > /etc/apt/sources.list

    b)apt-get update    //刷新缓存列表

    c)apt-get install vim -y    //安装vim

5、  数据库在CentOS6里的名称是mysql-server

    制作Docker镜像:docker commit rongqi-id phpwing:v1

    修改容器时区重启生效:UTC-->CST         

        
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

6、dockerfile支持自定义容器的初始命令。
dockerfile不能出现交互式的命令。

相关推荐:

Linux怎样查docker容器IP_Linux查容器IP法【容器】

Docker容器内网IP可通过五种方法查看:一、docker inspect -f提取;二、grep过滤IPAddress字段;三、docker exec ip addr show查接口;四、docker network inspect查自定义网络;五、docker container inspect语义化查询。 如果您在 Linux 系统中运行了 Docker 容器,但需要确认其内网 IP 地址...

使用 Docker 容器化你的 Python 应用

使用Docker容器化Python应用可解决环境不一致问题,核心是编写Dockerfile构建镜像,选择轻量基础镜像、利用缓存、多阶段构建、使用.dockerignore、非root用户运行及固定依赖版本是最佳实践,通过环境变量和配置文件挂载管理配置,结合编排工具的Secret机制保障敏感信息安全。 使用 Docker 容器化 Python 应用,本质上是为你的代码提供一个标准、可移植且自包含的运...
· Python · 251256

使用Docker部署Python应用的方法总结

本篇文章源自作者团队在长期开发过程中总结的宝贵经验,其中supervisor、gunicorn以及nginx更是在使用python开发web应用时最常用的软件,因此对于打算使用docker部署python应用的读者而言,这些最佳实践是很有参考价值。同时希望各位在日常实践过程中,也能将各自踩到过的“坑”以及宝贵的经验分享出来,大家共同进步! 我们可以使用Docker简单而高效的部署Python应用,...
· Python · 214843

Python中的Docker技巧

python是一种广泛使用的编程语言,docker则是一种流行的容器化技术。在python开发中,docker技术可以帮助我们更快速、更方便地构建、测试和部署应用程序。本文将介绍一些python中使用docker的技巧,让你快速掌握和使用docker容器技术,加快应用开发和部署的速度。 第一步:配置Docker环境 在使用Docker之前,我们需要先配置好Docker环境。我们可以在Docker官...
· Python · 272990

硒 python 和 docker

嗨,我展示了如何在 docker 容器中使用 selenium (或 undetected_chromedriver)。 我——dockerfile 我正在使用 docker python 图像并添加 chromdriver 和 chromium 来浏览网站。 第一步是创建requirements.txt 文件。就我个人而言,我使用 undetected-chromedriver 库,它需要 se...
· Python · 228463

Docker Python Django 初始配置设置

docker 工作流程 1. 确保您的 dockerfile 正确 确保您的 dockerfile 已准备好并位于项目的根目录中。根据前面的讨论,您的 dockerfile 可能如下所示: from python:3.11 env pythondontwritebytecode=1 env pythonunbuffered=1 workdir /app copy requirements.txt ...
· Python · 61572

Docker-Compose 为什么从 Python 转向 Go 语言?

Docker-Compose 弃 Python 转 Go 揭秘 近期,有开发者发现原本使用 pip 安装的 docker-compose 居然变身为 Golang 语言开发的,不禁怀疑自己记忆错乱。 然而,事实并非如此。 追根溯源 最初的 docker-compose 是使用 Python 开发的,版本为 v1。但随着时间的推移和需求的不断增加,Python 版本的 docker-compose ...
· Python · 114743

为什么 Docker Compose 从 Python 转向 Go?

docker-compose 转换到 Golang 的幕后故事 尽管你可能记得以前是通过 pip 安装 docker-compose,但你并没有记错。最初的 docker-compose 版本确实是用 Python 编写的,被称为 "v1"。然而,随着项目的发展,开发团队做出了一项战略决策,决定使用 Go 重写代码库。 从 "v2" 版开始,docker-compose 采用了 Go 作为其开发语...
· Python · 145912