前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux下Docker的安装及使用

Linux下Docker的安装及使用

作者头像
玖柒的小窝
修改2021-09-08 17:26:56
8560
修改2021-09-08 17:26:56
举报
文章被收录于专栏:各类技术文章~各类技术文章~

1.背景

类似于电脑,要在朋友的电脑上跑你写的Java程序,就得检查他电脑有没有安装Java环境.

类似的,要想在别的电脑上跑你写的Python程序,又得检查那台电脑有没有装python.

如何让自己写的程序换到别的电脑上后,可以便捷的运行起来?

将程序和程序的环境打包迁移,是一种解决方案.

  • 为啥不用vm虚拟机?

虚拟机安装太麻烦,就好比一个完整的操作系统,启动起来很费时间。

2.安装

服务器版本:CentOS 8.2 64位

2.1 安装yum-utils

代码语言:javascript
复制
yum install -y yum-utils

2.2 配置国内源

代码语言:javascript
复制
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.3 解决problem with installed package podman-1.6.4-10.的报错

代码语言:javascript
复制
yum erase podman buildah

2.4 安装Docker

代码语言:javascript
复制
yum install -y docker-ce docker-ce-cli  containerd.io --nobest

2.5 查看Docker版本

代码语言:javascript
复制
# 简单信息
docker -v
# 查看docker的版本号,包括客户端、服务端、依赖的Go等
docker version
# 查看系统(docker)层面信息,包括管理的images, containers数等
docker info

3.Docker服务相关

3.1 启动

代码语言:javascript
复制
# 启动
systemctl start docker
# 开机自启
systemctl enable docker

3.2 停止

代码语言:javascript
复制
systemctl stop docker

3.3 重启

代码语言:javascript
复制
systemctl restart docker

3.4 查看docker状态

代码语言:javascript
复制
systemctl status docker

4.仓库、镜像和容器

类比win 镜像: 程序安装包 容器: 安装好的程序 (镜像的)仓库: 放安装包的仓库.

4.1 Docker容器三个主要概念

  • 镜像 Docker镜像里包含了已打包的应用程序及其所依赖的环境。它包含应用程序可用的文件系统和其他元数据,如镜像运行时的可执行文件路径。
  • 镜像仓库 Docker镜像仓库用于存放Docker镜像,以及促进不同人和不同电脑之间共享这些镜像。当编译镜像时,要么可以在编译它的电脑上运行,要么可以先上传镜像到一个镜像仓库,然后下载到另外一台电脑上并运行它。某些仓库是公开的,允许所有人从中拉取镜像,同时也有一些是私有的,仅部分人和机器可接入。
  • 容器 Docker容器通常是一个Linux容器,它基于Docker镜像被创建。一个运行中的容器是一个运行在Docker主机上的进程,但它和主机,以及所有运行在主机上的其他进程都是隔离的。这个进程也是资源受限的,意味着它只能访问和使用分配给它的资源(CPU、内存等)。

4.2 一个简单的流程

4.2.1 首先开发者在开发环境机器上开发应用并制作镜像。

Docker执行命令,构建镜像并存储在机器上。

4.2.2 开发者发送上传镜像命令。

Docker收到命令后,将本地镜像上传到镜像仓库。

4.2.3 开发者向生产环境机器发送运行镜像命令。

生产环境机器收到命令后,Docker会从镜像仓库拉取镜像到机器上,然后基于镜像运行容器。

preview
preview

5.镜像相关

类比win: 程序的安装包

5.1 查看镜像

代码语言:javascript
复制
docker images

5.2 搜索镜像

代码语言:javascript
复制
docker search 镜像名称

5.3 拉取镜像

代码语言:javascript
复制
docker pull 镜像名称:版本号

5.4 删除镜像

代码语言:javascript
复制
docker rmi 镜像名称:版本号

5.5 其他

5.5.1 镜像信息
代码语言:javascript
复制
vim /var/lib/docker/image/overlay2/repositories.json
image-20210420095953865
image-20210420095953865

repositories.json文件中保存了一些基本信息

image-20210420100033114
image-20210420100033114

6.容器相关

类比win: 已经安装好的程序

6.1 查看容器列表

代码语言:javascript
复制
# 查看正在运行的容器
docker ps
# 查看所有容器
docker ps -a

6.2 创建容器

容器创建后,在容器列表中即可看到该容器(相当于安装好程序) 以后用后文的启、停、删就可以操作该容器了.

代码语言:javascript
复制
# eg: \是换行的意思
docker run -d -p 1337:1337 \
        --network kong-net \
        --name konga \
        -e "NODE_ENV=production"  \
        -e "DB_ADAPTER=postgres" \
        -e "DB_URI=postgresql://kong:kong@172.0.0.1:5432/konga" \
        pantsel/konga

linux中-和--的区别?

-后面一般跟简写,大多数是一个字母,如:

代码语言:javascript
复制
 ls  -l

--后面一般跟长的完整名字,如:

代码语言:javascript
复制
 chkconfig  --add

run参数

  • -rm 在容器退出时自动清理容器内部的文件系统 在Docker容器退出时,默认容器内部的文件系统仍然被保留,以方便调试并保留用户数据. 但是,对于前台运行的容器,由于其只是在开发调试过程中短期运行,其用户数据并无保留的必要. 启动时设置-rm选项,这样在容器退出时就能够自动清理容器内部的文件系统.
  • -i 保持容器运行
  • -p 端口映射
  • -e 传递环境变量
  • -t 为容器重新分配一个伪输入终端
  • -d 以守护进程模式运行容器,退出后容器不会停止
  • -it 创建一个交互式容器,推出后容器容器停止运行
  • -id 创建一个守护容器;退出后容器不停止运行
  • –-name 为创建的容器命名

6.3 进入容器

代码语言:javascript
复制
docker exec -it 容器名称 /bin/bash
# eg:进入一个叫konga的容器
docker exec -it konga /bin/bash

# 在容器中执行了一个ping命令
ping 127.0.0.1
# 退出当前容器
exit

6.4 启动容器

代码语言:javascript
复制
docker start 容器名称 

6.5 停止容器

代码语言:javascript
复制
docker stop 容器名称

6.6 删除容器

代码语言:javascript
复制
docker rm 容器名称

#删除所有容器
docker rm `docker ps -aq`

6.7 查看容器详细信息

代码语言:javascript
复制
docker inspect 容器名称

6.8 其他

6.8.1 容器文件位置
代码语言:javascript
复制
cd /var/lib/docker/containers
image-20210420095851147
image-20210420095851147

查看所有容器,其中的id:eb67258c80d1与上方文件夹对应

代码语言:javascript
复制
docker ps -a

# 显示
CONTAINER ID   IMAGE     COMMAND                  CREATED      STATUS                  PORTS     NAMES
eb67258c80d1   mongo     "docker-entrypoint.s…"   7 days ago   Exited (0) 6 days ago             mongo

7.网络相关

容器可以比拟做一个独立的系统环境,能配置自己网络,所以说容器里的localhost不一定等于宿主机的localhost

网络模式

  • bridge:桥接docker(默认创建时,不指定网络驱动,将使用bridge模式)
  • none:不配置网络
  • host:和宿主机共享网络 例如:当你在容器上使用80端口访问其他应用,使用的是宿主机的80端口.
  • container:容器网络连通(用的少,局限很大)

Linux查看网络信息

代码语言:javascript
复制
# if没有打错.
# 这里面能看到docker相关的网络.
ifconfig

7.1 查看docker下的网络列表

代码语言:javascript
复制
docker network ls

7.2 查看单个网络详细信息

代码语言:javascript
复制
docker network inspect networkname

7.3 创建网络

代码语言:javascript
复制
# 不指定网络驱动时,默认创建的是bridge网络.
docker network create networkname

7.4 删除网络

代码语言:javascript
复制
docker network rm networkname

8.日志相关

代码语言:javascript
复制
docker logs [OPTIONS] CONTAINER

# Options参数
--details: 显示更多的信息
--follow(-f): 跟踪实时日志
--since string: 显示自某个timestamp之后的日志,或相对时间,如40m(即40分钟)
--tail string: 从日志末尾显示多少行日志, 默认是all
--timestamps(-t): 显示时间戳
--until string: 显示自某个timestamp之前的日志,或相对时间,如40m(即40分钟

示例

代码语言:javascript
复制
# 查看容器mysql 最近30分钟的日志:
docker logs --since 30m mysql

# 查看容器mysql 某时间之后的日志:
docker logs -t --since="2019-11-02T13:23:37" mysql

#查看容器mysql 某时间段日志:
docker logs -t --since="2019-11-02T13:23:37" --until "2019-11-03T12:23:37" mysql

9.配置国内加速

代码语言:javascript
复制
vim  /etc/docker/daemon.json

# 镜像信息
{
    "registry-mirrors": ["https://registry.docker-cn.com"],
    "live-restore": true
}

本文系转载,前往查看

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

本文系转载前往查看

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.背景
  • 2.安装
    • 2.1 安装yum-utils
      • 2.2 配置国内源
        • 2.3 解决problem with installed package podman-1.6.4-10.的报错
          • 2.4 安装Docker
            • 2.5 查看Docker版本
            • 3.Docker服务相关
              • 3.1 启动
                • 3.2 停止
                  • 3.3 重启
                    • 3.4 查看docker状态
                    • 4.仓库、镜像和容器
                      • 4.1 Docker容器三个主要概念
                        • 4.2 一个简单的流程
                          • 4.2.1 首先开发者在开发环境机器上开发应用并制作镜像。
                          • 4.2.2 开发者发送上传镜像命令。
                          • 4.2.3 开发者向生产环境机器发送运行镜像命令。
                      • 5.镜像相关
                        • 5.1 查看镜像
                          • 5.2 搜索镜像
                            • 5.3 拉取镜像
                              • 5.4 删除镜像
                                • 5.5 其他
                                  • 5.5.1 镜像信息
                              • 6.容器相关
                                • 6.1 查看容器列表
                                  • 6.2 创建容器
                                    • 6.3 进入容器
                                      • 6.4 启动容器
                                        • 6.5 停止容器
                                          • 6.6 删除容器
                                            • 6.7 查看容器详细信息
                                              • 6.8 其他
                                                • 6.8.1 容器文件位置
                                            • 7.网络相关
                                              • 7.1 查看docker下的网络列表
                                                • 7.2 查看单个网络详细信息
                                                  • 7.3 创建网络
                                                    • 7.4 删除网络
                                                    • 8.日志相关
                                                    • 9.配置国内加速
                                                    相关产品与服务
                                                    容器镜像服务
                                                    容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                                                    领券
                                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档