Centos7 docker 常用指令

Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上

一、docker的安装及卸载

1.查看当前系统内核版本:

[root@docker ~]# uname -r
3.10.0-514.el7.x86_64

2.安装docker

[root@docker ~]# yum -y install docker-io

3.启动 Docker 后台服务

[root@docker ~]# systemctl start docker.service

4.镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是阿里的镜像地址:

在/etc/docker/daemon.json文件中添加如下内容.

{
  "registry-mirrors": ["https://wghlmi3i.mirror.aliyuncs.com"]
}

或者使用如下地址

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

或者在添加更改数据目录

# cat /etc/docker/daemon.json 
{
  "data-root": "/data/docker-data",
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
[root@sentry-system sentry]# 

修改保存后重启 Docker 以使配置生效,至此,docker安装完成!!!

5.卸载docker

列出你安装过的包

[root@docker ~]# yum list installed | grep docker
docker.x86_64                        2:1.13.1-53.git774336d.el7.centos @extras  
docker-client.x86_64                 2:1.13.1-53.git774336d.el7.centos @extras  
docker-common.x86_64                 2:1.13.1-53.git774336d.el7.centos @extras  

6.删除软件包

[root@docker ~]# yum -y remove docker.x86_64
[root@docker ~]# yum -y remove docker-client.x86_64
[root@docker ~]# yum -y remove docker-common.x86_64

二、docker 常用指令整理

1.获取一个新的镜像

[root@docker ~]# docker pull [镜像名称]

2.列出镜像列表

[root@docker ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
docker.io/hello-world   latest              e38bc07ac18e        2 weeks ago         1.85 kB
docker.io/nginx         latest              b175e7467d66        2 weeks ago         109 MB
docker.io/centos        latest              e934aafc2206        2 weeks ago         199 MB
docker.io/mysql         latest              5195076672a7        6 weeks ago         371 MB

各个选项说明:

  • REPOSITORY:表示镜像的仓库源

  • TAG:镜像的标签

  • IMAGE ID:镜像ID

  • CREATED:镜像创建时间

  • SIZE:镜像大小

3.查找镜像

我们也可以使用 docker search 命令来从 Docker Hub 网站来搜索镜像

[root@docker ~]# docker search nginx
INDEX       NAME                                                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/nginx                                                  Official build of Nginx.                        8341      [OK]       
docker.io   docker.io/jwilder/nginx-proxy                                    Automated Nginx reverse proxy for docker c...   1325                 [OK]
docker.io   docker.io/richarvey/nginx-php-fpm                                Container running Nginx + PHP-FPM capable ...   547                  [OK]
docker.io   docker.io/jrcs/letsencrypt-nginx-proxy-companion                 LetsEncrypt container to use with nginx as...   356                  [OK]
docker.io   docker.io/kong                                                   Open-source Microservice & API Management ...   182     

4.docker run指令:

Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。

参数说明:
-d:让容器在后台运行。
-P:将容器内部使用的网络端口映射到我们使用的主机上。
-t:在新容器内指定一个伪终端或终端。
-i:允许你对容器内的标准输入 (STDIN) 进行交互
-p:绑定指定端口

实例:

docker run -p 80:80 \
-v $PWD/nginx/html:/usr/share/nginx/html \
-v $PWD/nginx/conf:/etc/nginx \
-v $PWD/nginx/logs:/var/log/nginx \
--rm --name nginx -d nginx:latest

以交互模式启动一个容器,在容器内执行/bin/bash命令。

docker run -it registry.cn-hangzhou.aliyuncs.com/choerodon-tools/javabase:0.8.0 /bin/bash

以后台模式启动一个容器

docker run -P -d --rm registry.cn-hangzhou.aliyuncs.com/choerodon-tools/javabase:0.8.0

5.docker exec :在运行的容器中执行命令

OPTIONS说明:

  • -d :分离模式: 在后台运行

  • -i :即使没有附加也保持STDIN 打开

  • -t :分配一个伪终端

实例:

docker exec -it 775c7c9ee1e1 /bin/bash  #其中775c7c9ee1e1 为容器ID号

使用root用户进入容器

docker exec -it -u root 8a151d800768 bash

6. docker logs [ID或者名字]    可以查看容器内部的标准输出

# docker logs 353e6c82b2fc
# docker logs -f 353e6c82b2fc

-f:让 dokcer logs 像使用 tail -f 一样来输出容器内部的标准输出。

7. 停止WEB应用容器

#docker stop cid|names

8. 移除WEB应用容器

#docker rm CID|NAMES

9. 查询最后一次创建的容器

#docker ps -l

10.docker commit :从容器创建一个新的镜像。

OPTIONS说明:
 -a :提交的镜像作者;
 -c :使用Dockerfile指令来创建镜像;
 -m :提交时的说明文字;
 -p :在commit时,将容器暂停。

提交变更,类似于git的commit,只提交变化的部分

docker commit 2ee8517b15cf test/oracle

也可以像git一样指定更加详细的提交信息.

# docker commit -a "saneri" -m "my dev oracle" 5cbe0fdb46a6  dev_p2p/oracle:latest

11.docker ps : 列出容器

语法

docker ps [OPTIONS]

OPTIONS说明:

  • -a :显示所有的容器,包括未运行的。

  • -f :根据条件过滤显示的内容。

  • --format :指定返回值的模板文件。

  • -l :显示最近创建的容器。

  • -n :列出最近创建的n个容器。

  • --no-trunc :不截断输出。

  • -q :静默模式,只显示容器编号。

  • -s :显示总的文件大小。

12.docker inspect : 获取容器/镜像的元数据

语法: docker inspect [OPTIONS] NAME|ID [NAME|ID...]

OPTIONS说明:

  • -f :指定返回值的模板文件。

  • -s :显示总的文件大小。

  • --type :为指定类型返回JSON。

实例:获取镜像tomcat的元信息# docker inspect tomcat

[
    {
        "Id": "168ee1a88f2e4870067c1224693b846e4c086172b69e3a387afebbd641b53335",
        "Created": "2020-04-15T14:39:07.096022083Z",
        "Path": "catalina.sh"

#获取容器的ip地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称

# docker inspect --format='{{.NetworkSettings.IPAddress}}' tomcat_test
172.17.0.2

#或者这样写,获取容器使用的网桥

[root@localhost ~]# docker inspect -f {{.HostConfig.NetworkMode}} 262b42fb0c9f
redis_default

13.docker cp :用于容器与主机之间的数据拷贝.

语法:

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
OPTIONS说明:

-L :保持源目标中的链接  

实例:

1.将主机/home/www目录拷贝到容器96f7f14e99ab的/www目录下

docker cp /home/www 96f7f14e99ab:/www/

2.将主机/home/www 目录拷贝到容器96f7f14e99ab中,目录重命名为www

docker cp /home/www 96f7f14e99ab:/www

3.将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中

docker cp  96f7f14e99ab:/www /tmp/

14、docker update

当你 docker run 了之后却发现里面有一些参数并不是你想要的状态比如你设置的 nginx 容器 cpu 或者内存太小,这个时候你就可以使用 docker update 去修改这些参数。

# docker update nginx --cpus 2

15、docker diff

当你运行了一个容器,但是你不知道容器里修改了哪一些文件的时候可以使用这个命令,比如:

# docker diff 38c59255bf6e
C /etc
A /etc/localtime
C /var
C /var/lib
A /var/lib/registry

16、docker stats

这个是 docker 内置的监控命令,当你想要查看当前主机下所有容器占用内存和 cpu 的情况的时候就可以使用这个命令。

# docker stats
CONTAINER ID     NAME                           CPU %       MEM USAGE / LIMIT     MEM %     NET I/O             BLOCK I/O           PIDS
1c5ade04e7f9     redis                          0.08%       17.53MiB / 47.01GiB   0.04%     10.9GB / 37GB       0B / 0B             4
afe6d4ebe409     kafka-exporter                 0.09%       16.91MiB / 47.01GiB   0.04%     1.97GB / 1.53GB     752MB / 0B          23
f0c7c01a9c34     kafka-docker_zookeeper         0.01%       308.8MiB / 47.01GiB   0.64%     20.2MB / 12.2MB     971MB / 3.29MB      28
da8c5008955f     kafka-docker_kafka-manager     0.08%       393.2MiB / 47.01GiB   0.82%     1.56MB / 2.61MB     1.14GB / 0B         60
c8d51c583c49     kafka-docker_kafka             1.63%       1.256GiB / 47.01GiB   2.67%     30.4GB / 48.9GB     22.3GB / 5.77GB 

17、docker port # 显示容器的端口映射

# docker port 20259bdab9ef
9000/tcp -> 0.0.0.0:30090

18、docker top # 显示容器的进程信息

# docker top 20259bdab9ef
UID         PID            PPID            C         STIME          TTY         TIME             CMD
root        13441          13419           0         10:10          ?           00:00:38         minio server /data

 

三、Docker删除容器与镜像

1.停止所有的container,这样才能够删除其中的images:

docker stop $(docker ps -a -q)

如果想要删除所有container的话再加一个指令:

docker rm $(docker ps -a -q)

查看当前有些什么images

docker images

删除images,通过image的id来指定删除谁

docker rmi <image id>

想要删除untagged images,也就是那些id为的image的话可以用

docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

要删除全部image的话

docker rmi $(docker images -q)

强制删除全部image的话

docker rmi -f $(docker images -q)

 

posted @ 2016-12-14 11:20  梦徒  阅读(18653)  评论(0编辑  收藏  举报