栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker底层原理及基础命令

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker底层原理及基础命令

镜像命令

docker images 查看所有本地主机镜像

[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 5 months ago 13.3kB

解释

REPOSITORY 镜像的仓库源

TAG 镜像的标签

IMAGE ID 镜像的id

CREATED 镜像的创建时间

SIZE 镜像的大小

可选项

-a, --all 列出所有的镜像

-q, --quiet 只显示镜像的ID

docker search mysql 搜索命令

[root@localhost ~]# docker search mysql NAME DEscriptION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 12223 [OK] mariadb MariaDB Server is a high performing open sou… 4692 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Create… 907 [OK] percona Percona Server is a fork of the MySQL relati… 571 [OK]

可选项

--filter=STARS=3000 搜索出来的镜像的STARS是大于3000的

[root@localhost ~]# docker search mysql --filter=STARS=3000 NAME DEscriptION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 12223 [OK] mariadb MariaDB Server is a high performing open sou… 4692 [OK]

docker pull 下载镜像

[root@localhost docker]# docker pull mysql Using default tag: latest latest: Pulling from library/mysql 72a69066d2fe: Pull complete 93619dbc5b36: Pull complete 99da31dd6142: Pull complete 626033c43d70: Downloading 1.416MB/1.419MB 37d5d7efb64e: Download complete ac563158d721: Downloading 13.17MB/13.45MB d2ba16033dad: Download complete 688ba7d5c01a: Download complete 00e060b6d11d: Download complete 1c04857f594f: Download complete 4d7cfa90e6ea: Download complete e0431212d27d: Download complete docker的分层下载,每次重新下载时,和前面重复的层就不会下载了,只会下载新的没有的层,节省下载资源

错误分析

拉取速度很慢就会报超时的错误,可以使用阿里云的镜像

[root@localhost ~]# cd /etc/docker/ [root@localhost docker]# ls key.json [root@localhost docker]# vi daemon.json { "registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"] } [root@localhost docker]# systemctl restart docker

docker rmi -f 删除容器

[root@localhost docker]# docker rmi -f feb5d9fea6a5 后面跟ID,删除单个指定的镜像 [root@localhost docker]# docker rmi -f 镜像ID 镜像ID 镜像ID 删除多个镜像 [root@localhost docker]# docker rmi -f $(docker images -aq) 将镜像ID一个一个查询出来然后递归删除(全部删除)

容器命令

说明:有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习。

docker pull centos

新建容器并启动

docker run [可选参数] image

参数说明

--name=“Name” 容器名字 tomcat01 tomcat02,用来区分容器

-d 后台方式运行

-it 使用交互方式运行,进入容器查看内容

-P 指定容器的端口 -p 8080:8080

-p 主机端口:容器端口 映射 (常用)

-p 容器端口

容器端口

-p 随机指定端口

启动并进入容器 /bin/bash 代表控制台 主机名就是我们的镜像ID

[root@localhost docker]# docker run -it centos /bin/bash [root@b2929ee966d9 /]# ls bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr [root@b2929ee966d9 /]# exit 从容器中退出 exit [root@localhost docker]#

容器内部使用ls查看发现和我们以前的虚拟机环境一样,其实这就是小型的服务器。

docker ps 列出所有运行的容器

-a 正在运行的容器+历史运行过的所有容器

-n=? 列出最近创建的容器 ?=几就代表最近几个

-q 只显示容器的编号

[root@localhost docker]# docker ps ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@localhost docker]# docker ps -a ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b2929ee966d9 centos "/bin/bash" 5 minutes ago Exited (0) 52 seconds ago sad_bassi c67e73298a44 feb5d9fea6a5 "/hello" 3 hours ago Exited (0) 3 hours ago upbeat_banzai

退出容器

exit 直接容器停止并退出

ctrl +p +q 容器不停止退出

[root@localhost docker]# docker run -it centos /bin/bash [root@d4ae985d04c1 /]# [root@localhost docker]# 这里使用 ctrl +p +q [root@localhost docker]# docker ps ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d4ae985d04c1 centos "/bin/bash" 54 seconds ago Up 54 seconds hungry_hofstadter

删除容器

docker rm 容器ID 删除指定容器,不能删除正在运行的容器,如果要强制删除 rm -f

docker rm -f $(docker -ps -aq) 删除所有容器

docker ps -a -q | xargs docker rm 删除所有容器

[root@localhost docker]# docker rm -f $(docker ps -aq) 强制删除所有容器以及正在运行的 d4ae985d04c1 b2929ee966d9 c67e73298a44

启动和停止容器

docker start 容器id 启动容器

docker restart 容器id 重启容器

docker stop 容器id 停止容器

docker kill 容器id 杀死容器

kill 就是类似于内存中杀掉了,stop是停止,但是内存还在

[root@localhost docker]# docker start 8c5b0e92658c 8c5b0e92658c

 8c5b0e92658c [root@localhost docker]# docker ps ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8c5b0e92658c centos "/bin/bash" 2 minutes ago Up 30 seconds amazing_shamir [root@localhost docker]# docker stop 8c5b0e92658c 8c5b0e92658c [root@localhost docker]# docker ps ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

常用其他命令

后台启动容器 docker run -d 镜像名

[root@localhost docker]# docker run -d centos ec6c815be31e55fce53c42ba8691c1225e18488b58861b659862969a0b47a445 [root@localhost docker]# docker ps 但是在这里发现centos停止了 ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

常见的坑:docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用了,就会自动停止。

nginx,容器启动后,发现自己没有提供服务,就会立刻停止,没有程序了。

查看日志 docker logs

[root@localhost docker]# docker logs -f -t --tail 10 b215a33bb420 自己编写一段shell脚本 [root@localhost docker]# docker run -d centos /bin/sh -c "while true;do echo kuanshen; sleep 1;done" 49ef7168a1d1dd935b0185d426bd91713736ea25127f86a2355b377208c70f1b [root@localhost docker]# docker ps ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 49ef7168a1d1 centos "/bin/sh -c 'while t…" 3 seconds ago Up 2 seconds mystifying_kare #显示日志 -tf 显示日志 --tail number 显示日志条数 [root@localhost docker]# docker logs -tf --tail 10 49ef7168a1d1 2022-03-08T12:24:03.200502010Z kuanshen 2022-03-08T12:24:04.203744459Z kuanshen 2022-03-08T12:24:05.217949601Z kuanshen 2022-03-08T12:24:06.222422344Z kuanshen 2022-03-08T12:24:07.224973422Z kuanshen 2022-03-08T12:24:08.229132083Z kuanshen 2022-03-08T12:24:09.231348905Z kuanshen 2022-03-08T12:24:10.234766358Z kuanshen

查看容器中的进程信息 docker top 容器id

[root@localhost docker]# docker top 49ef7168a1d1 UID PID PPID C STIME TTY TIME CMD root 13535 13517 0 20:21 ? 00:00:00 /bin/sh -c while true;do echo kuanshen; sleep 1;done root 13933 13535 0 20:27 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1 有了进程号,可以用kill 杀死

查看镜像的元素局 查看详细信息

命令 docker inspect 容器id 测试 [root@localhost docker]# docker inspect ec6c815be31e

进入正在运行的容器

我们通常都是使用后台方式运行的,需要进入容器,修改一些配置

docker exec -it 容器id /bin/bash

[root@localhost ~]# docker ps ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 492e5973fc43 5d0da3dc9764 "/bin/bash" about a minute ago Up 59 seconds nice_agnesi [root@localhost ~]# docker exec -it 492e5973fc43 /bin/bash [root@492e5973fc43 /]# ls bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr [root@492e5973fc43 /]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 01:29 pts/0 00:00:00 /bin/bash root 15 0 0 01:31 pts/1 00:00:00 /bin/bash root 30 15 0 01:31 pts/1 00:00:00 ps -ef

docker attach 容器id

[root@localhost ~]# docker attach 492e5973fc43 正在执行当前的代码...

docker exec 进入容器后开启一个新的终端,可以在里面操作(常用)

docker attach 进入容器正在执行的终端,不会启动新的进程!

从容器内拷贝到主机上 docker cp 容器id:路劲 主机目录

进入docker容器内部 [root@localhost home]# docker ps ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c60835ed3862 5d0da3dc9764 "/bin/bash" about a minute ago Up about a minute brave_noyce [root@localhost home]# docker attach c60835ed3862 [root@c60835ed3862 /]# cd /home [root@c60835ed3862 home]# ls 在容器内新建文件 [root@c60835ed3862 home]# touch test.java [root@c60835ed3862 home]# exit exit 将文件拷贝出来到主机上 [root@localhost home]# docker cp c60835ed3862:/home/test.java /home [root@localhost home]# ls kuangshen.java test.java 拷贝是一个手动过程,未来我们使用 -v 卷的技术,可以实现。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/757408.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号