【docker】基础使用

概述

Docker的三要素:镜像、容器、仓库

镜像

镜像是一个轻量级、可执行的独立软件包,其中包含了运行某个应用程序所需的所有内容:包括代码、运行时、库、环境变量和配置文件等。可以将镜像看作一个食谱,里面会有制作一道菜的所有步骤,只需要按照食谱的步骤做就可以获得相同的食物。

镜像的主要特性就是不可以修改,是只读的

容器

根据食谱做出来的菜品就类似于容器。根据食谱运行出来的实例,其执行着镜像中定义的应用,其具有可变的数据

容器是镜像的一个运行实例。容器是在镜像的基础上创建出来的,镜像是容器的“模板”。容器是运行时的实体,它会运行镜像中的应用,并且可以进行读写操作。容器是轻量级的,且启动速度非常快

容器具有独立性,每个容器都是一个独立的环境,其拥有自己的文件系统网络等。与此同时还易于管理,可以停止、删除、复制、重启容器,就像是处理制作好的菜肴。

仓库

类似于书店,专门存放食谱的地方。你可以从中挑选自己喜欢的食谱来制作菜肴。不同的书店可能有不同的食谱

仓库是存储镜像的地方,可以看作是镜像的集合。镜像仓库通常用于存储和管理多个版本的镜像。Docker 提供了一个官方的镜像仓库 Docker Hub,但你也可以设置私有仓库来存储公司或个人的镜像

所以说获取别人的镜像就类似于日常生活中去超市购物

仓库可以公开以可以内部私有;另外仓库的镜像中有多个版本,一般通过多个标签来区分不同版本的镜。例如 ubuntu:18.04ubuntu:20.04 就是 Ubuntu 系统的不同版本。

简单使用

创建一个简单的C++文件

#include <iostream>

int main() {
    std::cout << "Hello, Docker World!" << std::endl;
    return 0;
}

创建一个Dockerfile文件

# 使用官方的 C++ 编译器镜像作为基础镜像
FROM gcc:latest

# 设置工作目录为 /app
WORKDIR /app

# 将本地的 C++ 源文件复制到容器中的 /app 目录
COPY main.cpp .

# 使用 g++ 编译程序
RUN g++ -o main main.cpp

# 设置容器启动时的默认命令
CMD ["./main"]

构建Docker镜像

docker build -t cpp-docker-example .

镜像配置,国内的一些镜像失效,将 下述配置修改到/etc/docker/daemon.json

{
  "registry-mirrors": [
    "https://dockerpull.org",
    "https://docker.1panel.dev",
    "https://docker.foreverlink.love",
    "https://docker.fxxk.dedyn.io",
    "https://docker.xn--6oq72ry9d5zx.cn",
    "https://docker.zhai.cm",
    "https://docker.5z5f.com",
    "https://a.ussh.net",
    "https://docker.cloudlayer.icu",
    "https://hub.littlediary.cn",
    "https://hub.crdz.gq",
    "https://docker.unsee.tech",
    "https://docker.kejilion.pro",
    "https://registry.dockermirror.com",
    "https://hub.rat.dev",
    "https://dhub.kubesre.xyz",
    "https://docker.nastool.de",
    "https://docker.udayun.com",
    "https://docker.rainbond.cc",
    "https://hub.geekery.cn",
    "https://docker.1panelproxy.com",
    "https://atomhub.openatom.cn",
    "https://docker.m.daocloud.io",
    "https://docker.1ms.run",
    "https://docker.linkedbus.com",
    "https://dytt.online",
    "https://func.ink",
    "https://lispy.org",
    "https://docker.xiaogenban1993.com"
  ]
}
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/hello# docker build -t cpp-docker-example .
[+] Building 895.3s (9/9) FINISHED                                                                                                                          docker:default
 => [internal] load build definition from Dockerfile                                                                                                                  0.0s
 => => transferring dockerfile: 128B                                                                                                                                  0.0s
 => [internal] load metadata for docker.io/library/gcc:latest                                                                                                       494.5s
 => [internal] load .dockerignore                                                                                                                                     0.0s
 => => transferring context: 2B                                                                                                                                       0.0s
 => [1/4] FROM docker.io/library/gcc:latest@sha256:98c5c3064808cb8b01933a7e2a33f1ef7e4aedf8600a08409a01d7ecf6e02701                                                 399.2s
 => => resolve docker.io/library/gcc:latest@sha256:98c5c3064808cb8b01933a7e2a33f1ef7e4aedf8600a08409a01d7ecf6e02701                                                   0.0s
 => => sha256:98c5c3064808cb8b01933a7e2a33f1ef7e4aedf8600a08409a01d7ecf6e02701 7.64kB / 7.64kB                                                                        0.0s
 => => sha256:87992d0f205222132ff22f4b46f476598d7ec7ef8c3da4142cfedfb65a427b9c 7.34kB / 7.34kB                                                                        0.0s
 => => sha256:8031108f3cda87bb32f090262d0109c8a0db99168050967becefad502e9a681b 24.06MB / 24.06MB                                                                    127.0s
 => => sha256:1b0aa48d9987e7a7b56c9f64aad8318c2b211d071d49ac042e79761475f5b7b7 2.49kB / 2.49kB                                                                        0.0s
 => => sha256:155ad54a8b2812a0ec559ff82c0c6f0f0dddb337a226b11879f09e15f67b69fc 48.48MB / 48.48MB                                                                    132.4s
 => => sha256:1d281e50d3e435595c266df06531a7e8c2ebb0c185622c8ab2eed8d760e6576b 64.39MB / 64.39MB                                                                    133.0s
 => => sha256:447713e77b4fc3658cfba0c1e816b70ff6d9bf06563dc8cfcb0459406aed33b4 211.34MB / 211.34MB                                                                  278.4s
 => => extracting sha256:155ad54a8b2812a0ec559ff82c0c6f0f0dddb337a226b11879f09e15f67b69fc                                                                             2.2s
 => => sha256:3d9057a850e9f73cae5e182aa315db53bdc15665084ebde7b61a3a127016cdef 2.81MB / 2.81MB                                                                      255.4s
 => => sha256:2fe1018c3be6e1bb417346205511033cdd727303b343469c4fce54374ce0253c 157.73MB / 157.73MB                                                                  278.6s
 => => extracting sha256:8031108f3cda87bb32f090262d0109c8a0db99168050967becefad502e9a681b                                                                             0.6s
 => => extracting sha256:1d281e50d3e435595c266df06531a7e8c2ebb0c185622c8ab2eed8d760e6576b                                                                             2.7s
 => => sha256:368f565cd5914c8f318e8cfdd5790b803ae0cfd02af0b3db2f99b65b1ab16c64 9.60kB / 9.60kB                                                                      377.7s
 => => sha256:2c61c289655f74c2c19fe7bb87fcd59f6d8db62038027ecbf3d125baf17b5225 1.79kB / 1.79kB                                                                      398.9s
 => => extracting sha256:447713e77b4fc3658cfba0c1e816b70ff6d9bf06563dc8cfcb0459406aed33b4                                                                             7.0s
 => => extracting sha256:3d9057a850e9f73cae5e182aa315db53bdc15665084ebde7b61a3a127016cdef                                                                             0.1s
 => => extracting sha256:2fe1018c3be6e1bb417346205511033cdd727303b343469c4fce54374ce0253c                                                                             4.9s
 => => extracting sha256:368f565cd5914c8f318e8cfdd5790b803ae0cfd02af0b3db2f99b65b1ab16c64                                                                             0.0s
 => => extracting sha256:2c61c289655f74c2c19fe7bb87fcd59f6d8db62038027ecbf3d125baf17b5225                                                                             0.0s
 => [internal] load build context                                                                                                                                     0.0s
 => => transferring context: 139B                                                                                                                                     0.0s
 => [2/4] WORKDIR /app                                                                                                                                                0.1s
 => [3/4] COPY main.cpp .                                                                                                                                             0.0s
 => [4/4] RUN g++ -o main main.cpp                                                                                                                                    1.3s
 => exporting to image                                                                                                                                                0.1s
 => => exporting layers                                                                                                                                               0.1s
 => => writing image sha256:7873d0526077fa40623d442ca4c3aac58ffa83b50d3abf2d4619df913a897e08                                                                          0.0s
 => => naming to docker.io/library/cpp-docker-example

运行容器

root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/hello# docker run cpp-docker-example
Hello, Docker World!

打包Docker镜像为文件

root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/hello# ll
total 20
drwxr-xr-x 2 root root 4096 Mar  1 13:32 ./
drwxr-xr-x 3 root root 4096 Mar  1 13:27 ../
-rw-r--r-- 1 root root   91 Mar  1 13:33 Dockerfile
-rw-r--r-- 1 root root  104 Mar  1 13:32 main.cpp
-rw-r--r-- 1 root root   12 Mar  1 13:29 requirements.txt
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/hello# docker save -o cpp-docker-example.tar cpp-docker-example
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/hello# ll
total 1410856
drwxr-xr-x 2 root root       4096 Mar  1 14:16 ./
drwxr-xr-x 3 root root       4096 Mar  1 13:27 ../
-rw------- 1 root root 1444688384 Mar  1 14:16 cpp-docker-example.tar
-rw-r--r-- 1 root root         91 Mar  1 13:33 Dockerfile
-rw-r--r-- 1 root root        104 Mar  1 13:32 main.cpp
-rw-r--r-- 1 root root         12 Mar  1 13:29 requirements.txt

加载Docker打包后的镜像然后运行

root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/test# ll
total 1410844
drwxr-xr-x 2 root root       4096 Mar  1 14:19 ./
drwxr-xr-x 4 root root       4096 Mar  1 14:19 ../
-rw------- 1 root root 1444688384 Mar  1 14:16 cpp-docker-example.tar
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/test# docker load -i cpp-docker-examle.tar
open cpp-docker-examle.tar: no such file or directory
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/test# ll
total 1410844
drwxr-xr-x 2 root root       4096 Mar  1 14:19 ./
drwxr-xr-x 4 root root       4096 Mar  1 14:19 ../
-rw------- 1 root root 1444688384 Mar  1 14:16 cpp-docker-example.tar
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/test# docker load -i cpp-docker-example.tar
Loaded image: cpp-docker-example:latest
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/test# docker run cpp-docker-example
Hello, Docker World!

清理镜像

root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/hello# docker ps -a
CONTAINER ID   IMAGE                COMMAND    CREATED          STATUS                      PORTS     NAMES
e70e0c643eee   cpp-docker-example   "./main"   9 minutes ago    Exited (0) 9 minutes ago              happy_fermat
6094242326bb   cpp-docker-example   "./main"   29 minutes ago   Exited (0) 29 minutes ago             vigilant_hermann
aaa771b136e9   cpp-docker-example   "./main"   29 minutes ago   Exited (0) 29 minutes ago             brave_carver
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/hello# docker rm e70e0c643eee
e70e0c643eee
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/hello# docker rm 6094242326bb
6094242326bb
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/hello# docker rm aaa771b136e9
aaa771b136e9
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/hello# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/hello# docker images
REPOSITORY           TAG       IMAGE ID       CREATED          SIZE
cpp-docker-example   latest    7873d0526077   35 minutes ago   1.42GB
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/hello# docker rmi cpp-docker-example 
Untagged: cpp-docker-example:latest
Deleted: sha256:7873d0526077fa40623d442ca4c3aac58ffa83b50d3abf2d4619df913a897e08
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/hello# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/hello# 

常用功能补充

镜像管理

查看本地镜像

root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/test# docker images
REPOSITORY           TAG       IMAGE ID       CREATED          SIZE
cpp-docker-example   latest    7873d0526077   26 minutes ago   1.42GB

拉取镜像

一般情况下是从远程仓库中拉取

docker pull <image_name>

删除镜像

docker rmi <image_name_or_id>

构建镜像和运行镜像

docker build -t <image_name>:<tag> <path_to_dockerfile>

docker build -t my-app .

容器管理

查看运行的容器和所有容器

// 查看正在运行的容器
docker ps

// 查看所有容器
docker ps -a
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/test# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/test# docker ps -a
CONTAINER ID   IMAGE                COMMAND    CREATED          STATUS                      PORTS     NAMES
e70e0c643eee   cpp-docker-example   "./main"   5 minutes ago    Exited (0) 5 minutes ago              happy_fermat
6094242326bb   cpp-docker-example   "./main"   25 minutes ago   Exited (0) 25 minutes ago             vigilant_hermann
aaa771b136e9   cpp-docker-example   "./main"   25 minutes ago   Exited (0) 25 minutes ago             brave_carver
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/test# 

启动和终止一个容器

// 启动一个容器
docker start <container_id_or_name>


// 终止一个容器
docker stop <container_id_or_name>

// 重启容器
docker restart <container_id_or_name>

删除容器

// 普通删除一个容器
docker rm <container_id_or_name>

// 强制删除一个容器
docker rm -f <container_id_or_name>

查看容器日志

CONTAINER ID   IMAGE                COMMAND    CREATED          STATUS                      PORTS     NAMES
e70e0c643eee   cpp-docker-example   "./main"   5 minutes ago    Exited (0) 5 minutes ago              happy_fermat
6094242326bb   cpp-docker-example   "./main"   25 minutes ago   Exited (0) 25 minutes ago             vigilant_hermann
aaa771b136e9   cpp-docker-example   "./main"   25 minutes ago   Exited (0) 25 minutes ago             brave_carver
root@iZ2zeicncy7vsor02veulwZ:/home/stu/docker/test# docker logs e70e0c643eee
Hello, Docker World!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值