Docker 常用指令

目录

安装docker

离线安装

在线安装

docker服务相关指令

查看docker是否启动

停止,启动,重新启动docker服务

开启,关闭开机自启docker

查看docker信息

docker镜像加速

docker镜像相关指令

下载镜像(在线) 

浏览本地镜像

查看镜像详情

查看历史镜像

导出镜像文件

导出镜像文件(离线)

 运行镜像

删除镜像

docker容器相关指令

创建并启动容器

查看docker中的容器

查看容器日志

停止,启动,重启容器

进入指定容器

退出容器

删除容器

docker数据管理相关指令

数据卷操作

创建数据卷

查看所有数据卷

查看指定数据卷信息 

启动挂载数据卷的容器

删除数据卷

挂载主机目录

查看挂载目录信息

Docker镜像制作

准备工作

创建Dockerfile文件

创建jdk镜像文件

docker容器互联相关指令

​新建虚拟网络

查看网络信息

创建容器

测试网络是否互通


安装docker

离线安装

1.下载docker离线包

https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz

说明,也可以从https://download.docker.com/linux/static/stable/网址下载指定版本

2.下载离线安装工具

https://github.com/Jrohy/docker-install/

下载后将工具解压

3.将以上资源放在一个目录下

4.在linux环境下,将资源放在root目录下,因为root目录有读写权限

5.执行安装操作

# 进入/root/setup/docker 文件夹,没有的话先创建一个
cd /root/setup/docker

# 为 install.sh添加执行权限
chmod +x install.sh

# 安装
./install.sh -f docker-20.10.6.tgz

安装成功后,会有以下信息

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
docker 20.10.6 install success!

6.查看docker信息

docker info

在线安装

1.安装一组工具

sudo yum install -y yum-utils 

sudo为管理员权限

2.设置yum仓库地址

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo 

 sudo yum-config-manager \
     --add-repo \
     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 以上两种方式选一即可

3.更新yum缓存

sudo yum makecache fast #yum 是包管理器

4.安装docker

sudo yum install -y docker-ce docker-ce-cli containerd.io 

docker服务相关指令

查看docker是否启动

systemctl status docker

 在这里插入图片描述

 running表示正在运行,dead表示没有运行

停止,启动,重新启动docker服务

systemctl stop/start/restart docker

开启,关闭开机自启docker

 systemctl enable/disable docker

查看docker信息

docker info 

docker镜像加速

cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
    },
  "data-root": "/var/lib/docker"
}
EOF 

docker镜像相关指令

下载镜像(在线) 

docker pull 镜像名

 例如:docker pull mysql

浏览本地镜像

docker images

查看镜像详情

docker inspect 镜像名/镜像id 

查看历史镜像

docker history 镜像名 

一个镜像由多个层(layer)组成,通过此指令可查看各个层的创建信息

导出镜像文件

将下载好的镜像文件保存到本地

hello-world为一个镜像,hello-world.tar.gz是保存到本地的镜像文件

docker save  hello-world | gzip > hello-world.tar.gz  

导出镜像文件(离线)

也可看作是离线下载镜像文件,需要在 hello-world.tar.gz文件所在的根目录

docker load <  hello-world.tar.gz

 运行镜像

docker run 镜像名

镜像运行会默认启动一个容器

删除镜像

前提是该镜像下没有容器,否则使用-f强制删除

docker image rm 镜像名/镜像id

docker容器相关指令

创建并启动容器

docker run -it 镜像名/镜像id bash 

-it,i表示交互式操作,t表示终端

bash表示进入终端,基于交互式进行操作

查看docker中的容器

查看运行中的容器

docker ps  

查看所有容器

docker ps -a 

查看容器日志

容器在创建是会记录日志,通过以下指令查看日志,若容器启动不起来,通过日志拍错

docker logs 容器id

停止,启动,重启容器

docker stop/start/restart 容器id

进入指定容器

docker exec -it 容器id bash

退出容器

exit 

如果是容器创建时进入了容器,退出时,容器就会关闭

如果是容器已创建,进入容器,退出后,容器不会关闭

删除容器

删除指定容器,前提是容器要关闭,否则加-f强制删除

docker rm 容器id

删除没有启动的容器

docker prune

docker数据管理相关指令

容器中管理数据的方式:

1)数据卷

2)挂在主机目录

数据卷操作

创建数据卷

docker volume create 数据卷名

查看所有数据卷

docker volume ls

查看指定数据卷信息 

docker volume inspect 数据卷名

[
    {
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/container-vol/_data",
        "Name": "container-vol",
        "Options": {},
        "Scope": "local"
    }

Mountpoint为宿主机的数据卷路径

启动挂载数据卷的容器

第一种方式

docker run -it --mount source=数据卷名,target=容器挂载目录 镜像名 bash

 第二种方式

docker run -it -v 数据卷名:容器挂载目录 镜像名 bash

删除数据卷

删除指定数据卷,数据卷被容器挂载则不能删除

docker volume rm 数据卷名

删除所有没有被容器使用的数据卷

docker volume prune

挂载主机目录

docker run -v 宿主机目录路径:容器挂载目录路径 镜像名 bash

如果宿主机目录不存在,docker会自动创建该目录

查看挂载目录信息

docker inspect 容器id 

...

"Mounts": [
    {
        "Type": "bind",
        "Source": "/usr/app",
        "Destination": "/opt/app",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    }
],

...

Source为宿主机挂载路径

Destination为容器挂载路径

Docker镜像制作

我们可以将一些文件通过Dockerfile文件描述,再进行build生成自定义镜像

在这里插入图片描述

 注意:所有的自定义镜像都要基于centos镜像

准备工作

1.centos:7镜像

2.jdk8压缩文件,linux版本

创建Dockerfile文件

在jdk8压缩文件的根文件夹

vim Dockerfile

输入以下内容

FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker
ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51 \
    PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH
CMD ['bash'] 

 from就是引入centos:7镜像,所必须要有名为centos:7的镜像

add是添加jdk压缩包,压缩包后跟的是放此文件容器的目录

ENV为容器的环境信息

CMD为启动容器默认添加的指令为bash,如果启动容器最后有指令,该指令会被覆盖

创建jdk镜像文件

docker build -t jdk:8 .

-t表示镜像名,"."表示表示构建过程中从当前目录寻找文件,所以一定要在自定义镜像的目录下执行该指令

进入jdk镜像文件的容器后,用 java -v查看容器是否正常 

docker容器互联相关指令

Docker中纯在多个容器时,容器与容器之间通常需要通讯,一般采用以下两种方式

1)两个容器通过宿主机通讯(容器中的端口可以映射到宿主机上,指令-p)

2)两个容器通过虚拟网络进行通讯,但我们必须要创建虚拟网络

在这里插入图片描述新建虚拟网络

docker network create -d bridge t-net

-d为网络类型,默认就是bridge

t-net为虚拟网络的名字

查看网络信息

查看所有网络信息

docker network ls 

查看指定网络信息

 docker inspect 网络id

创建容器

docker run -it --name 容器名 --network 虚拟网络名  镜像名

基于同一个镜像创建两个不同容器都加入同一个虚拟网络中 

测试网络是否互通

进入取其中一个容器

ping 容器1

ping 容器2 

两个指令都显示如下内容说明连接成功 

 [root@35569c623c4c /]# ping app1
PING app1 (172.18.0.2) 56(84) bytes of data.
64 bytes from 35569c623c4c (172.18.0.2): icmp_seq=1 ttl=64 time=0.577 ms
64 bytes from 35569c623c4c (172.18.0.2): icmp_seq=2 ttl=64 time=0.061 ms
64 bytes from 35569c623c4c (172.18.0.2): icmp_seq=3 ttl=64 time=0.066 ms
......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值