ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Docker入门实践笔记-基本使用

2022-07-18 22:06:15  阅读:153  来源: 互联网

标签:ago 容器 入门 busybox 笔记 镜像 docker Docker 运行


容器是一个系统中被隔离的特殊环境,进程可以在其中不受干扰地运行,使用Docker来实现容器化

容器化

运行容器时,要先拉取一个镜像(image),再通过这个镜像来启动容器:

$ sudo docker pull busybox
$ docker run busybox echo hello world

使用docker pull 拉取一个镜像,再通过这个镜像启动容器。镜像将运行程序所需要的文件系统、依赖库、环境变量、启动参数等所有信息打包整合到了一起,和常见的tar、rpm、deb等安装包一样,都打包了应用程序,但镜像中不仅有基本的可执行文件,还有应用运行时的整个系统环境。这让镜像具有较好的非常好的跨平台便携性和兼容性,能够让开发者在一个系统上开发。

docker pull busybox就是获取了一个打包了busybox应用的镜像,里面固化了busybox程序及其所需的完整运行环境

docker run busybox echo hello world提取了镜像中的各种信息,运用namespace、cgroup、chroot创建出隔离环境,然后运行busybox中的echo命令,输出hello world字符串

所谓的容器化的应用,就是指应用程序不再直接和操作系统打交道,而是封装成镜像,再交给容器环境去运行

img

常用操作

docker pull从远端仓库拉取镜像,docker images列出当前本地已有的镜像

镜像的完整名字格式: 名字:标签,名字表明身份,比如busybox、Alpine、Nginx...。标签(tag)则可以理解成是为了区分不同版本的应用而做的额外标记,任何字符串都可以。

例如:

docker pull alpine:3.15
docker pull ubuntu:jammy
docker pull nginx:1.21-alpine

使用docker images命令查看所有镜像的具体信息:

$ sudo docker images
REPOSITORY   TAG           IMAGE ID       CREATED        SIZE
busybox      latest        62aedd01bd85   5 weeks ago    1.24MB
ubuntu       jammy         27941809078c   5 weeks ago    77.8MB
nginx        1.21-alpine   b1c3acb28882   2 months ago   23.4MB
alpine       3.15          0ac33e5f5afa   3 months ago   5.57MB

第一列REPOSITORY是镜像的名字,第二列TAG是这个镜像的标签。第三列IMAGE ID是唯一标志,是16进制且唯一的,在本地使用镜像的时候,写出前3位就能快速定位

使用docker rmi删除不再使用的镜像:

sudo docker rmi alpine:3.15
sudo docker rmi b1c

第二处删除仅仅使用ID的前3位即可删除

使用docker run可以运行应用:

sudo docker run -h srv alpine hostname

这里的 -h srv 就是容器的运行参数,alpine 是镜像名,它后面的 hostname 表示要在容器里运行的“hostname”这个程序,输出主机名

-it 表示开启一个交互式操作的 Shell,这样可以直接进入容器内部,就好像是登录虚拟机一样。(它实际上是“-i”和“-t”两个参数的组合形式)

-d 表示让容器在后台运行,这在启动 Nginx、Redis 等服务器程序的时候非常有用

--name 可以为容器起一个名字,方便查看,不过它不是必须的,如果不用这个参数,Docker 会分配一个随机的名字

sudo docker run -it --name ubuntu 279 sh

该命令启动了ubuntu镜像(用了前缀)运行了一个终端

# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 13:18 pts/0    00:00:00 sh
root          11       1  0 13:30 pts/0    00:00:00 ps -ef

运行ps -ef查看进程,只看到两个进程

输入exit退出终端,输入docker ps -a可以查看所有所有(包括已经退出的)

$ sudo docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS                        PORTS     NAMES
57f2e79c7a67   279       "sh"                 24 minutes ago   Exited (127) 23 minutes ago             ubuntu
d99d9ab2cba8   alpine    "hostname"           46 minutes ago   Exited (0) 46 minutes ago               mystifying_edison
d20922c97d54   busybox   "echo hello world"   45 hours ago     Exited (0) 45 hours ago                 elegant_boyd
24cc4f7a033f   busybox   "echo helloworld"    45 hours ago     Exited (0) 45 hours ago                 funny_fermat

使用docker stop可以强制停止某个容器,例如输入docker stop 279就停止了刚刚的ubuntu(如果在运行的话),使用docker start可以启动停止的容器,使用docker rm可以删除容器,在ps列表中就看不到了

总结

docker run: 从镜像中启动容器,运行容器化应用

常用参数 作用
-it 开启一个交互式操作的shell
-d 让容器在后台运行
--name 为容器命名
--rm 不保存容器,运行完自动清除

docker ps: 列出正在运行的容器,添加-a可以列出已经停止在内的容器的所有容器

docker exec: 在容器内执行另一个程序

docker stop: 强制停止容器

docker start: 再次启动已经停止的容器

docker rm: 彻底删除容器

标签:ago,容器,入门,busybox,笔记,镜像,docker,Docker,运行
来源: https://www.cnblogs.com/N3ptune/p/16492151.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有