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系统)
-
更新现有软件包
sudo apt-get update sudo apt-get upgrade
-
安装前置依赖
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
-
配置Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-
配置Docker软件源
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
-
安装docker
sudo apt-get update sudo apt-get install docker-ce
-
验证Docker安装是否成功
sudo docker version
如果安装成功,可以看到Docker版本信息的输出。
-
启动docker
sudo systemctl start docker
-
查看docker运行状态
sudo systemctl status docker
-
设置docker自动启动
sudo systemctl enable docker
-
卸载docker
```shell
# 删除安装包
sudo apt-get purge docker-ce docker-ce-cli containerd.io
# 删除镜像、容器、配置文件等数据
rm -rf /var/lib/docker
```
镜像打包与加载
如果需要将某一服务器上的镜像传输到另一服务器上时,可以将镜像打成tar包后传输。
-
docker提供 save 命令,可以将镜像打成tar包
docker save -o tar包名称.tar 待打包镜像名称:待打包镜像版本
示例
docker save -o cdy.tar cdy:v1.0
当前目录会生成cdy.tar文件。
-
加载镜像
docker load -i 镜像名称.tar
-
搜索镜像(可以自己制作镜像上传本地或官网仓库 dockerfile)
docker search <镜像名>
-
下载镜像
docker pull <镜像名>
-
查看镜像列表
docker images
-
查看镜像详细信息
docker inspect <镜像 ID>
-
给镜像打标签
docker tag <镜像名>:<原标签> <镜像名>:<新标签> # 例子 docker tag nginx:latest nginx:lnmp
-
删除镜像
docker rmi <镜像名> docker rmi <镜像标签> docker rmi <镜像 ID> docker rmi `docker images -aq` #删除所有镜像 docker images | awk 'NR>=2{print "docker rmi -f "$3}' | bash
容器命令管理
-
创建容器
格式:docker create [选项] 镜像 常用选项: -i:让容器开启标准输入 -t:让docker分配一个伪终端tty -it:合起来用实现和容器交互的作用,运行一个交互式会话shell --name:指定容器名称:不指定会随机生成 示例: docker create -it nginx:latest /bin/bash
-
启动并创建容器
格式: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'
-
进入容器
docker exec -it <容器id或名称> bash # 例子 docker exec -it ems bash
-
重启容器(如果在容器里面先退出)
# 先查看对应容器的容器Id docker ps -a # 重启容器 docker restart <容器Id>
-
停止容器文章来源:https://www.toymoban.com/news/detail-796196.html
docker stop <容器Id>
-
删除容器文章来源地址https://www.toymoban.com/news/detail-796196.html
docker rm <容器Id>
到了这里,关于Docker基本配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!