🌻🌻 目录
- 一、Docker的常用命令 (阶段A)
- 1.1 帮助命令
- 1.2 镜像命令
- 1.3 容器命令
- 1.3.1 新建容器并启动
- 1.3.2 列出所有运行的容器
- 1.3.3 退出容器
- 1.3.4 删除容器
- 1.3.5 启动和停止容器的操作
- 1.4 常用的其它命令
- 1.4.1 后台启动容器
- 1.4.2 查看日志
- 1.4.3 查看容器中进程信息
- 1.4.4 查看镜像的元数据
- 1.4.5 进入当前正在运行的容器
- 1.4.6 从容器内拷贝文件到主机上
- 二、Docker的常用命令 (阶段B)
- 2.1 Docker镜像操作常用指令
- 2.1.1 搜索镜像
- 2.1.2 下载镜像(截图👇)
- 2.1.3 列出本地镜像
- 2.1.4 保存镜像
- 2.1.5 删除本地镜像
- 2.1.6 加载镜像(将上面备份镜像还原)
- 2.2 Docker容器操作常用指令
- 2.2.1 新建并启动容器(截图👇)
- 2.2.2 列出容器
- 2.2.3 停止容器
- 2.2.4 强制停止容器
- 2.2.5 启动已经停止容器
- 2.2.6 重启容器
- 2.2.7 进入容器
- 2.2.8 拷贝文件到容器
- 2.2.9 拷贝容器中的文件到本地
- 2.2.10 目录挂载
- 2.2.11 删除容器
- 2.2.12 查看容器ip
注:阶段A和阶段B本质一样,阶段B相当于对阶段A的温故
一、Docker的常用命令 (阶段A)
1.1 帮助命令
docker version #显示docker版本信息
docker info #显示docker的系统信息,包括镜像和容器的数量
docker --help #万能命令,帮助命令
帮助文档的地址
1.2 镜像命令
docker images 查看所有本地的主机上的镜像
docker images
解释上面命令
[root@bogon ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 15 months ago 13.3kB
# 解释:
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小
#可选项
Options:
-a, --all 列出所有镜像
-q, --quiet 只显示镜像的id
官网搜索镜像
1. docker search docker 搜索镜像
docker search #docker 搜索镜像
官网搜索如下显示,也是一样的
# 可选项,通过搜索来过滤
docker search mysql --filter=STARS=3000 #搜索出来的镜像STARS就是大于3000的
2. docker pull 下载镜像
#下载镜像
docker pull mysql
对上面的下载进行解释:
#下载镜像 docker pull 镜像名 [:tag]
[root@bogon ~]# docker pull mysql
Using default tag: latest #如果不写 tag,默认就是latest 即最新的镜像
latest: Pulling from library/mysql
72a69066d2fe: Pull complete # 分层下载,docker images的核心 联合文件系统
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真是地址
#等价于它
docker pull mysql
docker pull docker.io/library/mysql:latest
docker pull mysql:5.7 #拉取对应版本的镜像(这个版本官网一定是存在的,才会拉取成功)
docker images #查看拉取下来的镜像
3. docker rmi #删除镜像
docker rmi 镜像对应id #删除对应id的镜像
docker rmi -f $(docker images -aq) #删除所有的镜像
1.3 容器命令
说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习
docker pull centos
1.3.1 新建容器并启动
docker run [可选参数] image
#参数说明
--name="Name" 容器名字 tomcat01 tomcat02,用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
-p 随机指定端口
exit #从容器中退回到主机
1.3.2 列出所有运行的容器
#docker ps 命令
docker ps #列出当前正在运行的容器
-a #列出当前正在运行的容器+带出历史运行过的容器
-n=? #显示最近创建的容器
-q #只显示容器的编号
1.3.3 退出容器
exit # 直接容器停止并退出
ctrl + p +q # 容器不停止退出
1.3.4 删除容器
docker rm 容器id #删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -rf
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q | xargs docker rm #删除所有的容器(扩展)
1.3.5 启动和停止容器的操作
docker start 容器id #启动容器
docker stop 容器id #停止当前运行的容器
docker restart 容器id #重启容器
docker kill 容器id #强制停止当前运行的容器
1.4 常用的其它命令
1.4.1 后台启动容器
# 命令 docker run -d 镜像名
docker run -d centos
#问题 docker ps,发现 centos 停止了
#常见的坑,docker 容器使用后台运行,就必须要有有个前台进程,docker发现没有应用,就会自动停止
#nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
1.4.2 查看日志
docker logs --help
docker logs -f -t --tail 容器,没有日志
1.4.3 查看容器中进程信息
# 命令 docker top 容器id
docker top 容器id
1.4.4 查看镜像的元数据
# 命令 docker inspect 容器id
docker inspect --help
docker inspect 容器id
1.4.5 进入当前正在运行的容器
# 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
#命令
docker exec -it 容器id /bin/bash
# docker exec #进入容器后开启一个新的终端,可以在里面操作(常用)
# docker attach #进入容器正在执行的终端,不会启动新的进程
1.4.6 从容器内拷贝文件到主机上
docker cp
[root@bogon ~]# clear
[root@bogon ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8925cb9c72f0 centos "/bin/bash" 3 minutes ago Up 19 seconds heuristic_borg
# 进入docker容器内部
[root@bogon ~]# docker attach 8925cb9c72f0
[root@8925cb9c72f0 /]# cd /home
#查看当前主机目录下
[root@8925cb9c72f0 home]# ls
# 在容器内新建一个文件
[root@8925cb9c72f0 home]# touch text.java
[root@8925cb9c72f0 home]# exit
exit
[root@bogon ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@bogon ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
72e46a75953e centos "/bin/bash" 3 minutes ago Exited (127) 2 minutes ago serene_dubinsky
8925cb9c72f0 centos "/bin/bash" 3 minutes ago Exited (0) 11 seconds ago heuristic_borg
bb3f12a2ab0d centos "/bin/bash" 59 minutes ago Exited (0) 57 minutes ago friendly_lehmann
fa0d7faade3e centos "/bin/sh" About an hour ago Exited (130) 5 minutes ago gifted_wozniak
94f46ccde94e centos "/bin/sh -c 'while t…" About an hour ago Exited (1) About an hour ago nervous_nightingale
1858da512434 centos "/bin/bash" 2 hours ago Exited (0) 2 hours ago compassionate_snyder
2d1c76e78323 centos "/bin/bash" 2 hours ago Exited (0) 2 hours ago naughty_swanson
04c5ac20aa10 centos "/bin/bash" 2 days ago Exited (0) 2 days ago upbeat_hodgkin
[root@bogon ~]# ls
anaconda-ks.cfg
#将这个文件拷贝出来到主机上
[root@bogon ~]# docker cp 8925cb9c72f0:/home/text.java /home
[root@bogon ~]# ls
anaconda-ks.cfg
[root@bogon ~]#
二、Docker的常用命令 (阶段B)
2.1 Docker镜像操作常用指令
2.1.1 搜索镜像
可使用
docker search
命令搜索存放在Docker Hub中的镜像
docker search tomcat
列说明:
NAME
:仓库名称DESCRIPTION
:镜像描述STARS
:用户评价,反应一个镜像的受欢迎程度OFFICIAL
:是否官方AUTOMATED
:自动构建,表示该镜像由Docker Hub自动构建流程创建的
2.1.2 下载镜像(截图👇)
使用命令docker pull
命令即可从Docker Registry上下载镜像。
docker pull idmcore/java8u161
- 执行该命令后,Docker会从Docker Hub中的java仓库下载最新版本的Java镜像
- 执行该命令后,Docker会从从指定的Docker Registry中下载标签为8的Java镜像。
2.1.3 列出本地镜像
使用docker images
命令即可列出已下载的镜像。
docker images
- 执行该命令后,将会看到类似于如下②的表格:
REPOSITORY
:镜像所在的仓库名称TAG
:镜像标签IMAGE ID
:镜像IDCREATED
:镜像的创建日期(不是获取该镜像的日期)SIZE
:镜像大小
这些镜像都是存储在Docker宿主机的/var/lib/docker目录下
2.1.4 保存镜像
使用
docker save
即可保存镜像。
执行命令:docker save -o /java8u161.tar idmcore/java8u161
docker save -o /java8u161.tar idmcore/java8u161 #将java8u161压缩备份到根目录下面
-o 参数后面跟要把镜像保存的文件路径和名称
2.1.5 删除本地镜像
使用
docker rmi
命令即可删除指定镜像。
执行命令1: docker rmi 5942263ae165
docker rmi 5942263ae165
- 执行以上指令,就会删除idmcore/java8u161这个镜像
注意
:已经使用镜像创建过容器的不能删除
- 执行命令2:docker rmi -f $(docker images)
docker rmi -f $(docker images)
执行以上指令,就会删除全部镜像
2.1.6 加载镜像(将上面备份镜像还原)
使用
docker load
即可加载镜像
docker load -i java8u161.tar
-i参数后面跟要加载的文件路径和名称
2.2 Docker容器操作常用指令
2.2.1 新建并启动容器(截图👇)
使用以下docker run 命令即可新建并启动一个容器。该命令是我们最常用的命令了,它有很多选项,下面列举一些常用的选项。
- ① -i选项:表示运行容器
- ② -d选项:表示后台运行
- ③ -t:表示容器启动后会进入其命令行。加入it这两个参数后,容器创建就能登录进去。即分配一个伪终端。
- ④ -P选项:随机端口映射
- ⑤-p选项:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
- ⑥–name :指定容器的名称
- ⑦ –network选项:指定网络模式,该选项有以下可选参数:
–network=bridge: 默认选项,表示连接到默认的网桥。
–network=host:容器使用宿主机的网络。
–network=container:NAME_or_ID:告诉Docker让新建的容器使用已有容器的网络配置。
–network=none:不配置该容器的网络,用户可自定义网络配置。
执行命令2:
docker run -it --name=java888 idmcore/java8u161 /bin/bash
- 就能启动一个 idmcore/java8u161 容器,并进入到容器的命令行终端。在本例2个参数,含义如下:
-t #容器启动后会进入其命令行
-i #运行容器
--name #指定容器的名字
2.2.2 列出容器
使用
docker ps
命令即可列出运行中的容器。执行该命令后,可看到类似于如下的表格。
执行命令:
docker ps -a
- 如需列出所有容器(包括已停止的容器),可使用
-a
参数;只查看已经退出的容器使用-q
参数
该表格包含了七列,含义如下:- ① CONTAINER_ID:表示容器ID。
- ② IMAGE:表示镜像名称。
- ③ COMMAND:表示启动容器时运行的命令。
- ④ CREATED:表示容器的创建时间。
- ⑤ STATUS:表示容器运行的状态。Up表示运行中,Exited表示已停止。
- ⑥ PORTS:表示容器对外的端口号。
- ⑦ NAMES:表示容器名称。该名称默认由Docker自动生成,也可使用docker run命令的–name选项自行指定。
- 参数
-a
表示列出全部容器包括正在运行的和已经停止的- 参数
-q
表示只显示容器的id
2.2.3 停止容器
使用
docker stop
命令,即可停止容器
执行命令:
docker stop bd7e8eeba434
其中bd7e8eeba434 是容器ID,当然也可使用docker stop 容器名称 来停止指定容器。
2.2.4 强制停止容器
可使
docker kill
命令停止一个或更多运行着的容器。
执 行令:
docker kill 784fd3b294d7
2.2.5 启动已经停止容器
使用
docker start
命令,即可启动已经停止的容器。
执行命令:
docker start c9d78b7c2bed
其中 c9d78b7c2bed 是容器ID,当然也可使用docker stop 容器名称 来启动指定容器。
2.2.6 重启容器
可使用
docker restart
命令重启一个容器。该命令实际上是先执行了docker stop 命令,然后执行了docker start 命令。
执行命令:
docker restart 784fd3b294d7
2.2.7 进入容器
一些时候,我们可能需要进入运行中的容器。
使用docker exec 命令进入容器
执行命令:
docker exec -it bd7e8eeba434 /bin/bash
2.2.8 拷贝文件到容器
如果我们需要将文件拷贝到容器内可以使用
docker cp
命令
执行命令1:
docker cp bbb.txt ava888:/root
- 参数说明:容器名称:容器目录 需要拷贝的文件或目录
执行以上命令即可把容器中的文件拷贝到宿主机指定目录。 (容器拷贝到容器中)
步骤一:
步骤二:
步骤三:
步骤四:
步骤五:
2.2.9 拷贝容器中的文件到本地
执行命令2:
docker cp java888:/root/bbb.txt /usr/local
- 参数说明:需要拷贝的文件或目录 容器名称:容器目录
执行以上命令即可把本地文件拷贝到容器指定目录。(容器拷贝到本地)
2.2.10 目录挂载
我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。
docker run -di -v /demoo:/root/ddd --name java81 idmcore/java8u161
- 参数说明:创建容器 添加
-v
参数 后边为 宿主机目录:容器目录
如果你共享的是多级的目录,可能会出现权限不足的提示。
这是因为 idmcore/java8u161 中的安全模块selinux把权限禁掉了,我们需要添加参数 --privileged=true
来解决挂载的目录没有权限的问题
docker run -di -v /demoo:/root/ddd --privileged=true --name=java81 idmcore/java8u161
步骤一:
步骤二:
步骤三:查看是否挂在成功
2.2.11 删除容器
使用
doker rm
命令即可删除指定容器
执行命令1:
docker rm bd7e8eeba434
删除指定容器,该命令只能删除已停止的容器,如需删除正在运行的容器,可使用
-f
参数。
执行命令2:
docker rm -f $(docker ps -a -q)
删除所有的容器。
2.2.12 查看容器ip
我们可以通过以下命令查看容器运行的各种数据
执行命令1:
docker inspect java7
也可以直接执行下面的命令直接输出IP地址
执行命令2:
docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos2
最后跟容器的名称。
停掉上面的所有容器,进一步进行总结咯✌✌