Docker基本配置

Docker基本配置

Docker三大基础概念

1.docker镜像(Image)

docker镜像类似于虚拟机镜像,可以将其理解为一个只读模板。除了提供容器运行时所需的程序、库、资源、配置等文件外,docker镜像还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。

镜像是创建docker容器的基础,它可以通过版本管理和增量的文件系统,如Docker Hub。

2.docker容器(container)

docker容器(container)类似于轻量级的沙箱,docker利用容器来运行和隔离应用。

容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,但是所有的容器是相互隔离的,互不可见的,这就提供了一个实体机可以安装多个容器,且很轻量级相对于虚拟机。镜像本身是只读的,容器从镜像启动的时候,docker会在镜像的最上层创建一个可写层,镜像本身保持不变。

3.docker仓库(repository)

docker仓库(repository)类似于代码库,是docker集中存放镜像的场所。实际上,注册服务器是存放仓库的地方,其上往往存放着很多仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。

根据存储的镜像公开分享与否,docker仓库可以分为公开仓库(Public)和私有仓库(Private)两种形式。目前,最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载,国内的公开镜像包括Docker Pool,可以提供稳定的国内访问,与GitHub类似。

安装Docker(Debian系统)

  1. 更新现有软件包

    sudo apt-get update
    sudo apt-get upgrade
    
  2. 安装前置依赖

    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
    
  3. 配置Docker官方GPG密钥

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    
  4. 配置Docker软件源

    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    
  5. 安装docker

    sudo apt-get update
    sudo apt-get install docker-ce
    
  6. 验证Docker安装是否成功

    sudo docker version
    

    如果安装成功,可以看到Docker版本信息的输出。

  7. 启动docker

    sudo systemctl start docker
    
  8. 查看docker运行状态

    sudo systemctl status docker
    
  9. 设置docker自动启动

    sudo systemctl enable docker
    
  10. 卸载docker

```shell
# 删除安装包
sudo apt-get purge docker-ce docker-ce-cli containerd.io
# 删除镜像、容器、配置文件等数据
rm -rf /var/lib/docker
```

镜像打包与加载

如果需要将某一服务器上的镜像传输到另一服务器上时,可以将镜像打成tar包后传输。

  1. docker提供 save 命令,可以将镜像打成tar包

    docker save -o tar包名称.tar 待打包镜像名称:待打包镜像版本
    

    示例

    docker save -o cdy.tar cdy:v1.0
    

    当前目录会生成cdy.tar文件。

  2. 加载镜像

    docker load -i 镜像名称.tar
    
  3. 搜索镜像(可以自己制作镜像上传本地或官网仓库 dockerfile)

    docker search <镜像名>
    
  4. 下载镜像

    docker pull <镜像名>
    
  5. 查看镜像列表

    docker images
    
  6. 查看镜像详细信息

    docker inspect <镜像 ID>
    
  7. 给镜像打标签

    docker tag <镜像名>:<原标签> <镜像名>:<新标签>
    # 例子
    docker tag nginx:latest nginx:lnmp
    
  8. 删除镜像

    docker rmi <镜像名>
    docker rmi <镜像标签>
    docker rmi <镜像 ID>
    docker rmi `docker images -aq`		#删除所有镜像
    docker images | awk 'NR>=2{print "docker rmi -f "$3}' | bash
    

容器命令管理

  1. 创建容器

    格式:docker create [选项] 镜像
    常用选项:
    -i:让容器开启标准输入
    -t:让docker分配一个伪终端tty
    -it:合起来用实现和容器交互的作用,运行一个交互式会话shell
    --name:指定容器名称:不指定会随机生成
    示例:
    docker create -it nginx:latest /bin/bash
    
  2. 启动并创建容器

    格式:docker run [命令] [--name 容器名称] 镜像 [bash]  [-c 操作]
    bash:指定运行环境
    -c:不入容器执行指定命令
    -d:后台运行并返回容器id
    前台运行
    docker run -it centos:7 bash -c ls /
    docker run -i --name test1 centos:7 bash -c ls /
    docker ps -a-d 选项让Docker容器以守护形式在后台运行且容器所运行的程序不能结束
    docker run -itd --name test2 centos:7  /bin/bash
     
    #示例1:
    docker run -itd nginx:latest /bin/bash
     
    #示例2:执行后退出
    docker run centos:7 /usr/bin/bash -c ls /   
     
    #示例3:执行后不退出,以守护进程方式执行持续性任务
    docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done" 
    

    一个复杂的样例

    docker run --init --privileged=true -dit --name ems --restart=always -p 80:80  -v /home/work/deploy:/home/work/deploy -e "LANG=en_US.UTF-8" -e "SKIFF_HOSTNAME=<主机序列号>" -e "SKIFF_ENV=prod" -e "SKIFF_IDC=station-<站点名>-<站点序号>" -e "SKIFF_NODE=<主机序列号>" -e "install_type=<部署类型>" --hostname <主机序列号> 镜像名称
    
    docker run --init --privileged=true -dit --name ems --restart=always -p 80:80  -v /home/work/deploy:/home/work/deploy -e "LANG=en_US.UTF-8" -e "SKIFF_HOSTNAME=nandu-test" -e "SKIFF_ENV=prod" -e "SKIFF_IDC=station-nandu_test-1" -e "SKIFF_NODE=nandu_test" -e "install_type=3" --hostname nandu_test-1 caoxiaodong/debain:20230516 /bin/bash -c 'sh /home/start.sh && tail -f /dev/null'
    
  3. 进入容器

    docker exec -it <容器id或名称> bash
    # 例子
    docker exec -it ems bash
    
  4. 重启容器(如果在容器里面先退出)

    # 先查看对应容器的容器Id
    docker ps -a
    # 重启容器
    docker restart <容器Id>
    
  5. 停止容器

    docker stop <容器Id>
    
  6. 删除容器

    docker rm <容器Id>
    
  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MC皮蛋侠客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值