Docker使用

本文档出自图灵学院公开课:图灵学院官网
菜鸟教程
Docker使用
安装参考:安装教程

安装参考:安装教程

卸载docker

1 yum remove ‐y docker*
2 rm ‐rf /etc/systemd/system/docker.service.d
3 rm ‐rf /var/lib/docker
4 rm ‐rf /var/run/docker

重启docker

1 systemctl daemon‐reload
2 systemctl restart docker

Docker常用命令
1.搜索镜像(以java举例)

 docker search java

在这里插入图片描述
以上列表包含五列,含义如下:

  • NAME:镜像仓库名称。
  • DESCRIPTION:镜像仓库描述。
  • STARS:镜像仓库收藏数,表示该镜像仓库的受欢迎程度,类似于 GitHub的 stars0
  • OFFICAL:表示是否为官方仓库,该列标记为[0K]的镜像均由各软件的官方项目组创建和维护。
  • AUTOMATED:表示是否是自动构建的镜像仓库

2.下载镜像

使用命令docker pull命令即可从 Docker Registry上下载镜像,执行该命令后,Docker会从 Docker Hub中的 java仓库下载最
新版本
的 Java镜像。如果要下载指定版本则在java后面加冒号指定版本,例如:docker pull java:8

docker pull java:8

3.列出镜像
使用 docker images命令即可列出已下载的镜像

docker images

在这里插入图片描述
以上列表含义如下

  • REPOSITORY:镜像所属仓库名称。
  • TAG:镜像标签。默认是 latest,表示最新。
  • IMAGE ID:镜像 ID,表示镜像唯一标识。
  • CREATED:镜像创建时间。
  • SIZE: 镜像大小。

4、删除本地镜像
强制删除加 -f

docker rmi java

删除所有镜像

docker rmi $(docker images ‐q)

容器相关命令
1、新建并启动容器
使用以下docker run命令即可新建并启动一个容器,该命令是最常用的命令,它有很多选项,下面将列举一些常用的选项。
-d选项:表示后台运行
-P选项:随机端口映射
-p选项:指定端口映射,有以下四种格式。

  • – ip:hostPort:containerPort
  • – ip::containerPort
  • – hostPort:containerPort
  • – containerPort

–net选项:指定网络模式,该选项有以下可选参数:

  • –net=bridge:默认选项,表示连接到默认的网桥。
  • –net=host:容器使用宿主机的网络。
  • –net=container:NAME-or-ID:告诉 Docker让新建的容器使用已有容器的网络配置。
  • –net=none:不配置该容器的网络,用户可自定义网络配置。
docker run ‐d ‐p 91:80 nginx

这样就能启动一个 Nginx容器。在本例中,为 docker run添加了两个参数,含义如下:
-d 后台运行
-p 宿主机端口:容器端口 #开放容器端口到宿主机端口
访问 http://Docker宿主机 IP:91/,将会看到nginx的主界面如下:
在这里插入图片描述
需要注意的是,使用 docker run命令创建容器时,会先检查本地是否存在指定镜像。如果本地不存在该名称的镜像, Docker就
会自动从 Docker Hub下载镜像并启动一个 Docker容器。
2、列出容器

docker ps

在这里插入图片描述
如需列出所有容器(包括已停止的容器),可使用-a参数。该列表包含了7列,含义如下

  • CONTAINER_ID:表示容器 ID。
  • IMAGE:表示镜像名称。
  • COMMAND:表示启动容器时运行的命令。
  • CREATED:表示容器的创建时间。
  • STATUS:表示容器运行的状态。UP表示运行中, Exited表示已停止。
  • PORTS:表示容器对外的端口号。
  • NAMES:表示容器名称。该名称默认由 Docker自动生成,也可使用 docker run命令的–name选项自行指定。
    3、停止容器
docker stop 容器id

4、强制停止容器

docker kill 容器id

5、启动已停止的容器

docker start 容器id

6、查看容器所有信息

docker inspect 容器id

7、查看容器日志

docker container logs 容器id

8、查看容器里的进程

docker top 容器id

9、容器与宿主机相互复制文件

  • 从容器里面拷文件到宿主机:
1 docker cp 容器id:要拷贝的文件在容器里面的路径 宿主机的相应路径
2 如:docker cp 7aa5dc458f9d:/etc/nginx/nginx.conf /mydata/nginx
  • 从宿主机拷文件到容器里面:
docker cp 要拷贝的宿主机文件路径 容器id:要拷贝到容器里面对应的路径

10、进入容器
使用docker exec命令用于进入一个正在运行的docker容器。如果docker run命令运行容器的时候,没有使用-it参数,就要用这
个命令进入容器。一旦进入了容器,就可以在容器的 Shell 执行命令了

 docker exec ‐it f0b1c8ab3633 /bin/bash (有的容器需要把 /bin/bash 换成 sh)

11.容器内安装vim、ping、ifconfig等指令

1 apt‐get update
2 apt‐get install vim #安装vim
3 apt‐get install iputils‐ping #安装ping
4 apt‐get install net‐tools #安装ifconfig

12、删除容器
只能删除已停止的容器

docker rm 容器id

强制删除所有容器(慎用)

docker rm ‐f $(docker ps ‐a ‐q)

使用Dockerfile构建Docker镜像
Dockerfile是一个文本文件,其中包含了若干条指令,指令描述了构建镜像的细节
先来编写一个最简单的Dockerfile,以前文下载的Nginx镜像为例,来编写一个Dockerfile修改该Nginx镜像的首页
1、新建一个空文件夹docker-demo,在里面再新建文件夹app,在app目录下新建一个名为Dockerfile的文件,在里面增加如
下内容:

1 FROM nginx
2 RUN echo '<h1>This is Tuling Nginx!!!</h1>' > /usr/share/nginx/html/index.html

该Dockerfile非常简单,其中的 FROM、 RUN都是 Dockerfile的指令。 FROM指令用于指定基础镜像, RUN指令用于执行命
令。
2、在Dockerfile所在路径执行以下命令构建镜像:

docker build ‐t nginx:tuling .

其中,-t指定镜像名字,命令最后的点(.)表示Dockerfile文件所在路径
3、执行以下命令,即可使用该镜像启动一个 Docker容器

docker run ‐d ‐p 92:80 nginx:tuling

4、访问 http://Docker宿主机IP:92/,可看到下图所示界面
在这里插入图片描述
Dockerfile常用指令

命令用途
FROM基础镜像文件
RUN构建镜像阶段执行命令
ADD 添加文件,从src目录复制文件到容器的dest,其中 src可以是Dockerfile所在目录的相对路径,也可以是一个 URL,还可以是一个压缩包
COPY拷贝文件,和ADD命令类似,但不支持URL和压缩包
CMD容器启动后执行命令
EXPOSE声明容器在运行时对外提供的服务端口
WORKDIR指定容器工作路径
ENV指定环境变量
ENTRYPINT容器入口, ENTRYPOINT和 CMD指令的目的一样,都是指定Docker容器启动时执行的命令,可多次设置,但只有最后一个有效。
USER该指令用于设置启动镜像时的用户或者 UID,写在该指令后的 RUN、CMD以及 ENTRYPOINT指令都将使用该用户执行命令。
VOLUME指定挂载点,该指令使容器中的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可共享给其他容器。当容器中的应用有持久化数据的需求时可以在Dockerfile中使用该指令。格式为:VOLUME[“/data”]。

注意:RUN命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件;CMD命令则是在容器启动后执行。另
外,一个 Dockerfile 可以包含多个RUN命令,但是只能有一个CMD命令。
注意,指定了CMD命令以后,docker container run命令就不能附加命令了(比如前面的/bin/bash),否则它会覆盖CMD命
令。

使用Dockerfile构建微服务镜像
以项目05-ms-eureka-server为例,将该微服务的可运行jar包构建成docker镜像

1、将jar包上传linux服务器/usr/local/docker-app/docker-demo/app/eureka目录,在jar包所在目录创建名为Dockerfile的文

2、在Dockerfile中添加以下内容

1 # 基于哪个镜像
2 From java:8
3 # 复制文件到容器
4 COPY microservice‐eureka‐server‐0.0.1SNAPSHOT.jar /app.jar
5 # 声明需要暴露的端口
6 EXPOSE 8761
7 # 配置容器启动后执行的命令
8 ENTRYPOINT java ${JAVA_OPTS} ‐jar /app.jar

3、使用docker build命令构建镜像

docker build ‐t microservice‐eureka‐server:0.0.1 .

格式: docker build -t 镜像名称:标签 Dockerfile的相对位置

在这里,使用-t选项指定了镜像的标签。执行该命令后,终端将会输出如下的内容
在这里插入图片描述4、启动镜像,加-d可在后台启动

docker run ‐d ‐p 8761:8761 microservice‐eureka‐server:0.0.1

使用 -v 可以挂载一个主机上的目录到容器的目录

 docker run ‐d ‐p 8761:8761 ‐v /log:/container‐log microservice‐eureka‐server:0.0.1

加上JVM参数:

1 # ‐‐cap‐add=SYS_PTRACE 这个参数是让docker能支持在容器里能执行jdk自带类似jinfo,jmap这些命令,如果不需要在容器里执
行这些命令可以不加
2 docker run ‐e JAVA_OPTS='‐Xms1028MXmx1028MXmn512MXss512KXX:MetaspaceSize=256M ‐XX:MaxMetaspaceSize=
256M' ‐‐cap‐add=SYS_PTRACE ‐d ‐p 8761:8761 microservice‐eureka‐server:0.0.1

5、访问http://Docker宿主机IP:8761/,可正常显示Eureka Server首页
在这里插入图片描述
将微服务镜像发布到远程镜像仓库
我们制作好了微服务镜像,一般需要发布到镜像仓库供别人使用,我们可以选择自建镜像仓库,也可以直接使用docker官方镜像
仓库,这里我们选择docker官方镜像仓库:https://hub.docker.com/
首先,我们需要在docke官方镜像仓库里注册一个账号
然后,在linux服务器上用docker login命令登录镜像仓库
在这里插入图片描述要把镜像推送到镜像仓库,需要将镜像前面加个分组名(一般就是docker hub的账户名),执行如下命令修改镜像名字

docker tag microservice‐eureka‐server:0.0.1 zhuge666/microservice‐eureka‐server:0.0.1

最后将镜像推送到远程仓库

docker push zhuge666/microservice‐eureka‐server:0.0.1

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值