镜像的获取

  1. pull from registry (online) 从registry拉取
  • public(公有)
  • private(私有)
    公司单位不方便连接互联网,就需要搭建一个私有仓库,在公司内部使用。
  1. build from Dockerfile (online) 从Dockerfile构建
  2. load from file (offline) 文件导入 (离线)

镜像的registry

  • Docker官方镜像 DockerHub:https://hub.docker.com/
  • RedHat旗下的网站:https://quay.io/

分为官方和社区版,推荐使用官方版,比较安全。

镜像的基本操作

$ docker imageUsage:  docker image COMMANDManage imagesCommands:
build       Build an image from a Dockerfile
history     Show the history of an image
import      Import the contents from a tarball to create a filesystem image
inspect     Display detailed information on one or more images
load        Load an image from a tar archive or STDIN
ls          List images
prune       Remove unused images
pull        Pull an image or a repository from a registry
push        Push an image or a repository to a registry
rm          Remove one or more images
save        Save one or more images to a tar archive (streamed to STDOUT by default)
tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGERun 'docker image COMMAND --help' for more information on a command.

镜像的拉取Pull Image

默认从Docker Hub拉取,如果不指定版本,会拉取最新版

$ docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
69692152171a: Pull complete
49f7d34d62c1: Pull complete
5f97dc5d71ab: Pull complete
cfcd0711b93a: Pull complete
be6172d7651b: Pull complete
de9813870342: Pull complete
Digest: sha256:df13abe416e37eb3db4722840dd479b00ba193ac6606e7902331dcea50f4f1f2
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

可以根据自己的需求选择一个版本,Tags

指定版本

1.20.0: Pulling from library/nginx
69692152171a: Already exists
965615a5cec8: Pull complete
b141b026b9ce: Pull complete
8d70dc384fb3: Pull complete
525e372d6dee: Pull complete
Digest: sha256:ea4560b87ff03479670d15df426f7d02e30cb6340dcd3004cdfc048d6a1d54b4
Status: Downloaded newer image for nginx:1.20.0
docker.io/library/nginx:1.20.0

从Quay上拉取镜像
从网站找到pull命令

docker pull quay.io/bitnami/nginx

quay.io/bitnami/nginx
quay.io 网站
bitnami 所有者
nginx 镜像名字
后面可以用:可以选择版本


$ docker pull quay.io/bitnami/nginx
Using default tag: latest
latest: Pulling from bitnami/nginx
2e6370f1e2d3: Pull complete
2d464c695e97: Pull complete
83eb3b1671f4: Pull complete
364c139450f9: Pull complete
dc453d5ae92e: Pull complete
09bd59934b83: Pull complete
8d2bd62eedfb: Pull complete
8ac060ae1ede: Pull complete
c7c9bc2f4f9d: Pull complete
6dd7098b85fa: Pull complete
894a70299d18: Pull complete
Digest: sha256:d143befa04e503472603190da62db157383797d281fb04e6a72c85b48e0b3239
Status: Downloaded newer image for quay.io/bitnami/nginx:latest
quay.io/bitnami/nginx:latest

镜像的查看

$ docker image ls
REPOSITORY              TAG       IMAGE ID       CREATED       SIZE
quay.io/bitnami/nginx   latest    0922eabe1625   6 hours ago   89.3MB
nginx                   1.20.0    7ab27dbbfbdf   10 days ago   133MB
nginx                   latest    f0b8a9a54136   10 days ago   133MB

查看镜像详细信息

PS C:\Users\柏杉> docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    605c77e624dd   13 days ago    141MB
ubuntu       latest    ba6acccedd29   2 months ago   72.8MB
PS C:\Users\柏杉> docker image inspect 605c77e624dd
[{"Id": "sha256:605c77e624ddb75e6110f997c58876baa13f8754486b461117934b24a9dc3a85","RepoTags": ["nginx:latest"],"RepoDigests": ["nginx@sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31"],"Parent": "","Comment": "","Created": "2021-12-29T19:28:29.892199479Z","Container": "ca3e48389f7160bc9d9a892d316fcbba459344ee3679998739b1c3cd8e56f7da","ContainerConfig": {"Hostname": "ca3e48389f71","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"80/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NGINX_VERSION=1.21.5","NJS_VERSION=0.7.1","PKG_RELEASE=1~bullseye"],"Cmd": ["/bin/sh","-c","#(nop) ","CMD [\"nginx\" \"-g\" \"daemon off;\"]"],"Image": "sha256:82941edee2f4d17c55563bb926387c3ae39fa1a99777f088bc9d3db885192209","Volumes": null,"WorkingDir": "","Entrypoint": ["/docker-entrypoint.sh"],"OnBuild": null,"Labels": {"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"},"StopSignal": "SIGQUIT"},"DockerVersion": "20.10.7","Author": "","Config": {"Hostname": "","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"80/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NGINX_VERSION=1.21.5","NJS_VERSION=0.7.1","PKG_RELEASE=1~bullseye"],"Cmd": ["nginx","-g","daemon off;"],"Image": "sha256:82941edee2f4d17c55563bb926387c3ae39fa1a99777f088bc9d3db885192209","Volumes": null,"WorkingDir": "","Entrypoint": ["/docker-entrypoint.sh"],"OnBuild": null,"Labels": {"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"},"StopSignal": "SIGQUIT"},"Architecture": "amd64","Os": "linux","Size": 141479488,"VirtualSize": 141479488,"GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/87bf6ed3f7c8ac05b80a09427dfd030aa3ab9dc33e1b56c94576ff73beda7fe2/diff:/var/lib/docker/overlay2/bcdbe34190974d7714102409c6e74f10f0fbeb31139de472fadb9066c6b1a35b/diff:/var/lib/docker/overlay2/14db789beeae9c9a8b2234dd5419370df82378d3b3bcbe1bb19004002b9eef0b/diff:/var/lib/docker/overlay2/787560549d568ee0d513bcfdf2d6ed42371c77b85a5f8e4bf2b44bb2fea0b3b1/diff:/var/lib/docker/overlay2/4e269f70d6a43d0e90ec61ded49f8dca5088bc7330e69de1ee6f4375c0a00820/diff","MergedDir": "/var/lib/docker/overlay2/3e025db606c5f7a9ad5b26d4b95effe8c967700139bbeed90433f08143294f3c/merged","UpperDir": "/var/lib/docker/overlay2/3e025db606c5f7a9ad5b26d4b95effe8c967700139bbeed90433f08143294f3c/diff","WorkDir": "/var/lib/docker/overlay2/3e025db606c5f7a9ad5b26d4b95effe8c967700139bbeed90433f08143294f3c/work"},"Name": "overlay2"},"RootFS": {"Type": "layers","Layers": ["sha256:2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f","sha256:e379e8aedd4d72bb4c529a4ca07a4e4d230b5a1d3f7a61bc80179e8f02421ad8","sha256:b8d6e692a25e11b0d32c5c3dd544b71b1085ddc1fddad08e68cbd7fda7f70221","sha256:f1db227348d0a5e0b99b15a096d930d1a69db7474a1847acbc31f05e4ef8df8c","sha256:32ce5f6a5106cc637d09a98289782edf47c32cb082dc475dd47cbf19a4f866da","sha256:d874fd2bc83bb3322b566df739681fbd2248c58d3369cb25908d68e7ed6040a6"]},"Metadata": {"LastTagTime": "0001-01-01T00:00:00Z"}}
]

镜像的删除

$ docker image rm 0922eabe1625
Untagged: quay.io/bitnami/nginx:latest
Untagged: quay.io/bitnami/nginx@sha256:d143befa04e503472603190da62db157383797d281fb04e6a72c85b48e0b3239
Deleted: sha256:0922eabe16250e2f4711146e31b7aac0e547f52daa6cf01c9d00cf64d49c68c8
Deleted: sha256:5eee4ed0f6b242e2c6e4f4066c7aca26bf9b3b021b511b56a0dadd52610606bd
Deleted: sha256:472a75325eda417558f9100ff8b4a97f4a5e8586a14eb9c8fc12f944b26a21f8
Deleted: sha256:cdcb5872f8a64a0b5839711fcd2a87ba05795e5bf6a70ba9510b8066cdd25e76
Deleted: sha256:e0f1b7345a521469bbeb7ec53ef98227bd38c87efa19855c5ba0db0ac25c8e83
Deleted: sha256:11b9c2261cfc687fba8d300b83434854cc01e91a2f8b1c21dadd937e59290c99
Deleted: sha256:4819311ec2867ad82d017253500be1148fc335ad13b6c1eb6875154da582fcf2
Deleted: sha256:784480add553b8e8d5ee1bbd229ed8be92099e5fb61009ed7398b93d5705a560
Deleted: sha256:e0c520d1a43832d5d2b1028e3f57047f9d9f71078c0187f4bb05e6a6a572993d
Deleted: sha256:94d5b1d6c9e31de42ce58b8ce51eb6fb5292ec889a6d95763ad2905330b92762
Deleted: sha256:95deba55c490bbb8de44551d3e6a89704758c93ba8503a593cb7c07dfbae0058
Deleted: sha256:1ad1d903ef1def850cd44e2010b46542196e5f91e53317dbdb2c1eedfc2d770c

注意:如果正在使用的容器,是无法删除的。stop的容器也是不行的,必须把容器删除,才可以删除镜像。

镜像的导出和导入 (offline)

解决无法上网的情况下

导出就可以使用光盘或U盘,导入进内网。

image导出

PS E:\images> docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    605c77e624dd   13 days ago    141MB
ubuntu       latest    ba6acccedd29   2 months ago   72.8MB
PS E:\images> docker image save nginx -o nginx.image
PS E:\images> ls目录: E:\imagesMode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         2022/1/12      9:30      145905152 nginx.imagePS E:\images>

image导入

PS E:\images> docker image load -i .\nginx.image
2edcec3590a4: Loading layer [==================================================>]  83.86MB/83.86MB
e379e8aedd4d: Loading layer [==================================================>]     62MB/62MB
b8d6e692a25e: Loading layer [==================================================>]  3.072kB/3.072kB
f1db227348d0: Loading layer [==================================================>]  4.096kB/4.096kB
32ce5f6a5106: Loading layer [==================================================>]  3.584kB/3.584kB
d874fd2bc83b: Loading layer [==================================================>]  7.168kB/7.168kB
Loaded image: nginx:latest

Dockerfile 介绍(常用)

Docker can build images automatically by reading the instructions from a Dockerfile. A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image. Using docker build users can create an automated build that executes several command-line instructions in succession.

翻译:Docker可以通过读取Docker文件中的说明自动生成镜像。Dockerfile是一个文本文档,其中包含用户可以在命令行上调用以组装镜像的所有命令。使用docker build,用户可以创建一个自动构建,该构建连续执行多个命令行指令。

出自:https://docs.docker.com/engine/reference/builder/

提炼三点:

  • Dockerfile是用于构建docker镜像的文件
  • Dockerfile里包含了构建镜像所需的“指令”
  • Dockerfile有其特定的语法规则

实例:执行一个Python程序

容器及进程,所以镜像就是一个运行这个进程所需要的环境。
假如我们要在一台ubuntu 21.04上运行下面这个hello.py的Python程序

hello.py的文件内容:

print("hello docker")
apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y python3.9 python3-pip python3.9-dev
$ python3 hello.py
hello docker

一个Dockerfile的基本结构

第一步:选择ubuntu:21.04的docker image的基础镜像
第二步:安装 python3
第三步:添加 hello.py
第四步:执行 python3 hello.py

FROM ubuntu:21.04
RUN apt-get update && \DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y python3.9 python3-pip python3.9-dev
ADD hello.py /
CMD ["python3", "/hello.py"]

Dockerfile reference

官方文档说明:https://docs.docker.com/engine/reference/builder/

镜像的构建和分享

构建

先拉取Ubuntu 21.04的镜像
再安装python3.9

PS E:\images> docker image build -t hello .
[+] Building 241.8s (8/8) FINISHED=> [internal] load build definition from Dockerfile                                                                                   0.0s=> => transferring dockerfile: 32B                                                                                                    0.0s=> [internal] load .dockerignore                                                                                                      0.0s=> => transferring context: 2B                                                                                                        0.0s=> [internal] load metadata for docker.io/library/ubuntu:21.04                                                                        0.0s=> CACHED [1/3] FROM docker.io/library/ubuntu:21.04                                                                                   0.0s=> [internal] load build context                                                                                                      0.0s=> => transferring context: 29B                                                                                                       0.0s=> [2/3] RUN apt-get update &&     DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y python3.9 python3-pip  240.7s=> [3/3] ADD hello.py /                                                                                                               0.0s=> exporting to image                                                                                                                 1.0s=> => exporting layers                                                                                                                1.0s=> => writing image sha256:b90ae4b78016f7571cc4704463075a370fe1ec7db9414e890d36d96e95d3aa50                                           0.0s=> => naming to docker.io/library/hello                                                                                               0.0s
PS E:\images> docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
hello        latest    b90ae4b78016   36 minutes ago   208MB
nginx        latest    605c77e624dd   13 days ago      141MB
ubuntu       21.04     d662230a2592   5 weeks ago      80MB
ubuntu       latest    ba6acccedd29   2 months ago     72.8MB

执行构建的镜像
因为就一个hello docker 执行后就会退出,整个容器也会停止。

PS E:\images> docker run -it hello
hello docker

分享到docker hub 上

首先在https://hub.docker.com/注册账号

登录账号,输入密码

PS E:\images> docker login
Authenticating with existing credentials...
Login did not succeed, error: Error response from daemon: Get "https://registry-1.docker.io/v2/": EOF
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username (yebax): yebax
Password:
Login SucceededLogging in with your password grants your terminal complete access to your account.
For better security, log in with a limited-privilege personal access token. Learn more at https://docs.docker.com/go/access-tokens/

想要上传到自己的仓库里,就在写上自己的ID

PS E:\images> docker image push yebax/hello:1.0
The push refers to repository [docker.io/yebax/hello]
361f7c486c65: Pushed
bf5893e64b98: Pushed
6e0e85808716: Mounted from library/ubuntu
1.0: digest: sha256:b71cd293e332e3f08def04ffb331faea9208e1c4cb2de13011b3dff572a32cfc size: 948

上传成功,登录账号查看

拉取自己仓库的镜像

PS E:\images> docker pull yebax/hello:1.0
1.0: Pulling from yebax/hello
9e6a0d5477cf: Already exists
dc089afc0082: Already exists
d6e9d8d49359: Already exists
Digest: sha256:b71cd293e332e3f08def04ffb331faea9208e1c4cb2de13011b3dff572a32cfc
Status: Downloaded newer image for yebax/hello:1.0
docker.io/yebax/hello:1.0

通过 commit 创建镜像

  1. 先创建一个Nginx容器
  2. 进入创建的容器中
  3. 修改Nginx的默认首页, hello docker
PS E:\images> docker container run -d -p 80:80 nginx
c12f7f499f6df9fd5cb98b109bf3a2610b0a32d2d4b2d2ed68c0528f477e8826
PS E:\images> docker container ls
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS                NAMES
c12f7f499f6d   nginx     "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp   strange_nobel
PS E:\images> docker container exec -it c12f7f499f6d sh
# cd /usr/share/nginx
# cd html
# ls
50x.html  index.html
# more index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>

修改网页,之后刷新网站查看效果。

# echo "<h1>hello docker</h1>" > index.html
# more index.html
<h1>hello docker</h1>

把容器stop之后,再start打开,还是显示修改后的效果,说明容器已经保存修改内容。
但是从镜像重新run创建容器,说明镜像不会受到影响,也不能保存。

PS C:\Users\柏杉> docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED       STATUS       PORTS                NAMES
c12f7f499f6d   nginx     "/docker-entrypoint.…"   6 hours ago   Up 6 hours   0.0.0.0:80->80/tcp   strange_nobel
PS C:\Users\柏杉> docker container commit c12f yebax/nginx:new
sha256:25db4962da33f576adb40e516a0807ab1cbd7ce6c2169e87265bc10c441b6d86
PS C:\Users\柏杉> docker image ls
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
yebax/nginx   new       25db4962da33   9 seconds ago   141MB
yebax/hello   1.0       b90ae4b78016   7 hours ago     208MB
nginx         latest    605c77e624dd   13 days ago     141MB
ubuntu        21.04     d662230a2592   5 weeks ago     80MB
ubuntu        latest    ba6acccedd29   2 months ago    72.8MB
PS C:\Users\柏杉>

新的镜像制作完成

关于 scratch 镜像

Scratch是一个空的Docker镜像。

通过scratch来构建一个基础镜像。

制作一个简单镜像

hello.c

#include <stdio.h>
int main()
{printf("hello docker\n");
}

编译成一个二进制文件

$ gcc --static -o hello hello.c
$ ./hello
hello docker
$

Dockerfile

FROM scratch
ADD hello /
CMD ["/hello"]

构建

$ docker build -t hello .
$ docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
hello        latest    2936e77a9daa   40 minutes ago   872kB

运行

$ docker container run -it hello
hello docker

查看镜像的分层 docker image history

PS C:\Users\柏杉> docker image history nginx
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
605c77e624dd   13 days ago   /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon…   0B
<missing>      13 days ago   /bin/sh -c #(nop)  STOPSIGNAL SIGQUIT           0B
<missing>      13 days ago   /bin/sh -c #(nop)  EXPOSE 80                    0B
<missing>      13 days ago   /bin/sh -c #(nop)  ENTRYPOINT ["/docker-entr…   0B
<missing>      13 days ago   /bin/sh -c #(nop) COPY file:09a214a3e07c919a…   4.61kB
<missing>      13 days ago   /bin/sh -c #(nop) COPY file:0fd5fca330dcd6a7…   1.04kB
<missing>      13 days ago   /bin/sh -c #(nop) COPY file:0b866ff3fc1ef5b0…   1.96kB
<missing>      13 days ago   /bin/sh -c #(nop) COPY file:65504f71f5855ca0…   1.2kB
<missing>      13 days ago   /bin/sh -c set -x     && addgroup --system -…   61.1MB
<missing>      13 days ago   /bin/sh -c #(nop)  ENV PKG_RELEASE=1~bullseye   0B
<missing>      13 days ago   /bin/sh -c #(nop)  ENV NJS_VERSION=0.7.1        0B
<missing>      13 days ago   /bin/sh -c #(nop)  ENV NGINX_VERSION=1.21.5     0B
<missing>      3 weeks ago   /bin/sh -c #(nop)  LABEL maintainer=NGINX Do…   0B
<missing>      3 weeks ago   /bin/sh -c #(nop)  CMD ["bash"]                 0B
<missing>      3 weeks ago   /bin/sh -c #(nop) ADD file:09675d11695f65c55…   80.4MB

【Docker系列】镜像的创建管理和发布相关推荐

  1. docker拉镜像、创建容器、停止容器、移除容器、构建镜像

    导语:最近发现好多面试者不会docker,虽然不是开发必备,但是偶尔会弄个demo,或者解析个什么自己搭建项目也很方便,以我微薄的docker经验在这里留下记录并供自己以后巩固 以下内容可学会dock ...

  2. Docker架构镜像及容器管理

    Docker概述 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...

  3. Docker系列七: 使用Humpback管理工具管理容器(一款UI管理工具)

    Humpback 可以帮助企业快速搭建轻量级的 Docker 容器云管理平台,若将你的 Docker 主机接入到 Humpback 平台中,就能够为你带来更快捷稳定的容器操作体验. 功能特点 Web操 ...

  4. Docker系列-镜像原理

    1,镜像是什么? 镜像是一种轻量级的可执行的软件包,用来打包软件运行的环境和基于运行环境开发的软件,它包含软件运行所需的所有内容,包括代码.依赖库.环境变量.配置文件. 2, 联合文件系统UnionF ...

  5. docker 仓库镜像 替换_自己动手创建 Docker 镜像并分享到镜像仓库,容器引擎的用途越来越广泛!...

    ↑ 点击上面 "时代Java"关注我们,关注新技术,学习新知识! 前面在公众号里讲过Docker安装和基本用法和概念,新来的小伙伴可以先去学习一下: docker yum快速安装和 ...

  6. docker安装+镜像加速与优化

    目录 一.容器核心 二.Docker核心概念 1.镜像 2.容器 3.仓库 三.安装Docker 1.关闭防火墙 2.安装依赖包 3.设置阿里云镜像源 4.安装Docker-CE社区版并设置为开机自动 ...

  7. docker国内镜像

    Docker中国区官方镜像: https://registry.docker-cn.com 网易: http://hub-mirror.c.163.com ustc: https://docker.m ...

  8. docker国内镜像源配置

    配置docker 为加快拉取镜像速度,建议设置docker国内镜像源 # 创建或修改 /etc/docker/daemon.json 文件,修改为如下形式 {"registry-mirror ...

  9. docker国内镜像加速

    Docker:docker国内镜像加速 创建或修改 /etc/docker/daemon.json 文件,修改为如下形式 {"registry-mirrors": [# 目前已不可 ...

最新文章

  1. 从入门到放弃心得 | 我为什么弃用GAN?
  2. vivox60pro和iqoo7pro哪个好
  3. C++类的构造函数 后单冒号加基类 例如:CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
  4. eclipse中将一个项目作为library导入另一个项目中
  5. iOS应用开发视频教程笔记(二)My First iOS App
  6. linux多线程编程和linux 2.6下的nptl,Linux多線程編程和Linux 2.6下的NPTL
  7. linux 内核模块 proc,Linux 内核模块 proc文件系统.pdf
  8. fedora yum无法正常运行问题的解决
  9. Windows界面编程_Miniblink(2) 嵌入到Win32窗口里
  10. dz论坛php如何使用html模板,discuz自定义模板制作方法
  11. 新西兰 计算机 转专业,新西兰留学后如何转学转专业?
  12. 移动云计算中选择推广应用程序的战术
  13. 130个实用网站集合
  14. java的excel模板下载(解决中文名乱码问题)
  15. PowerShell: 作为一个PowerShell菜鸟,如何快速入门?掌握这些就够了
  16. PR2019 (三)一般般
  17. int类型转换为string类型
  18. 电影中装逼的滚动屏幕
  19. 黄万里诗九首[引用]
  20. Adobe CS6 系列索引

热门文章

  1. 学习游戏原画必看的13个知识点「收藏起来慢慢看!」
  2. 2022聚合工艺考试模拟100题及在线模拟考试
  3. jisilox。Linux下面转换isilo的图形化工具
  4. UDS-如何在CAPL中实现读取DTC和它的状态
  5. 二维数组:K13185 点兵点将1
  6. 立体视觉 之 刚体变换
  7. 有了特斯拉光伏屋顶 未来不需要电网?
  8. 360奇酷手机 显示 Log
  9. 上瘾:让用户养成使用习惯的四大产品逻辑
  10. RF无线射频相关学习