栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker学习笔记

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker学习笔记

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 前言`
    • docker学习笔记-未完成版本
  • 一、docker安装
  • 二、docker使用
    • 1.docker的基本操作
    • 2.docker的容器操作
    • 3.docker的镜像和容器启停操作
    • 4.docker镜像的保存与发布
    • 5.运行镜像中的python文件
    • 6.安装使用mysql
    • 7.docker安装配置nginx+php+mysql
  • 总结


前言` docker学习笔记-未完成版本

docker系统主要概念:docker、镜像、容器,仓库。
docker:docker系统的引擎,容器运行的平台。
镜像:包含了root系统和运行程序的文件系统,是静态。制作好的镜像可以打包下载到本地,通过U盘或网络转移到另外的电脑,通过docker加载镜像,实现发布。
容器:是镜像运行状态时的实体,可以由镜像创建、启动、停止、删除、暂停等。
仓库:代码控制中心,用来保存镜像,类似于GitHub。

容器可以增加、删除、修改里面的运行程序和文件,修改内容随着容器的销毁而失去,容器内文件更改后必须commi重新t生成镜像才可以永久保存修改的操作,所以尽量利用镜像来部署软件运行环境和不需要更新的软件,需要更新的软放在本地目录。

利用docker的镜像部署好软件运行环境,在启动容器时挂载本地目录到容器,在容器外利用docker exec运行容器内挂载目录里面的程序和更新交换文件。需要经常更新的文件和数据可以放在本地挂载目录中。

一、docker安装

docker安装过程

二、docker使用 1.docker的基本操作

1、查看本机存在的镜像

% docker images

2、查看本机正在运行的容器

% docker ps -a

3、拉取镜像

% docker pull 镜像名:版本 
2.docker的容器操作

1、容器生成镜像:docker commit

% docker commit -m="python" -a="x74"  容器id python:v0.1

2、拷贝本地文件到容器:docker cp

拷贝单个文件
% docker cp 源文件 容器id:/usr/src/myapp
/usr/src/myapp:容器内存放文件的目的目录
拷贝目录下所有文件
% docker cp -a 源文件所在目录名 容器id:/usr/src/myapp
拷贝文件后docker commit生产新的镜像

3、镜像更改名字/标签:docker tag

% docker tag 860c279d2fec runoob/centos:dev
docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。

% docker tag 镜像id 新名字
新名字:x74/aaa:v0.1

4、运行容器并挂载本地目录共享数据

% docker run --name python -itdv 需要挂载的本地目录绝对路径:/usr/src/myapp 镜像名或id /bin/bash    

–name python:python为启动的容器命名(name)
-it:提供交互的伪终端
-d:后台运行。选择后台运行后可以不需要/bin/bash
-v:挂载目录,v后挂载目录,不能再有别的参数。
----用:区别连接本地和容器路径(本地目录绝对路径:容器内位置和目录)
/usr/src/myapp:挂载到容器内的路径

5、从容器外部执行容器内部的程序命令:docker exec

% docker exec -it 容器id或name /bin/bash -c 'cd /usr/src/docker && python xxx.py'

-c后面为容器内部执行的命令,&&连接符
进入/usr/src/docker目录后,python运行xxx.py 程序

3.docker的镜像和容器启停操作

1、创建镜像 :docker build

使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。
详情查询Dockerfile

2、删除镜像:docker rmi

% docker rmi 镜像名/id

3、镜像运行变为容器并进入容器

% docker run -it 镜像id /bin/bash
在容器内退出:exit

4、停止一个容器:docker stop

% docker stop <容器 ID>

5、启动一个容器:docker start

% docker start <容器 ID>

6、重新启动容器:docker restart

% docker restart <容器 ID>

7、删除一个容器:docker rm -f

% docker rm -f <容器 ID>
清理掉所有处于终止状态的容器。
% docker container prune

8、进入一个容器:docker exec

% docker exec -it 容器id /bin/bash 
在容器内退出:exit

9、查看容器的ip地址:docker inspect

% docker inspect 容器ID或name
4.docker镜像的保存与发布

1、容器保存生成镜像:docker commit

 % docker commit -m="python" -a="gx74"  容器id x74/python:v0.1
命令解释:-m和-a参数可以不使用
% docker commit -m="提交描述信息" -a="作者" 容器id 自己起镜像名:版本

2、镜像打包保存到本地:docker save

方法1:
% docker save 镜像id > /存储路径/xxx.tar
方法2:
% docker save 镜像id  存储路径

3、从本地导入镜像:docker load

% docker load XXX.tar

4、

 
5.运行镜像中的python文件 

1、在电脑终端中运行

% docker run -it image文件id python /usr/src/myapp/9981.py(文件在镜像中的存放路径)
容器里面的文件更改后,要先commit镜像,然后用新镜像启动容器,再run 镜像的id 执行命令
-it:运行伪终端和容器的程序交互,向程序输入内容和参数。如果py程序没有交互,可以不用-it

2、

 
6.安装使用mysql 

不建议在decker里运行mysql:
----容器的 Volumes 设计是围绕 Union FS 镜像层提供持久存储,数据安全缺乏保证。如果容器突然崩溃,数据库未正常关闭,可能会损坏数据。
----MySQL 属于关系型数据库,对IO要求较高。当一台物理机跑多个时,IO就会累加,导致IO瓶颈,大大降低 MySQL 的读写性能。

1、docker安装mysql

% docker pull mysql

2、利用mysql镜像创建容器

% docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 x74/mysql:v0.1

参数说明:
-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
x74/mysql:v0.1:镜像名字或id

3、启动mysql容器的另一种方法,加载本地目录,把数据库文件保存到本地。

% docker run -d -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 x74/mysql:v0.1 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

$PWD:当前目录

7.docker安装配置nginx+php+mysql

分别拉取nginx和php的镜像

% docker pull nginx
% docker pull php:fpm
php选择带fpm的镜像

1、镜像nginx中的网站文件存储在 /usr/share/nginx/html目录下,如果挂载本地目录,把本地存放网站的目录挂载到/usr/share/nginx/html。纯html文件的网站可以不需要php服务器。

% docker run --name capcyweb -p9012:80  -itdv /Users/gu/Documents/vscode/www:/usr/share/nginx/html x74/nginx:v1.0

-p9012:80:将本机端口9012映射到80
/Users/gu/Documents/vscode/www:/usr/share/nginx/html:目录映射关系

2、启动nginx容器,挂载本地存放的conf.d配置文件,挂载本地网站文件

% docker run --name nginx -p9012:80  -itd -v $PWD/www/vicweb:/usr/share/nginx/html -v $PWD/nginx/conf.d:/etc/nginx/conf.d --link php:php  x74/nginx:v0.1

3、本机conf.d目录下要有default.conf配置文件,修改root和fastcgi_pass项。
也可以修改镜像中的default.conf配置文件,不用挂载conf.d目录

 location ~ .php$ {
       root           /var/www/html;  # php容器内网站文件的存放目录
       fastcgi_pass   php:9000;       # php容器的名字和映射的端口 
       fastcgi_index  index.php;
       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
       fastcgi_param  SCRIPT_NAME      $fastcgi_script_name;
       include        fastcgi_params;
    }

4、启动php容器并挂载网站目录

% docker run -p9000:9000 -itd --name php -v $PWD/www/vicweb:/var/www/html x74/php:fpm

5、php连接mysql时,需要在php容器里面先安装mysqli插件,并commit重新生成镜像。

# docker-php-ext-install mysqli

6、用包含mysqli的镜像启动php容器,并link到mysql容器

% docker run -p9000:9000 -itd --name php -v $PWD/www/vicweb:/var/www/html --link mysql:mysql  x74/php:v0.2
总结

随着学习的进程会不断添加内容。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/974528.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号