一篇文章带你急速入门docker

目录

一. Docker的介绍

二. 准备工作

安装Docker(推荐宝塔安装)

准备条件

准备安装

安装Docker

安装Docker 命令补全工具

允许非Root用户执行docker 命令

添加docker用户组

将当前用户添加到用户组

使权限生效

测试一下

更新.bashrc文件

三. 详细介绍

容器详细介绍

四. Docker常见命令

下载镜像

检索

下载

查看本地镜像 docker images

删除

启动容器

运行 docker run

查看 docker ps

启动 docker start

停止 docker stop

重启 docker restart

状态 docker stats

日志 docker logs

删除 docker rm

进入 docker exec

保存镜像

提交 docker commit

保存 docker save

加载 docker load

分享社区

目录挂载 -v /app/nghtml:/usr/share/nginx/html

卷映射 -v ngconfg:/etc/nginx


一. Docker的介绍

Docker是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows服务器上。容器是完全使用沙箱机制(程序受控的环境),相互之间不会有任何接口(类似iPhone的app)而且更轻量级

简单来说,就是一键快速启动各种服务,快速运行项目,快速打包项目,让客户不需要安装各种环境,快速发布打包好的镜像,供客户下载使用。

docker hub就相当于手机里的应用商城,发布已经打包好了的软件,称为镜像

二. 准备工作

准备一台的服务器(默认大家有一台服务器),可以是阿里云,腾讯云等服务商,也可以用虚拟机替代

安装Docker(推荐宝塔安装)

准备条件

#安装前先卸载操作系统默认安装的docker,
sudo apt-get remove docker docker-engine docker.io containerd runc

#安装必要支持
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

准备安装

#添加 Docker 官方 GPG key (可能国内现在访问会存在问题)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 阿里源(推荐使用阿里的gpg KEY)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg



#添加 apt 源:
#Docker官方源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


#阿里apt源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


#更新源
sudo apt update
sudo apt-get update

安装Docker

#安装最新版本的Docker
sudo apt install docker-ce docker-ce-cli containerd.io
#等待安装完成

#查看Docker版本
sudo docker version

#查看Docker运行状态
sudo systemctl status docker

安装Docker 命令补全工具

sudo apt-get install bash-completion

sudo curl -L https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker -o /etc/bash_completion.d/docker.sh

source /etc/bash_completion.d/docker.sh

允许非Root用户执行docker 命令

当我们安装好了Docker之后,有两种方式来执行docker 命令

  • 在docker命令前加上sudo, 比如:sudo docker ps
  • sudo -i 切换至root用户,再执行docker 命令

是不是可以让当前用户在不切root,或者不加sudo 的情况下正常使用 docker 命令呢?答案是有的。

添加docker用户组
sudo groupadd docker
将当前用户添加到用户组
sudo usermod -aG docker $USER
使权限生效
newgrp docker 
测试一下
#查看所有容器
docker ps -a
更新.bashrc文件
#如果没有此行命令,你会发现,当你每次打开新的终端
#你都必须先执行一次 “newgrp docker” 命令
#否则当前用户还是不可以执行docker命令
groupadd -f docker

关于最近国内无法访问到Docker的,首先在安装的时候,我们可以选国内阿里的源。参考上面的更新。

另外,我们需要在docker daemon 配置文件中增加国的可用的 docker hub mirror ,

找到你的daemon.json 文件,通常在 /etc/docker/daemon.json 这个位置

在daemon.json 中增加

"registry-mirrors": [
    "https://docker.m.daocloud.io"
  ]

如果你嫌弃手动安装麻烦的话,推荐通过宝塔面板安装docker

三. 详细介绍

docker-cli就是操控docker Daemon的命令行,通过命令来构建或启动docker镜像

Build(构建):通过docker build 命令将软件构建自己的软件包

Share(分享):通过docker pull 命令拉取别人分享的镜像,docker push 将自己的应用推送到应用市场

Run(运行):通过docker run 命令运行应用

名词解释:

镜像:就是软件包

容器:用软件包启动起来的应用,每一个运行中的应用称为一个容器

容器详细介绍

在传统部署中,应用部署在同一个操作系统上,一旦一个应用内存泄漏就会挤压其他软件的运行空间,对其他软件造成影响,在虚拟化部署中,通过虚拟化技术,通过一个个虚拟机来对应用进行隔离,但每个虚拟机都携带了操作系统,系统太过于笨重;而容器化部署就是将应用部署到容器上拥有轻量,快速,隔离,跨平台等优点,容器化技术是大势所趋

容器类似轻量级的VM
容器共享操作系统内核
容器拥有自己的文件系统、CPU、内存、进程空间等
容器互相隔离

四. Docker常见命令

以一个实验为例

大致步骤

下载镜像

检索

下载

查看本地镜像 docker images

docker pull nginx 相当于docker pull nginx:latest,也就是默认下载最新版本,如果下载指定版本,就去WeTab 新标签页 (docker.com)网站自己搜索镜像

docker.hub网站在国内已经被封禁,我开梯子也无法访问,在另一篇文章讲了如何访问docker.hub网站

删除

启动容器

运行 docker run

方式一

方式二

方式三

服务器注意放行使用的外部端口,这样就可以访问nginx的欢迎页

查看 docker ps

docker ps是查看正在运行的容器,docker ps -a查看所有的容器,包括退出的

启动 docker start

停止 docker stop

重启 docker restart

状态 docker stats

查看容器占用的CPU情况,I/O流等

日志 docker logs

删除 docker rm

两种删除方式:

1. 强制删除  docker rm -f 617

2. 普通删除,需要先stop停止容器运行  docker rm 617

进入 docker exec

一个容器就是一个小型的Linux系统,一样的操作

exit退出容器,回到主机

保存镜像

打包成镜像,分享到社区

提交 docker commit

参数说明

保存 docker save

打包成tar压缩包,可以用U盘文件形式发给别人用了

加载 docker load

别人发来一个容器压缩包,我们如何使用

1. docker load -i mynginx.tar         mynginx.tar 是压缩包名字     加载这个容器

2. docker run -d --name app01 -p 80:80 mynginx:v1.0       运行容器

分享社区

由于链接超时,本次就不做代码演示

  1. 先再dockerhub网站进行注册登录
  2. 输入用户名,密码
  3. docker tag 改镜像名
  4. docker push推送镜像

可以自己搭建仓库进行推送

目录挂载 -v /app/nghtml:/usr/share/nginx/html

我们想要修改容器里面的内容,每次都要通过docker exec进入修改,十分麻烦,并且如果不小心把容器删除,修改过的内容也会不见。那么我们就使用目录挂载,也就是将容器里面的一个目录同外部服务器的一个目录相结合,修改一处,另一处也会发送变化

运行时进行目录挂载,将容器的/usr/share/nginx/html目录 挂载到外部的/app/nghtml目录

挂载后,外部目录初始是空的,会覆盖内部目录的值,是外挂内

docker run -d -p 80:80 -v /app/nghtml:/usr/share/nginx/html --name app01 nginx

卷映射 -v ngconfg:/etc/nginx

与目录挂载相反,初始化是会将容器里面东西复制一份到容器外,外目录是有值的,是内挂外

docker run -d -p 80:80 -v /app/nghtml:/usr/share/nginx/html -v ngconfg:/etc/nginx --name app02 nginx

映射的外目录位置统一在 /var/lib/docker/volumes下面

docker的基础入门就告一段落

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值