前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker入门

Docker入门

作者头像
打铁读书郎
发布2024-04-11 21:11:04
800
发布2024-04-11 21:11:04
举报

20220624-Linux-Docker入门

前言

目前我已经拥有了2台linux服务器,后续为了项目之间的隔离以及软件的快速部署和应用,docker不可或缺.

后续的应用场景: windows编写代码–>使用docker制作镜像–>部署到服务器进行运行

那么学习目标就是掌握windows及linux版本Docker安装及常用方法, windows端镜像制作

简介

Docker是一个应用打包,分发,部署的工具.

相对于VMware的虚拟机, Docker只会在操作系统上虚拟运行环境, 而VMVare则会在硬件上虚拟一整套操作系统.因而Docker 拥有更好的性能,更高的稳定性

桌面版Docker,服务器版Docker

桌面版Docker; 一般在windows使用, 既可以通过图形化页面进行交互,也可直接使用命令

服务器版Docker: 一般在linux使用, 只可使用命令交互

打包,分发,部署

打包: 将应用本身及其所需依赖,第三方库,打包成一个安装包

分发: 将安装包上传到镜像仓库,其他人可远程获取安装

部署: 使用docker命令一键部署运行应用

镜像,容器,仓库

镜像(Image) : 相当于”安装包”, 可以通过镜像创建多个容器实例

容器(Container): 一个运行时环境,通过镜像创建

仓库(Repository): 用于保存镜像,用于镜像的分发

代码语言:javascript
复制
sequenceDiagram 
Container ->> Image: 打包(commit)
Image ->> Respository: 分发_上传(push)
Respository ->> Image: 分发_下载(pull)
Image ->> Container: 部署(run)

安装

windows桌面版安装

主要参照教程: 💻 Docker 快速安装软件 - Docker 快速入门 - 易文档 (easydoc.net)

教程非常详细,这边只做简单总结

代码语言:javascript
复制
graph LR
Docker桌面版安装 --> windows功能启动Windows虚拟化和Linux子系统--> 命令行安装Ubuntu--> 安装新版WSL2-->设置Docker镜像

Linux版安装

主要参照官网安装教程: Install Docker Engine on CentOS | Docker Documentation

我使用仓库方式安装,下载docker有点慢(16min),可以尝试使用docker加速器或者其他教程

代码语言:javascript
复制
sudo yum install -y yum-utils   # 安装yum-utils
sudo yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo
 # 加入docker仓库
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
 # 安装最新版本docker
sudo systemctl start docker # 启动docker服务
sudo docker run hello-world   # 测试安装是否成功 

更换国内加速源

代码语言:javascript
复制
cd /etc/docker/
vim daemon.json   # 编辑daemon.json ,修改加速源地址
~
{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com"]
}
~

sudo systemctl daemon-reload  # 重启daemon-reload 
sudo systemctl restart docker  # 重启docker

TODO 使用docker打包部署flask+uwsgi+nginx

Mac安装

需要提前安装brew环境

代码语言:javascript
复制
$ brew install --cask --appdir=/Applications docker

手动打开docker应用, 按照提示同意协议, 输入密码,docker就可以使用了

参照:MacOS Docker 安装 | 菜鸟教程 (runoob.com)

Docker命令

常用命令

代码语言:javascript
复制
# 镜像操作
docker search tomcat   # 搜索tomcat的镜像
docker pull tomcat: xx  # 下载 tomcat的xx版本的奖项,不指定版本则下载最新版
docker images   # 查看本地镜像列表
docker rmi $image_id  # 删除镜像,id支持模糊输入
# 容器操作
docker ps  # 查看当前运行的容器  -a 代表展示所有状态容器, -q代表只展示容器id(用于快速删除)
docker create --name=tomcat1 tomcat # 通过镜像tomcat创建容器tomcat1,并返回容器id(用的较少)
docker start tomcat1 # 运行容器tomcat1
docker restart tomcat1 # 重启容器tomcat1
docker stop tomcat1 # 停止容器tomcat1
docekr rm $container_id  # 删除一个非运行状态的容器, id支持模糊输入, -f强制删除
docker rm -f $(docker ps -a)  # 删除所有容器
docker exec -it $container_id/$container_name [commnd] # 在运行的容器内输入命令
docker exec -it $container_id/$container_name /bin/bash  # 进入运行容器中的终端
docker cp logs/ sdh-nginx:/etc/nginx/logs/ # 复制文件进容器  docker cp  $本机地址 $container_name:$容器地址
# 异常排除
docker logs $container_id    # 查看容器启动日志

打包

准备

进入Docker Hub注册账户,并记住用户名

通过容器制作镜像

代码语言:javascript
复制
# 1. 准备容器基底
docker search centos ;docker pull centos:lastest
docker run -it centos:lastest /bin/bash # 创建centos的一个容器,并进入容器中的虚拟终端
# 2. 修改容器
... # 修改centos镜像,参照Reference Error: 修改centos镜像地址 
yum install git 
exit  # 退出容器虚拟终端
# 3.制作镜像
docker commit -m "centos with git" -a "feny" 611 feny/centos:git
# docker commit -m "$提交信息" -a "$作者信息" $容器id $DockerHub用户名/$容器名:$Tag名
# 将容器只作为指定名称的镜像,注意,用户名称一定要与Dockerhub上一致,否则无法push

利用Dockerfile创建镜像

Dockerfile方法

将容器制作镜像方法的操作,写入到Dokcerfile中,一键执行Dockfile快速生成对应镜像

制作Dockerfile

代码语言:javascript
复制
vim Dockerfile  
代码语言:javascript
复制
FROM fenylau/centos:git  # 以镜像fenylau/centos:git为底
MAINTAINER fenylau		# 维护者信息
RUN yum update		# 自动更新yum工具
RUN yum install -y python3 # 安装python3(注意:-y表示自动统一所有提醒,一定要加上)
COPY ./* /usr/share/gitdir/   # 将当前目录文件copy到容器/usr/share/gitdir/ (一定要是文件夹路径)

使用Dockerfile制作镜像

代码语言:javascript
复制
docker build -t=fenylau/centos:python3 .
# 制作镜像  指定镜像名 fenylau/centos, tag为python3  .表示在当前路径搜索Dockerfile

分发

DockerHub分发

代码语言:javascript
复制
# 上传镜像
docker login
... # 按提示输入Dockerhub用户名及密码
docker push feny/cenos:git
# 下载镜像(奇怪的是无法使用docker search搜索到我的镜像)
docker pull feny/cenos:git

压缩包分发

代码语言:javascript
复制
docker save -o docker-image-centos-python3.tar fenylau/centos:python3 
#  下载镜像  通过outstream写入文件   压缩包命名       需要保存的镜像
...  # 通过xftp等工具分享镜像压缩包
docker load -i .\docker-image-centos-python3.tar 
#  加载镜像   使用inputstream读取    压缩包名称

windows在DockerHub下拉镜像速度0.5m~1m/s,通过xftp下载镜像压缩包0.7m/s,2种方法下载速度差距不大

部署

docker run方式部署

通过宿主机中的文件路径和容器内文件路径, 可以非常方便的在web服务器部署war包

docker run语法

代码语言:javascript
复制
docker run  # 创建运行容器
	-i		# 运行容器
	-d		# 后台运行
	-v		# 目录挂载
	-p	主机端口: 容器应用端口	# 端口映射 , 容器应用端口应该和容器配置文件中指定端口一致(一般直接使用默认端口)
	-t       # 为容器分配一个虚拟终端
	--name=$容器名  # 指定容器名
	$imageName/$imageId # 镜像名称
	/bin/bash  # 进入虚拟终端,搭配-it使用,不与-d一起使用

docker run运行tomcat

代码语言:javascript
复制
 # 1.进入一个已有容器确认挂载路径
 docker exec -it tomcat1 /bin/bash # 进入容器tomcat1文件目录
 cd /usr/local/tomcat/webapps   # 查找被挂载目录
 exit # 退出容器目录查看
 ... # 宿主机设置挂载目录
 docker run -id --name=tomcat2 -p 6060:8080 -v E:\docker\tomcat\webapps:/usr/local/tomcat/webapps tomcat
  # 使用镜像tomcat创建并后台运行容器tomcat2, 容器端口8080映射到宿主机6060端口, E:\docker\tomcat\webapps存放的文件映射到   # 容器/usr/local/tomcat/webapps tomcat

docker run -id --name=sdh  --privileged=true centos:7 /usr/sbin/init  # 特权方式启动 可以启动docker的特权模式,这种模式允许我们以其宿主机具有(几乎)所有能力来运行容器,包括一些内核特性和设备访问。

docker-compose方式部署

可通过yml文件, 部署和管理多个容器

新建docker-compose.yml

代码语言:javascript
复制
version: '3'

services:
  grafana2:
    image: grafana/grafana:9.5.3
    ports:
      - '3000:3000'
    environment:
      GF_RENDERING_SERVER_URL: http://renderer:8081/render
      GF_RENDERING_CALLBACK_URL: http://grafana:3000/
      GF_LOG_FILTERS: rendering:debug
  renderer:
    image: grafana/grafana-image-renderer:latest
    ports:
      - 8081
networks:
  existing_network:
    external:
      name: grafana

执行

代码语言:javascript
复制
docker-compose --version   # 查看docker-compose版本是否安装
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 		# 安装docker-compose工具
sudo chmod +x /usr/local/bin/docker-compose
echo $PATH			# 确保 /usr/local/bin 路径已添加到系统的可执行路径中
docker-compose up   # 开始部署容器
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 20220624-Linux-Docker入门
    • 前言
      • 简介
        • 安装
          • windows桌面版安装
          • Linux版安装
          • Mac安装
        • Docker命令
          • 常用命令
        • 打包
          • 准备
          • 通过容器制作镜像
          • 利用Dockerfile创建镜像
        • 分发
          • DockerHub分发
          • 压缩包分发
        • 部署
          • docker run方式部署
          • docker-compose方式部署
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档