Docker 基础 1

本文详细介绍了Docker的几个核心操作,包括使用`docker search`从DockerHub搜索镜像,`docker pull`拉取镜像,`docker images`查看本地镜像,`docker run`创建并运行容器,以及`docker ps`、`docker start`、`docker stop`、`docker restart`、`docker rm`、`docker rmi`等容器和镜像的管理命令。此外,还提到了使用`docker exec`进入容器执行命令的方法,以及如何配置镜像加速和筛选镜像等实用技巧。

一.docker 镜像搜索

(1)描述

docker search : 从Docker Hub查找镜像

(2)语法

docker search [OPTIONS] TERM

(3)选项

–automated:弃用,只列出自动构建类型的镜像
–filter , -f:基于给定条件过滤输出
–format:使用模板格式化显示输出
–limit:Max number of search results ,默认值25
–no-trunc:禁止截断输出
–stars , -s:弃用,只显示收藏数不小于几颗星的镜像,移到–filter中使用

(4)实例

[root@localhost ~]# docker search mysql
INDEX       NAME                                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/mysql                             MySQL is a widely used, open-source relati...   11419     [OK]       
docker.io   docker.io/mariadb                           MariaDB Server is a high performing open s...   4339      [OK]       
docker.io   docker.io/mysql/mysql-server                Optimized MySQL Server Docker images. Crea...   847                  [OK]
docker.io   docker.io/percona                           Percona Server is a fork of the MySQL rela...   554       [OK]       
docker.io   docker.io/phpmyadmin                        phpMyAdmin - A web interface for MySQL and...   322       [OK]       
docker.io   docker.io/centos/mysql-57-centos7           MySQL 5.7 SQL database server                   91                   
docker.io   docker.io/mysql/mysql-cluster               Experimental MySQL Cluster Docker images. ...   88                   
docker.io   docker.io/centurylink/mysql                 Image containing mysql. Optimized to be li...   59                   [OK]
docker.io   docker.io/databack/mysql-backup             Back up mysql databases to... anywhere!         49                   
docker.io   docker.io/prom/mysqld-exporter                                                              42                   [OK]
docker.io   docker.io/deitch/mysql-backup               REPLACED! Please use http://hub.docker.com...   41                   [OK]

参数说明:
–NAME: 镜像仓库源的名称
–DESCRIPTION: 镜像的描述
–OFFICIAL: 是否 docker 官方发布
–stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
–AUTOMATED: 自动构建。

二.docker 镜像拉取

(1)描述

docker pull : 从镜像仓库中拉取或者更新指定镜像

(2)语法

docker pull [options] name[:tag|@digest] 

(3)选项

-a :拉取所有 tagged 镜像
–disable-content-trust :忽略镜像的校验,默认开启

(4)加速

此处使用的是中国科技大学的docker镜像源
/etc/docker/daemon.json文件中添加下面参数

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

重启docker服务

[root@localhost ~]# systemctl restart docker

(5)实例

[root@localhost ~]# docker pull mysql:8.0.26

三.查看镜像

(1)描述

docker images : 列出本地镜像。

(2)语法

docker images [OPTIONS] [REPOSITORY[:TAG]]

(3)参数

–a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
–digests :显示镜像的摘要信息;
–f :显示满足条件的镜像;
–format :指定返回值的模板文件;
–no-trunc :显示完整的镜像信息;
–q :只显示镜像ID。

(4)实例

[root@localhost ~]# docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
docker.io/mysql                8.0.26              0716d6ebcc1a        13 days ago         514 MB
docker.io/rabbitmq             management          88b2e6b105da        4 months ago        186 MB
daocloud.io/library/rabbitmq   3.7.28-management   f1a77cb119f4        13 months ago       180 MB
daocloud.io/library/tomcat     8.0.45              fa6ad595ba45        4 years ago         357 MB

四.制作容器

(1)描述

docker run :创建一个新的容器并运行一个命令

(2)语法

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

(3)参数

–a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
–d: 后台运行容器,并返回容器ID;
–i: 以交互模式运行容器,通常与 -t 同时使用;
–P: 随机端口映射,容器内部端口随机映射到主机的端口
–p: 指定端口映射,格式为:主机(宿主)端口:容器端口
–t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
–name=“nginx-lb”: 为容器指定一个名称;
–dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
–dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
–h “mars”: 指定容器的hostname;
–e username=“ritchie”: 设置环境变量;
–env-file=[]: 从指定文件读入环境变量;
–cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;
–m :设置容器使用内存最大值;
–net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
–link=[]: 添加链接到另一个容器;
–expose=[]: 开放一个端口或一组端口;
–volume , -v: 绑定一个卷

(4)实例

docker run -p 3307:3306 \
-v /data/mysql/conf:/etc/mysql/conf.d \
-v /data/mysql/data:/var/lib/mysql  \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql --restart=always  -d mysql:8.0.26

以mysql:8.0.26镜像运行一个mysql的容器,宿主机的端口为3307,配置文件夹为/data/mysql/conf,数据文件夹为/data/mysql/data;对应的容器端口为3306,配置文件夹为/etc/mysql/conf.d,数据文件夹为/var/lib/mysql。密码为123456,容器名字为mysql,Docker 重启时,容器自动启动,后台运行容器,并返回容器ID。

五.查看容器

(1)描述

docker ps : 列出容器

(2)语法

docker ps [OPTIONS]

(3)参数

–a :显示所有的容器,包括未运行的。
–f :根据条件过滤显示的内容。
–format :指定返回值的模板文件。
–l :显示最近创建的容器。
–n :列出最近创建的n个容器。
–no-trunc :不截断输出。
–q :静默模式,只显示容器编号。
–s :显示总的文件大小。

(4)实例

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                      PORTS                               NAMES
ac7597008d52        mysql:8.0.26          "docker-entrypoint..."   15 minutes ago      Up 15 minutes               33060/tcp, 0.0.0.0:3307->3306/tcp   mysql
e140777c7acd        rabbitmq:management   "docker-entrypoint..."   4 months ago        Exited (128) 3 months ago                                       rabbitmq

–CONTAINER ID: 容器 ID。
–IMAGE: 使用的镜像。
–COMMAND: 启动容器时运行的命令。
–CREATED: 容器的创建时间。
–STATUS: 容器状态。
状态有7种:
created(已创建)
restarting(重启中)
running(运行中)
removing(迁移中)
paused(暂停)
exited(停止)
dead(死亡)
–PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
–NAMES: 自动分配的容器名称

六.容器start/stop/restart/

(1)描述

docker start :启动一个或多个已经被停止的容器
docker stop :停止一个运行中的容器
docker restart :重启容器

(2)语法

docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]

(3)实例

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                      PORTS                               NAMES
ac7597008d52        mysql:8.0.26          "docker-entrypoint..."   15 minutes ago      Up 15 minutes               33060/tcp, 0.0.0.0:3307->3306/tcp   mysql
e140777c7acd        rabbitmq:management   "docker-entrypoint..."   4 months ago        Exited (128) 3 months ago                                       rabbitmq
[root@localhost ~]# docker restart ac7597008d52
ac7597008d52

七.删除镜像

(1)描述

docker rmi : 删除本地一个或多个镜像。

(2)语法

docker rmi [OPTIONS] IMAGE [IMAGE...]

(3)参数

–f :通过 SIGKILL 信号强制删除一个运行中的容器。
–l :移除容器间的网络连接,而非容器本身。
–v :删除与容器关联的卷。

(4)实例

[root@localhost ~]# docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
docker.io/mysql                8.0.26              0716d6ebcc1a        13 days ago         514 MB
docker.io/mysql                latest              0716d6ebcc1a        13 days ago         514 MB
docker.io/rabbitmq             management          88b2e6b105da        4 months ago        186 MB
daocloud.io/library/rabbitmq   3.7.28-management   f1a77cb119f4        13 months ago       180 MB
daocloud.io/library/tomcat     8.0.45              fa6ad595ba45        4 years ago         357 MB
[root@localhost ~]# docker rmi -f mysql:latest
Untagged: mysql:latest
Untagged: docker.io/mysql@sha256:99e0989e7e3797cfbdb8d51a19d32c8d286dd8862794d01a547651a896bcf00c
[root@localhost ~]# docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
docker.io/mysql                8.0.26              0716d6ebcc1a        13 days ago         514 MB
docker.io/rabbitmq             management          88b2e6b105da        4 months ago        186 MB
daocloud.io/library/rabbitmq   3.7.28-management   f1a77cb119f4        13 months ago       180 MB
daocloud.io/library/tomcat     8.0.45              fa6ad595ba45        4 years ago         357 MB

八.删除容器

(1)描述

docker rm :删除一个或多个容器。

(2)语法

docker rm [OPTIONS] CONTAINER [CONTAINER...]

(3)参数

f :通过 SIGKILL 信号强制删除一个运行中的容器。
–l :移除容器间的网络连接,而非容器本身。
–v :删除与容器关联的卷。

(4)实例

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
ac7597008d52        mysql:8.0.26        "docker-entrypoint..."   15 hours ago        Up 15 hours         33060/tcp, 0.0.0.0:3307->3306/tcp   mysql
[root@localhost ~]# docker rm -f ac7597008d52
ac7597008d52
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

九.进入容器

(1)描述

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

(2)语法

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

(3)参数

–d :分离模式: 在后台运行
–i :即使没有附加也保持STDIN 打开
–t :分配一个伪终端

(4)实例

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS        
85cbbca512c5        mysql:8.0.26        "docker-entrypoint..."   4 seconds ago       Up 3 seconds  
[root@localhost ~]# docker exec -it mysql /bin/bash
root@85cbbca512c5:/# 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值