欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker的常用命令

程序员文章站 2022-04-19 08:53:19
...

docker的常用命令

一、docker镜像常用命令

1.1 搜索镜像

docker search name :搜索远程仓库中名称类似或等于name的镜像。

aaa@qq.com-Pro ~ % docker search centos
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   5734                [OK]                
ansible/centos7-ansible            Ansible on Centos7                              126                                     [OK]
jdeathe/centos-ssh                 OpenSSH / Supervisor / EPEL/IUS/SCL Repos - …   114                                     [OK]
consol/centos-xfce-vnc             Centos container with "headless" VNC session…   101                                     [OK]
centos/mysql-57-centos7            MySQL 5.7 SQL database server                   66                                      
imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              57                                      [OK]
tutum/centos                       Simple CentOS docker image with SSH access      44                                      
centos/postgresql-96-centos7       PostgreSQL is an advanced Object-Relational …   39                                      
kinogmt/centos-ssh                 CentOS with SSH                                 29                                      [OK]
pivotaldata/centos-gpdb-dev        CentOS image for GPDB development. Tag names…   10                                      
guyton/centos6                     From official centos6 container with full up…   9                                       [OK]
nathonfowlie/centos-jre            Latest CentOS image with the JRE pre-install…   8                                       [OK]
drecom/centos-ruby                 centos ruby                                     6                                       [OK]
darksheer/centos                   Base Centos Image -- Updated hourly             3                                       [OK]
mamohr/centos-java                 Oracle Java 8 Docker image based on Centos 7    3                                       [OK]
pivotaldata/centos                 Base centos, freshened up a little with a Do…   3                                       
pivotaldata/centos-mingw           Using the mingw toolchain to cross-compile t…   2                                       
miko2u/centos6                     CentOS6 日本語環境                                   2                                       [OK]
pivotaldata/centos-gcc-toolchain   CentOS with a toolchain, but unaffiliated wi…   2                                       
indigo/centos-maven                Vanilla CentOS 7 with Oracle Java Developmen…   1                                       [OK]
mcnaughton/centos-base             centos base image                               1                                       [OK]
blacklabelops/centos               CentOS Base Image! Built and Updates Daily!     1                                       [OK]
pivotaldata/centos6.8-dev          CentosOS 6.8 image for GPDB development         0                                       
pivotaldata/centos7-dev            CentosOS 7 image for GPDB development           0                                       
smartentry/centos                  centos with smartentry                          0                                       [OK]

里面包括了镜像的名称,描述,星星(估计类似github的星星),是否是官方的(OFFICAL),是否是自动构建的。

1.2 下载镜像

docker pull name

aaa@qq.com-Pro ~ % docker pull tutum/centos
Using default tag: latest
latest: Pulling from tutum/centos
a3ed95caeb02: Pull complete 
196355c4b639: Downloading [=>                                                 ]  2.673MB/70.56MB
edd0a8ebcd9d: Downloading [==>                                                ]  1.526MB/37.65MB
8ba44ed17115: Waiting 
69f7e70c0063: Waiting 
54abd94c9217: Waiting 

出现这样的字样,等待安装完成即可。

1.3 查看当前宿主机下所有的镜像

docker images 可以列出当前宿主机上所有的镜像列表。

aaa@qq.com-Pro ~ % docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              7                   5e35e350aded        6 weeks ago         203MB
tutum/centos        latest              99a633ad346f        3 years ago         297MB
aaa@qq.com-Pro ~ % 

这里是我装了两个centos的镜像。

1.4 删除镜像

docker rmi name(image id)
docker rmi -f $(docker images)

aaa@qq.com-Pro ~ % docker rmi 99a633ad346f
Untagged: tutum/centos:latest
Untagged: tutum/aaa@qq.com:b4de18abfef698f6ae3a4921d6f58edef8fc770c6ee5da7636fa4ea51ab545c5
Deleted: sha256:99a633ad346ff9debae2e18ef28e36da72c4535d936500e497cd34377173d4b6
Deleted: sha256:e72d160abbd5585d403996036763c88e9624c70d9d80d6fb0e1ccb2c49b8a26d
Deleted: sha256:8f201733668a3ce8ce77a0dc8b2d7249cdc70b1022a7fc78650527a6f3ec09b6
Deleted: sha256:8fdcefb6d553194a6881387055c1d4110bc385d3dbf4d51b0aa07f1251e877ef
Deleted: sha256:8f98c28a55c2e54cf8b8815d843cbfaf1495dd0bf601774f27da1cbe80183225
Deleted: sha256:6163e9854471a9b6c817b9514d6b8d1cf7be7684fa0c52d76d42188e28785859
Deleted: sha256:85946201865d0456e3d2db4df8699ecc017f2a8df599a1c0b241d30e8f942ed6
Deleted: sha256:3b6d6efff38bc7552b4e42d78a142460dd122efe3f86a921298e82d60f770c85
Deleted: sha256:28508c96f9bffc44568bdcf1d0cd20a0357a106a18440302ba67ee4c68a3ccad
Deleted: sha256:33b3813290610f3880214f35c32d2175adfcc75500cae48dfdbcbcf31928a1ac
Deleted: sha256:ce3c560f1cfc18c6febc0a8ed4f8330d32df64e52fa0b34b82d42ad35406ac39
Deleted: sha256:cf032be00d9aedaf94363af683f83fda44140490759c1c048584dc9b3dd1f34e
Deleted: sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef

二、容器的基本命令

2.1 新建并启动容器

docker run [ option ] imagename

option 可选项

  • -d:表示后台运行
  • -P:随机端口映射
  • -p:指定端口映射,有以下四种格式
    ip:hostPort:containerPort
    ip:containerPort
    hostPort:containerPort
    containerPort
  • network:指定网络模式。
    –network=bridge:默认模式,表示连接到默认 的网桥。
    –network=host:容器使用宿主机的网络。
    –network=container:Name_or_ID:告诉Docker让新建的容器使用已有容器的网络配置。
    –network=none:不配置该容器的网络,用户可自定义网络。
aaa@qq.com-Pro ~ % docker run -d -p 91:80 nginx
eb244831ec15a873d994b0a762caf4b3c438af525595e7b74f72021eb867c835

意思是 后台模式运行nginx镜像 指定宿主机的91端口映射容器的80端口。我们访问 http://宿主机ip:91试试。
docker的常用命令
可以看到nginx已经启动了。

需要注意的是,如果你本地没有nginx,docker会自动去远程仓库下载。然后再启动。

2.2 查看所有运行的容器

docker ps 即可查看所有正在运行的容器 docker ps -a 可以查看所有容器。

aaa@qq.com-Pro ~ % docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
eb244831ec15        nginx               "nginx -g 'daemon of…"   4 minutes ago       Up 4 minutes        0.0.0.0:91->80/tcp   hopeful_euclid

CONTAINER ID :表示容器id
IMAGE:镜像名称
COMMAND:表示启动容器时运行的命令。
CREATED:创建时间
STATUS:状态 up表示运行中,Exited表示已停止。
PORTS:端口。
NAMES:容器的名称,该名称是docker默认生成,也可以在docker run 的时候 用 --name指定名称。

2.3 停止容器

docker stop [ container id 或者 name]

aaa@qq.com-Pro ~ % docker stop  eb244831ec15
eb244831ec15

这样表示停止成功了。

docker kill [ container id] 表示强制停止容器。

2.4 启动容器

docker start [ container id] 是启动已经存在但是被关掉的容器。不会新建。

aaa@qq.com-Pro ~ % docker start eb244831ec15
eb244831ec15

这样就启动成功了,可以再次访问nginx。

2.5 重启容器

docker restart [ container id] 实际上等于先执行了 stop 然后再 start 。

aaa@qq.com-Pro ~ % docker restart eb244831ec15
eb244831ec15

2.6 删除容器

docker rm [ container id] 只能删除已经停止的容器。否则会拒绝操作。
docker rm -f $(docker ps -a -q) 删除所有容器,慎用。

aaa@qq.com-Pro ~ % docker stop eb244831ec15
eb244831ec15
aaa@qq.com-Pro ~ % docker rm eb244831ec15
eb244831ec15
aaa@qq.com-Pro ~ % 

2.7 拷贝文件

docker cp filename containerid或者name:路径

aaa@qq.com-Pro ~ % docker cp jmeter.log centos:/usr/local
aaa@qq.comacBook-Pro ~ % 

然后进入 centos 去查看是否有这个文件。
使用 docker -exec 命令

aaa@qq.com-Pro ~ % docker exec -it centos /bin/bash 
[aaa@qq.com /]# 

可以看到已经进来了

[aaa@qq.com /]# cd /usr/local/
[aaa@qq.com local]# ls
bin  etc  games  include  jmeter.log  lib  lib64  libexec  sbin  share  src
[aaa@qq.com local]# 

可以看到已经复制成功了。

2.7 容器挂载

目录挂载的意思就是宿主机的目录或者文件与容器的结构和内容保持一致。通常用作修改配置文件。
在容器创建运行的时候添加 -v参数

aaa@qq.com-Pro Downloads % docker run -di -v /Users/pengweiwei/Downloads:/usr/local/Downloads --name=centos2 centos:7

7bcacd4673fe48879eea41238580f06cb1615f87460427aa683ad102da7d1631
aaa@qq.com-Pro Downloads % docker exec -it centos2 /bin/bash                                                        
[aaa@qq.com /]# cd /usr/local/Downloads/
[aaa@qq.com Downloads]# ls
BaiduNetdisk_mac_2.2.3.dmg    Video                               sakila-db
Compressed                    apache-tomcat-8.5.50                sakila-db.tar.gz
Docker.dmg                    apache-tomcat-8.5.50.tar.gz         scrt833.zip
Final_Cut_Pro_10.4__TNT_.dmg  securefx833.zip
MAC????????????               googlechrome.dmg                    settings.zip
*X.app                    nginx-1.17.3.tar.gz

可以发现,已经挂载成功了。那些问号是因为容器的编码问题。在我本地是中文的。

相关标签: docker