首页 > 其他分享 >容器操作、应用部署

容器操作、应用部署

时间:2024-06-20 19:59:03浏览次数:13  
标签:容器 run 部署 宿主机 -- 应用 mysql docker

[容器操作]

 1 #1 镜像操作
 2     -docker search
 3     -docker pull
 4     -docker images  
 5     -docker rmi
 6  
 7 #2 镜像运行,变成容器---》一个镜像可以运行处多个容器--》把一个容器当成一个虚拟机
 8     -操作系统
 9     -文件
10     -软件
11     -网络

 

(run)

 1 # 把镜像运行成容器,并且一个镜像,可以运行出多个容器!!!
 2 
 3 ------------------------------------------------
 4 
 5 # 查看正在运行的容器
 6     docker ps
 7 
 8 # 查看所有容器,包括停止的
 9     docker ps -a
10 
11 # 查看最后一次运行的容器
12     docker ps -l
13 # 删除容器:docker rm 容器名字/容器Id
14 ------------------------------------------------
15 
16 # 运行容器(其实是两步:创建容器:create,运行容器:run)
17 -如果容器没有创建,直接执行run,就会创建并运行,所以你只需要会run就行了
18 
19 run 的时候,有很多参数
20     -i:表示运行容器
21     -t:表示容器启动后会进入容器命令行。
22     加入-i -t 这两个参数后,容器创建后,就会自动进入到容器中。即分配一个伪终端。
23 
24     -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行
25     加入-i -d 这两个参数后,容器创建后,不会自动进入到容器中!!!
26 
27     --name :为创建的容器命名,如果不写,随机生成一个名字
28 
29 
30     -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),
31        可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,
32        然后共享到容器上。
33 
34     -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。
35         可以使用多个-p做多个端口映射
36 
37 
38 # docker run -id     不会进入到容器内部   -i -d  可以简写成-id
39 # docker run -it     会进入到容器内部
40 
41 ------------------------------------------------
42 ------------------------------------------------
43 
44 # 将镜像和标签 centos:7 镜像运行成一个容器   给容器起个名字  并且进入该容器
45 启动一个centos容器,名字叫mycentos,并且进入
46 docker run -it --name=mycentos centos:7
47 
48 yum install vim -y   /yum install net-tools   # 在容器中装了vim软件
49 
50 exit  # 退出,容器就停止了!!又回到了宿主机上了!!!  所以一般运行容器不用 run -it
51 容器需要创建后运行:--创建:create命令     ----运行:run
52 
53 docker start mycentos  # 启动停止的容器
54 
55 
56 # 注意:在容器里面放的所有文件,只要不是做的目录映射,都在容器里面
57 #      在宿主机里面找不到的,因为被加密了,
58 
59 ------------------------------------------------
60 
61 # 后台启动一个centos容器,名字叫youcentos,不进入容器
62 docker run -id --name=youcentos centos:7
63 
64 # 用 run -id 将镜像运行成容器,比较方便,
65 # 用docker exec -it  容器id /bin/bash 命令进入容器,这样exit退出容器,容器也不会停止!!!

【在宿主机上如何进入到容器内部】

run 时参数

 

1 # docker run 参数
2     -i 表示运行容器
3     -d 以守护式容器在后台运行,用这个参数创建出来的容器,命令行还在宿主机上,没有进入到容器内部
4     -t 表示容器启动后会进入容器命令行。加入这参数后,容器创建就能登录进去。即分配一个伪终端。
5     --name 指定容器名字,如果不指定,会随机一个名字
6     -p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
7     -v 表示目录映射关系(前者是宿主机目录,后者是容器的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上
 1 # 1 启动一个centos容器并且进入,名字叫mycentos,在内部装个vim,然后退出
 2     先拉python:docker pull python
 3     1 docker run -id --name=mycentos centos:centos7
 4     2 在宿主机
 5     3 docker exec -it mycentos /bin/bash  # 新开了一个bash进程
 6     4 yum install vim -y
 7     5 exit
 8     6 容器停还是没有停?没有,因为容器运行时的 bash 进程没有结束   
 9     
10 # 2 docker exec  命令
11     在宿主机,链接容器,执行命令,把命令结果返回给宿主机
12     docker exec 362a ls
13     
14     
15 # 3  进入到容器内部
16     # 在容器上执行命令
17     docker exec 容器名字/id  命令
18     # 利用这个特性-->进入到容器内部
19     docker exec -it 容器名字/id /bin/bash
20     docker exec -it python sh
21     # 退出,结束掉 /bin/bash
22     exit

 

 。

【-v参数:做目录映射】

 

 1 # 启动一个centos容器,名字叫lqz,不进入
 2 # -v参数:做目录映射  前面是文件夹在宿主机的路径  后面是映射到容器里面的路径
 3 #             注意是目录因素, 不是文件映射,所以-v后面不能写文件路径!!
 4 
 5 
 6 -------------------------------------------------------------------------------
 7 小案例
 8     # 运行出一个 centos77 容器,不进入, 做目录映射
 9     # 把宿主机的 /root/lqz文件夹  映射到 容器内部的 /lqz文件夹  容器如果没有文件夹会自动创建
10     # -v可以写多个,可以是文件或文件夹
11 
12     1 cd # 回家 前提是你是root用户
13     2 mkdir lqz  # 在root目录下创建lqz文件夹
14     3 运行容器,做目录映射
15     docker run -id --name=centos77 -v /root/lqz:/lqz centos:centos7
16     4 在宿主机的 /root/lqz 下新建 xx.txt
17     vim xx.txt
18 
19     5 来到容器内部:看这个文件在不在
20     cat xx.txt
21 
22     6 他们是相互影响的:
23         容器内部修改文件---》会影响外部
24         外部修改文件---》影响内部
25 
26 
27 
28 # 3 目录映射好处是,后期咱们部署django项目
29     1 有个django容器,做好映射,代码放在宿主机上即可,以后更新了代码,只要重启容器,代码就是最新了
30     2 运行mysql容器---》mysql配置文件,数据data目录,放在宿主机上做好映射
31         如果 mysql容器---》表数据,放到容器中---》如果删了容器---》数据库全没了
32         表数据,放在宿主机上---》把容器删除---》表数据还在----》再启动一个容器做好映射---》数据都还在
33 
34         
35         
36  
37 # 4 一次性删除
38 
39 # 一次性删除所有容器
40 docker rm `docker ps -a -q`
41 # 一次性删除所有镜像
42 docker rmi `docker images -q`

 

 

 

 。

【-p参数:做端口映射】

 1 # 1  -p参数:端口映射  容器中启动一个mysql5.7 --》容器中的3306监听,宿主机3306没人监听,做端口映射后,宿主机的3306就被docker的这个容器监听了
 2 
 3 # 2 小案例,运行一个mysql容器--》做端口映射
 4 docker run -id --name=mysql5.7 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
 5 #  -p: 启动mysql容器  -p 宿主机端口:容器端口
 6 # -e :启动的mysql的root密码是123456
 7 # 以后台守护进程运行mysql容器,mysql的root用户密码是123456,宿主机和容器做了端口映射
 8     宿主机 3307 映射容器 3306
 9   
10 ## 2.1 查看宿主机 3307端口占用情况
11 
12     #  netstat -nlp |grep 3307 查看本机80端口占用情况
13     # 查看宿主机 3307端口占用情况,在宿主机上安装命令
14     yum install net-tools -y
15     netstat -nlp | grep 3307 # 被宿主机的docker占了
16 
17 ## 2.2 远程链接宿主机的3307端口
18     以后访问宿主机3307端口就等于访问容器的3306端口
19 
20     # win机器可以远程链接 mysql
21         -命令行链接:mysql -h 192.168.241.129 -P 3307 -uroot -p  ,密码是虚拟机密码:123456
22         -Navicate: 链接,创建lqz数据库
23 
24     # 宿主机--》进入到容器内部--》进入到mysql,查看有没有创建lqz这个库
25         docker exec -it mysql5.7 /bin/bash # 进入容器内部
26         mysql -uroot  -p  # 进入mysql
27         show databases;  # 查看所有数据库

 

 

 

 

 。

【其他的操作】

 1 #1 启动容器
 2     docker start 容器id
 3 #2 停止容器
 4     docker stop 容器id
 5 
 6 #3  mysql的容器底层的操作系统是 debian 装软件需要用 
 7     apt-get update
 8     apt-get install vim -y
 9 
10 #4  文件拷贝(宿主机执行)
11     # 容器的文件copy到宿主机上(不是在容器内执行)
12     docker cp 容器名称:容器目录 需要拷贝的文件或目录
13     docker cp  0a9633190cb9:/xx.txt /root/lqz/lqz.txt
14     
15     # 宿主机的文件copy到容器中
16     docker cp 需要拷贝的文件或目录 容器名称:容器目录
17     docker cp /root/lqz/xx.txt  0a9633190cb9:/xx.txt
18      
19 # 5 查看容器IP地址    
20     docker inspect 容器名称  # 查看容器的详细描述,很多
21     docker inspect ea5f3c9ee99a --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
22     
23 # 6 在多个容器之间是可以ping通的(容器和宿主机也可以)
24     # python:172.17.0.3
25 
26     # mysql5.7:172.17.0.2
27 
28     # 宿主机--》ping 它俩
29     # 容器--》容器
30     apt-get install iputils-ping
31      ping 172.17.0.2    
32     
33 # 7 删除容器(删除已停止的容器)
34     docker rm 容器id  
35     docker rm `docker ps -a -q`
36      
37 # 8 无状态的服务(在容器中尽量运行无状态的服务)
38     -mysql reids   有状态,运行过程中产生数据,保存,容器删除,数据就没了
39     -uwsgi+django  无状态的服务  
40     
41 # 9 补充
42     1 ip地址  ip 
43         10.0.88.110
44         10.0.0.111
45         10.0.0.1
46         10.0.11.1
47     2 子网掩码 mask
48         255.255.0.0
49         
50     3 网关 gatway
51         10.0.0.1

【应用部署】

mysql 部署

 1 #0 dokcer 中部署mysql,以后不需要在宿主机上装mysql
 2     
 3 #1  没有做目录映射---》配置文件--》表数据都在容器中---》一旦删除--》所有都没了
 4 docker run -di --name=mysql -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
 5 
 6 # 2 做目录(配置文件和数据文件)和端口映射
 7 
 8 # 做目录映射:data文件,配置文件
 9 # 创建文件夹
10 mkdir /mysql
11 mkdir /mysql/conf.d
12 mkdir /mysql/data/
13 # 配置文件
14 vi /mysql/my.cnf 
15 [client]
16 default-character-set=utf8
17 [mysqld]
18 user=mysql
19 character-set-server=utf8
20 default_authentication_plugin=mysql_native_password
21 secure_file_priv=/var/lib/mysql
22 expire_logs_days=7
23 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
24 max_connections=1000
25 
26 # 运行容器
27 docker run  -di -v /mysql/data/:/var/lib/mysql -v /mysql/conf.d:/etc/mysql/conf.d -v /mysql/my.cnf:/etc/mysql/my.cnf -p 3307:3306 --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7      第二次就换名字 
28     
29 # 创建库,创建表,插入数据
30 
31 # 关闭容器,删除容器,myslq的容器没了,但是数据在宿主机上放着
32  docker stop mysql2
33  docker rm mysql2
34 ##docker rm mysql -f  容器之间删了
35 
36 # 再运行起一个容器,做好目录映射,数据都回来了
37 docker run  -di -v /mysql/data/:/var/lib/mysql -v /mysql/conf.d:/etc/mysql/conf.d -v /mysql/my.cnf:/etc/mysql/my.cnf -p 3307:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 
38 
39 =====================================================
40 # 补充  -e参数--》环境变量
41     -不同镜像提供不同参数
42     -传入后放入环境变量
43     echo $MYSQL_ROOT_PASSWORD

 

 

 

 

 。

redis部署

 1 #1  拉取redis镜像
 2 docker pull redis  #最新
 3 mkdir /root/data
 4 vim /root/redis.conf
 5 
 6 # 配置文件
 7 bind 0.0.0.0
 8 daemonize NO
 9 protected-mode yes
10 requirepass 123456
11 
12 
13 # 运行
14 #启动容器时,运行的命令是什么 redis-server /etc/redis/redis.conf
15 
16 docker run -id  -p 6379:6379 --name redis -v /root/redis.conf:/etc/redis/redis.conf -v /root/data:/data redis  redis-server /etc/redis/redis.conf     
17     
18 # 在容器运行时,可以自己定制运行命名 举例:docker run -id centos:centos7 ls
19 
20 # 远程链接redis操作

 

 

 

 

nginx部署

1 # 拉取nginx镜像
2 docker pull nginx
3 
4 # run起容器
5 # docker run -id --name nginx -p 80:80 nginx
6     
7 # /usr/share/nginx/html
8 docker run -id --name nginx1 -p 8008:80 -v /root/html:/usr/share/nginx/html nginx
9 # 以后只需要修改宿主机的/root/html 路径,看到页面就是修改后的

 

标签:容器,run,部署,宿主机,--,应用,mysql,docker
From: https://www.cnblogs.com/liuliu1/p/18259448

相关文章

  • 【机器学习】从理论到实践:决策树算法在机器学习中的应用与实现
      ......
  • docker安装部署mysql
    1.查询mysqldockersearchmysql2.安装mysqldockerpullmysql3.创建挂载目录mkdir-p/tmp/mysql/datamkdir-p/tmp/mysql/conf4.上传hmy.cnf到conf目录[mysqld]skip-name-resolve#设置3306端口port=3306#设置mysql的安装目录datadir=/var/lib/mysql#允......
  • [机器视觉]halcon应用实例 用户自定义多ROI模板匹配
    本示在前面几个halconROI示例的基础上继续扩展,更靠进实标情况。为了使ROI匹配更灵活,就要求可以让用户或工程根据实际使用情况自己去画ROI,想画几个是几个。数量不能在代码里写死。这次升级的主要是增加了一个while循环根据用户的鼠标按键来进行判断是否继续画,还是退出画ROI。效......
  • [机器视觉]halcon应用实例 边缘检测
    一个学习找边的实例边缘检测的步骤图解步骤1.通过Blob方法获取需要测量的Region1.1主要运用图像形态学、二值化2.创建测量句柄2.1create_metrology_model(MetrologyHandle)3.设置目标图像大小......
  • SAdb项目第二章-PySide6&&designer基础配置及应用
    接上文,本章来说说designer如何使用,并且如何转换成py文件打开designer控制台输入pyside6-designer就能打开创建一个Widget窗口打开后会自动弹出新建窗体选择Widget创建即可。也可以通过左上角的文件新建一个:designer简介desinger中的控件区域有各种控件......
  • docker swarm集群部署
      1、创建docker集群manger(要保存初始化后token,因为在节点加入时要使用token作为通讯的密钥)dockerswarminit--advertise-addr10.1.62.59上面命令执行后,加入swarm集群,输出的信息中包含了节点加入集群的方式:[root@hadoop1~]#dockerswarminit--advertise-addr10.......
  • 以沙箱的方式运行容器:安全容器Kata Containers
    目录一.系统环境二.前言三.KataContainers简介四.Gvisor与Kata区别对比五.配置docker使用kata作为runtime5.1安装docker5.2安装kata5.2.1在线安装(不推荐,下载非常慢)5.2.2使用rpm包离线安装(推荐)5.3配置docker支持kata作为runtime5.4docker使用kata作为runtime创建容器六......
  • Matlab数学建模实战应用:案例1 - 股票价格预测
    目录前言一、问题分析二、模型选择三、Matlab代码实现完整代码示例四、模型改进1.引入更多特征2.使用更复杂的模型3.模型参数优化五、实例总结总结前言股票价格预测是金融工程中的重要问题,利用数学建模可以帮助分析和预测股票价格的波动趋势,帮助投资者做出更......
  • 腾讯云部署的java服务,访问阿里云的mysql数据库,带宽异常偏高,可能是什么原因
    个人名片......
  • 移远通信SC200L芯片Linux平台摄像头应用开发
    一、交叉编译器             对于Linux平台的开发,官方只提供了yocto工程的源码,没有SDK,yocto工程也不能制作SDK包,可能是我自己的问题,最后只能在yocto中自建layer来进行开发。        由于官方源码编译采用arm-unisoc-linux-gnueabi-gcc,32位arm,所以整......