docker
Posted zhuangshenhao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker相关的知识,希望对你有一定的参考价值。
1. Docker
1.1 docker简介
Docker是一个客户端-服务端(C/S)架构程序
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化
1.2 docker安装
yum包更新到最新
sudo yum update # sudo以管理员的身份执行
设置yum源为阿里源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装需要的软件包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
安装docker
sudo yum install docker-ce
查看docker版本
docker -v
1.3 Docker的启动与停止
systemctl命令是系统服务器管理指令
启动docker
systemctl start docker
停止docker
systemctl stop docker
重启docker
systemctl restart docker
查看docker状态
systemctl status docker
设置清华源
vi /etc/docker/daemon.json # 在里面写入 { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }
2. 镜像
镜像当做容器的"源代码", 就好比类中的对象.
1. 搜索镜像
# 命令 docker search python #地址 https://hub.docker.com
2. 下载镜像
docker pull centos:centos7.7.1908 docker pull centos # 最新版本
3. 查看下载的镜像
docker image
4. 删除镜像
docker rmi id号
3. 容器
1. 查看正在运行容器
docker ps
2. 查看所有的容器(包括正在运行的和已经停止的)
docker ps -a
3. 启动容器(基于image)
docker run -i 表示运行容器 -t 表示容器启动后会进入其命令行,加入it两个参数后, 容器创建就能登录进去. 即分配一个伪终端 --name 为创建的容器命名 -v 表示目录映射关系(前者是宿主机, 后者是映射到宿主机上的目录) 可以使用多个-v做多个目录或文件映射 注意: 最好做好目录映射, 在宿主机上做修改, 然后共享到容器上 -d 在run后面加上-d参数, 则会创建一个守护式容器在后台运行 (这样穿件容器后不会自动登录容器, 如果只加-it两个参数, 创建后就不会自动进去容器) -p 表示端口映射, 前者是宿主机端口, 后者是容器内的映射端口, 可以使用多个-p做对个端口映射
例子: 启动centos7
docker run -di --name mycentos7 centos:centos7.7.1908
4.停止容器
docker stop 容器名/id号
5. 启动已经有的容器
docker start 容器名/id号
6. 进入容器内部
docker exec -it 容器名(id号) /bin/bash docker exec -it 容器名(id号) sh exit 退出
7. 文件烤贝
向里拷贝(从宿主机---》容器) docker cp 需要拷贝的文件或目录 容器名称:容器目录 向外拷贝(从容器---》宿主机) docker cp 容器名称:容器目录 需要拷贝的文件或目录
8.目录挂载
docker run -di -v /home/test:/home/test --name=mycentos3 centos:centos7.7.1908
9. 查看容器ip地址
docker inspect 名字/id docker inspect --format=‘{{.NetworkSettings.IPAddress}}‘ 容器名称(容器ID)
10. 删除容器
docker rm 容器名称(容器ID)
4. 部署mysql
docker pull mysql:5.7
docker run -di --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
部署redis, 支持远程连接
创建data文件夹(数据持久化存放的地方)
创建conf文件夹(添加配置), 然后在conf中创建redis.conf文件,内部写入:
bind 0.0.0.0 #绑定地址 daemonize NO protected-mode no #运行远程连接 requirepass 123456 #密码是123456
docker run -p 6379:6379 --name redis_6379 -v /home/test/redis/conf/redis.conf:/etc/redis/redis.conf -v /home/test/redis/data:/data -d redis:alpine3.11 redis-server /etc/redis/redis.conf --appendonly yes
5. 迁移与备份
-本质就是把容器打包成镜像
-压缩,传到别的机器
-别的机器load回来,就能看到image---run起来,直接容器就跑起来了
1. 容器保存为镜像
docker commit mynginx mynginx_i
2. 镜像备份
docker save -o mynginx.tar mynginx_i
6. Dockerfile
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用基于基础镜像并最终创建一个新的镜像(本质:dockerfile能生成镜像)
注意: 文件名必须为Dockerfile
-命令: FROM image_name:tag 定义了使用哪个基础镜像启动构建流程 MAINTAINER user_name 声明镜像的创建者 ENV key value 设置环境变量 (可以写多条) RUN command 是Dockerfile的核心部分(可以写多条),linux命令 RUN wget https://www.python.org/ftp/python/3.6.10/Python-3.6.10.tgz RUN tar -xzf Python-3.6.10.tgz ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压 COPY source_dir/file dest_dir/file 和ADD相似,但是如果有压缩文件并不能解压 WORKDIR path_dir 设置工作目录 -案例,在python下安装django 1.11.9 和requests模块 FROM python:3.6 MAINTAINER lqz RUN pip3 install django==1.11.9 RUN pip3 install requests WORKDIR /home
7. 私服搭建
是公司自己存放docker镜像image的地方(自己做的镜像)
步骤
1 拉取私有仓库镜像(此步省略) docker pull registry docker run -di --name=registry -p 5000:5000 registry 2 打开浏览器 输入地址http://39.100.80.124:5000/v2/_catalog看到{"repositories":[]} 表示私有仓库搭建成功并且内容为空 3 修改daemon.json vi /etc/docker/daemon.json 4 添加以下内容,保存退出。 {"insecure-registries":["39.100.80.124:5000"]} 5 重启docker 服务 systemctl restart docker 6 镜像上传至私有仓库 7 标记此镜像为私有仓库的镜像 docker tag django2.0 39.100.80.124:5000/django2.0 8 再次启动私服容器 docker start registry 9 上传标记的镜像 docker push 39.100.80.124:5000/django2.0
总结:
在Windows上使用pycharm写代码
提交到git上面, 公司自建的一个gitlab
大公司有那个测试服务器(CentOS, Ubuntu), 从git上拉去代码, 重启uwsgi, 就是最新项目了, 压力测试用jmeter
加入docker后, 从git拉下项目, 直接重启docker容器, 就运行就是最新项目了
Python脚本: https://blog.csdn.net/chenzao123/article/details/81053517
以上是关于docker的主要内容,如果未能解决你的问题,请参考以下文章