0


Docker镜像、容器、其他……等等命令

一、镜像命令

**语法**
**说明**
**docker images **
# 查看所有本地主机上的镜像 可以使用docker image ls代替
**docker search **
# 搜索镜像
**docker pull **
# 下载镜像 docker image pull
**docker rmi **
# 删除镜像 docker image rm
**docker system df**
# 查看镜像/容器/数据卷所占的空间

*1*docker images **查看镜像

1****、语法:

[root@Y ~]# docker images

REPOSITORY            TAG                 IMAGE ID            CREATED           SIZE

hello-world           latest              bf756fb1ae65        4 months ago     13.3kB

mysql                 5.7                 b84d68d0a7db        6 days ago       448MB

2****、解释:

**参数**
**说明**
**#REPOSITORY                **
# 镜像的仓库源
**#TAG                **
# 镜像的标签(版本)                **---lastest ****表示最新版本**
**#IMAGE ID                **
# 镜像的id
**#CREATED                **
# 镜像的创建时间
**#SIZE                        **
# 镜像的大小

3docker images --help****:

**参数**
**说明**
**-a, --all**
Show all images (default hides intermediate images) #列出所有镜像
**-q, --quiet**
Only show numeric IDs # 只显示镜像的id

4****、案例:

#列出所有镜像详细信息
[root@Y ~]# **docker images -a  **
#列出所有镜像的id
[root@Y ~]# **docker images -aq**
D5f28a0bb0d0
F19c56ce92a8
1b6b1fe7261e
1b6b1fe7261e

*2*docker search **搜索镜像

1****、语法:

[root@Y ~]# docker search mysql

2****、解释:

**参数**
**说明**
# --filter=STARS=3000 
#过滤,搜索出来的镜像收藏STARS数量大于3000的

3docker search --help****:

**参数**
**说明**
**-f, --filter filter**
Filter output based on conditions provided
**    --format string**
Pretty-print search using a Go template
**    --limit int**
Max number of search results (default 25)
**    --no-trunc**
Don't truncate output

4****、案例:

[root@Y ~]# docker search mysql --filter=STARS=3000

NAME        DESCRIPTION         STARS            OFFICIAL        AUTOMATED

mysql       MySQL IS ...        9520             [OK]               

mariadb     MariaDB IS ...      3456             [OK]  

*3*docker pull **下载镜像

1****、语法:

# 下载镜像    docker pull 镜像名[:tag版本]

[root@Y ~]# docker pull tomcat:8

2****、案例

[root@Y ~]# docker pull tomcat

8: pulling from library/tomcat # 如果不写tag,默认就是latest

90fe46dd8199: Already exists   # 分层下载: docker image 的核心 联合文件系统

35a4f1977689: Already exists

bbc37f14aded: Already exists

74e27dc593d4: Already exists

93a01fbfad7f: Already exists

1478df405869: Pull complete

64f0dd11682b: Pull complete

68ff4e050d11: Pull complete

f576086003cf: Pull complete

3b72593ce10e: Pull complete

Digest: sha256:0c6234e7ec9d10ab32c06423ab829b32e3183ba5bf2620ee66de866df # 签名防伪

Status: Downloaded newer image for tomcat:8

docker.io/library/tomcat:8        #真实地址

 

# 等价

docker pull tomcat:8   =   docker pull docker.io/library/tomcat:8

*4*docker rmi **删除镜像

**语法**
**案例**
# 删除指定id的镜像   **docker rmi -f ****镜像****id **
[root@Y ~]# **docker rmi -f f19c56ce92a8**
# 删除全部的镜像       **docker rmi -f $(docker images -aq)**
[root@Y ~]# **docker stop $(doc****ker ps -a -q)**

二、容器命令

**说明:我们有了镜像才可以创建容器,****Linux****,下载****centos****镜像来学习**
**语法**
**说明**
**docker pull centos**
# docker中下载centos
**docker run ****镜像****id**
# 新建容器并启动
**docker ps**
# 列出所有运行的容器和docker container list相同
**docker rm ****容器****id**
# 删除指定容器
**docker start ****容器****id**
# 启动容器
**docker restart ****容器****id**
# 重启容器
**docker stop ****容器****id**
# 停止当前正在运行的容器
**docker kill ****容器****id**
# 强制停止当前容器

1****、镜像下载

docker pull centos

2****、新建并启动容器

1****、语法

docker run [可选参数] image | docker container run [可选参数] image

2****、参数

**参数**
**说明**
**--name="Name"**
# 容器名字 tomcat01 tomcat02 用来区分容器
**-d**
# 后台方式运行
**-it                 **
# 使用交互方式运行,进入容器查看内容
**-p**
# 指定容器的端口 
-p 8080(宿主机):8080(容器)
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
**-P(****大写****)**
# 随机指定端口

3****、测试、启动并进入容器

[root@Y ~]# docker run -it centos /bin/bash   # run it centos启动新建一个centos容器,/bin/bash给一个默认控制台

[root@241b5abce65e /]# ls

bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

[root@241b5abce65e /]# exit  # 从容器退回主机

Exit
 

4、容器启动中进入(重要)

[root@iZwz9fwomx3lwtrau6ixxfZ /]# docker exec -it mysql bash # 进入mysql(容器名)容器

root@e537a9efecc8:/# ls

bin  boot  dev        docker-entrypoint-initdb.d  entrypoint.sh  etc        home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

root@e537a9efecc8:/# exit  # 从容器退回主机

Exit

3****、查看容器

**语法**
**说明**
**docker ps **
# 列出当前正在运行的容器
**  -a, --all**    
# 列出当前正在运行的容器 + 带出历史运行过的容器
**  -l**
# 列出最近启动的容器
**  -n=?, --last int   **
# 列出最近创建的?个容器 ?为1则只列出最近创建的一个容器,为2则列出2个
**  -q, --quiet**
# 只列出容器的编号
 

4****、退出容器

**语法**
**说明**
**exit                 **
# 容器直接退出
**ctrl +P +Q  **
# 容器不停止退出
**exit****直接退出**

**Ctrl+P+Q****不停止容器退出**

5****、删除容器

**语法**
**说明**
**docker rm ****容器****id**
# 删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -rf
**docker rm -f $(docker ps -aq) **
# 删除所有的容器
**docker ps -a -q|xargs docker rm**
# 删除所有的容器

6****、启动和停止容器的操作

**停止或者强行停止容器,都可以再次启动,通过****docker ps -a****找到历史的****id****在启动即可,但是删除容器就不能再次重启**
**语法**
**说明**
**docker start ****容器****id**
# 启动容器
**docker restart ****容器****id**
# 重启容器
**docker stop ****容器****id**
# 停止当前正在运行的容器
**docker kill ****容器****id**
# 强制停止当前容器

三、常用其他命令

1****、后台启动命令

1****、命令:

# 问题docker ps. 发现centos 停止了
# 常见的坑,docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止
# nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
# 所以服务类的程序,我们需要后台启动
docker run -d 镜像名

2****、案例:

[root@Y ~]# docker run -d centos

a8f922c255859622ac45ce3a535b7a0e8253329be4756ed6e32265d2dd2fac6c

 

[root@iz2zeak7sgj6i7hrb2g862z ~]# docker ps   

CONTAINER ID      IMAGE       COMMAND    CREATED     STATUS   PORTS    NAMES

2****、查看日志

1****、命令:

docker logs -f 容器id

2****、参数:

**参数**
**说明**
**-tf                **
# 显示日志信息(一直更新)
**--tail number **
# 需要显示日志条数

3****、案例:

docker run -d centos /bin/sh -c "while true;do echo 6666;sleep 1;done"   # 模拟日志

docker logs -t --tail n 容器id   # 查看n行日志

docker logs -ft 容器id                  # 跟着日志

3、查看容器中进程信息ps

docker top 容器id

 

[root@Y ~]# docker top 51ce907d72b1

UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD

root                28107            28089              0                   10:48                 ?                   00:00:00            /bin/sh -c while true;do echo 666;sleep 1;done

root                28503            28107              0                   10:54                 ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1

4****、查看镜像的元数据

docker inspect 容器id

 

[root@Y ~]# docker inspect 51ce907d72b1
……

5****、进入当前正在运行的容器

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

1****、方式一(推荐):

docker exec -it 容器id /bin/bash

 

[root@Y ~]# docker ps

CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES

51ce907d72b1   centos    "/bin/sh -c 'while t…"   13 minutes ago   Up 13 minutes             pedantic_lichterman

[root@Y ~]# docker exec -it 51ce907d72b1 /bin/bash

[root@51ce907d72b1 /]#

2****、方式二:

docker attach 容器id

 

[root@Y ~]# docker attach 51ce907d72b1

正在执行当前的代码…

3****、二者区别:

  • #docker exec # 进入当前容器后开启一个新的终端,可以在里面操作。(常用)
  • #docker attach # 进入容器正在执行的终端

6****、从容器内拷贝到主机上

1****、命令:

docker cp 容器id:容器内路径  主机目的路径

2****、案例:

# 1. 新建进入docker容器内部

[root@Y ~]# docker run -it centos /bin/bash

[root@55321bcae33d /]# ls

bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

# 2. 新建一个文件

[root@55321bcae33d /]# echo "java" > hello.java

[root@55321bcae33d /]# cat hello.java

hello

[root@55321bcae33d /]# exit

Exit

# 3. hello.java拷贝到home文件加下

[root@Y /]# docker cp 56a5583b25b4:/hello.java /home

[root@Y /]# cd /home

[root@Y home]# ls -l        #可以看见java.java存在

total 8

-rw-r--r-- 1 root root    0 May 19 22:09 haust.java

-rw-r--r-- 1 root root    6 May 22 11:12 java.java

drwx------ 3 www  www  4096 May  8 12:14 www

** 7导入和导出容器**

  • export 导出容器的内容留作为一个tar归档文件[对应import命令]

  • docker export 容器ID > 文件名.tar

  • import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]

  • cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号

8****、帮助命令

**语法**
**说明**
**docker version****/docker -v**    
#显示docker的版本信息。
**docker info       **
#显示docker的系统信息,包括镜像和容器的数量
**docker ****命令**** --help **
#帮助命令
**帮助文档的地址:** docker build | Docker Documentation

.

四、小结:命令大全

  **attach      **
Attach local standard input, output, and error streams to a running container
**#****当前****shell****下**** attach****连接指定运行的镜像**
**  build       **
Build an image from a Dockerfile 
**# ****通过****Dockerfile****定制镜像**
**  commit      **
Create a new image from a container's changes 
**#****提交当前容器为新的镜像**
**  cp          **
Copy files/folders between a container and the local filesystem 
**#****拷贝文件**
**  create      **
Create a new container 
**#****创建一个新的容器**
**  diff        **
Inspect changes to files or directories on a container's filesystem 
**#****查看****docker****容器的变化**
**  events      **
Get real time events from the server 
**#****从服务获取容器实时时间**
**  exec        **
Run a command in a running container 
**# ****在运行中的容器上运行命令**
**  export      **
Export a container's filesystem as a tar archive 
**#****导出容器文件系统作为一个****tar****归档文件****[****对应****import]**
**  history     **
Show the history of an image 
**# ****展示一个镜像形成历史**
**  images      **
List images 
**#****列出系统当前的镜像**
**  import      **
Import the contents from a tarball to create a filesystem image 
**#****从****tar****包中导入内容创建一个文件系统镜像**
**  info        **
Display system-wide information 
**# ****显示全系统信息**
**  inspect     **
Return low-level information on Docker objects 
**#****查看容器详细信息**
**  kill        **
Kill one or more running containers 
**# kill****指定****docker****容器**
**  load        **
Load an image from a tar archive or STDIN 
**#****从一个****tar****包或标准输入中加载一个镜像****[****对应****save]**
**  login       **
Log in to a Docker registry 
**  logout      **
Log out from a Docker registry
**  logs        **
Fetch the logs of a container
**  pause       **
Pause all processes within one or more containers
**  port        **
List port mappings or a specific mapping for the container
**  ps          **
List containers
**  pull        **
Pull an image or a repository from a registry
**  push        **
Push an image or a repository to a registry
**  rename      **
Rename a container
**  restart     **
Restart one or more containers
**  rm          **
Remove one or more containers
**  rmi         **
Remove one or more images
**  run         **
Run a command in a new container
**  save        **
Save one or more images to a tar archive (streamed to STDOUT by default)
**  search      **
Search the Docker Hub for images
**  start       **
Start one or more stopped containers
**  stats       **
Display a live stream of container(s) resource usage statistics
**  stop        **
Stop one or more running containers
**  tag         **
Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
**  top         **
Display the running processes of a container
**  unpause     **
Unpause all processes within one or more containers
**  update      **
Update configuration of one or more containers
**  version     **
Show the Docker version information
**  wait        **
Block until one or more containers stop, then print their exit codes
 
标签: docker 容器 运维

本文转载自: https://blog.csdn.net/qq_52906615/article/details/124748302
版权归原作者 苏意莫 所有, 如有侵权,请联系我们删除。

“Docker镜像、容器、其他……等等命令”的评论:

还没有评论