0


ubuntu上Docker的下载和使用

看到这篇文章的自然是不需要我再赘述什么是Docker等等基础知识,但是有必要附上文章中的一些信息:

  1. Docker镜像仓库——Docker Hub:

https://hub.docker.com/

  1. 虚拟机系统是Ubuntu20.04
  2. ubuntu上的截图软件是火焰截图

**

注:以下命令在root用户下使用

**

卸载和安装

卸载

apt-get remove docker docker-engine docker.io containerd runc

下载

获取

apt-getinstall apt-transport-https ca-certificates curl gnupg-agent software-properties-common

添加软件源的GPG秘钥

curl-fsSL https://download.docker.com/linux/ubuntu/gpg |sudo apt-key add -

安装存储库

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu artful stable"

安装Docker

apt-getinstall-y docker-ce

测试

执行命令——无需知道意思,这里只做大概标注,这些命令在下面都会详细讲

docker run hello-world

在这里插入图片描述
出现如上结果就说明docker下载成功!

换源

vim /etc/docker/daemon.json

或者使用gedit编译器

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

如下是几个镜像:

Docker中国区官方镜像
https://registry.docker-cn.com
网易
http://hub-mirror.c.163.com
ustc 中国科技大学
https://docker.mirrors.ustc.edu.cn
阿里云容器 服务(阿里云得到的是一个专属的加速链接)
https://cr.console.aliyun.com/

错误修正

在重启ubuntu后,docker启动失败,在执行docker命令时会报错

Job for docker.service failed because the control process exited with error code.

在多方查找之后发现是自己的

/etc/docker/daemon.json

文件在配置镜像源的时候写错了,因此一直启动失败。

基本命令

下面记录的只是基本的常用命令,可以使用help查看具体操作

docker<command>--help

查看存在的镜像

docker images

images命令

拉取镜像

镜像拉取可以理解为有一个仓库,这个仓库是由官方和许多管理员维护,他们会在仓库里放上自己产品的镜像并不定时更新,而拉取就是拷贝一份指定的镜像到本地的docker里面,类似于Maven,而Docker的镜像仓库就是Docker Hub;

docker pull <image>:<tag>

其中image是镜像名称,tag是标签——或者叫版本号,如:
拉取nginx——默认是拉取的latest

docker pull nginx

导出和导入镜像

导出

docker save -o<filename.tar><image>

在这里插入图片描述

导入

docker load -i<tar文件>

在这里插入图片描述

运行镜像

简单运行

docker在run镜像的时候自动为它们创建一个容器

docker run <image>:<TAG>

如上我的镜像有3个,倘若它们的TAG是latest,则可以直接执行

docker run <image>

否则需要加上TAG,不然会提醒不存在,然后自动拉取latest版本的镜像,如:
在这里插入图片描述自动拉取的latest版本的镜像可能和我们所需要的并不一致,因此在运行一定不要忘记考虑TAG

复杂运行

因为镜像的配置不同,针对不同的镜像可以有不同的命令,如:
复杂拉取
如上是一个启动nginx镜像的命令——因为我的镜像默认是latest所以没有指定TAG,其中

--name

指定容器的名称,

-d

设置为隐式运行,

-p

指定端口号,

8081:80

代表将容器的80端口映射到宿主机的8081端口——现在docker是跑在我的虚拟机上:
在这里插入图片描述

如上两张图已经很显然的说明白了所谓端口映射是怎么回事——即通过宿主机指定的端口可以访问到docker容器所提供的服务的端口
不同镜像的命令不可能都记住,因此需要用到Docker Hub
在这里插入图片描述
如图,是nginx镜像的使用方法,其他镜像亦是如此。

查看容器

dockerps


查看所有容器——包括已经暂停的容器

dockerps-a

在这里插入图片描述

暂停和恢复容器

暂停

docker pause <容器ID>

恢复运行

docker unpause <容器ID>

在这里插入图片描述

停止和启动容器

停止

docker stop <容器ID/容器名>

重新启动停止的容器

docker start <容器ID/容器名>

在这里插入图片描述

删除

删除镜像
docker rmi <image>

在这里插入图片描述
上述命令用于一个未被运行的镜像,

倘若一个镜像执行了run命令,它便是被一个容器所属的,不能够直接删除,哪怕将容器暂停

如图:
在这里插入图片描述

删除容器
dockerrm<容器ID/容器名称>

删除容器和镜像的区别就在于rm是否带有i,这是很好理解的——要删除images就需要用rmi

有必要强调在删除容器之前必须先要暂停容器,否则会删除失败
强制删除
dockerrm-f<容器ID/容器名>

在这里插入图片描述

进入容器

dockerexec<容器ID>

常用的会是:

dockerexec-it<容器ID>bash

退出容器

exit

在这里插入图片描述
在这里插入图片描述

因为进入容器内部操作是很不方便的,所以便有了数据卷!

数据卷(volume)

基本操作

数据卷挂载是一种用于容器持久性数据存储和共享的机制。它允许容器在宿主机之间共享文件和目录,以及在容器的不同启动之间保留数据。
**

通过数据卷挂载,你可以将容器内的数据复制到宿主机,或者将宿主机上的数据备份到容器内

**

docker volume <command>[volume名称]
create

:创建一个volume

inspect

:显示一个或多个volume信息

ls

:列出所有的volume

prune

:删除所有未使用的volume

rm

:删除一个或者多个指定的volume
在这里插入图片描述
示例操作
在这里插入图片描述

数据卷挂载

在run镜像时,使用

-v

参数,指定挂载位置
示例如下:
在Docker Hub查找到nginx的html在容器中的位置时

/usr/share/nginx/html

在这里插入图片描述
启动nginx

docker run --name mn -p80:80 -v html:/usr/share/nginx/html -d nginx

挂载时如果指定的数据卷不存在会自动创建数据卷
在这里插入图片描述
**

数据卷挂载耦合度低,由docker自动管理,但是不方便找

**

目录挂载

首先下载/导入mysql镜像,在指定位置创建要挂载的宿主机文件或者文件夹

如图,在conf文件夹中在存储一个hmy.cnf配置文件
在Docker Hub查找到mysql镜像的配置文件夹和数据存储文件夹:
在这里插入图片描述
在这里插入图片描述
再启动mysql时进行挂载(“\”是换行符):

docker run \--name mm \-eMYSQL_ROOT_PASSWORD=123456\-p3308:3306 \-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \-v /tmp/mysql/data:/var/lib/mysql \-d mysql:5.7.25

在这里插入图片描述
如图,宿主机中的mysql下的文件和文件夹已经成功挂载
在这里插入图片描述
在本地PC尝试连接也成功
在这里插入图片描述
**

目录挂载方便查找,但是需要自己维护,耦合度高

**

自定义镜像

镜像是分层结构,每一层称为一个Layer

  • BaseImage层:包含基本的系统函数库、环境变量、文件系统
  • Entrypoint:入口,是镜像中应用启动的命令
  • 其它:在BaseImage基础上添加依赖、安装程序、完成整个应用的安装和配置
  1. 使用官方的基础镜像作为起点——也可以是别人做好的,更简单 FROM ubuntu:20.04
  2. 维护者信息 LABEL maintainer=“your_email@example.com
  3. 运行命令来更新系统并安装软件包 RUN apt-get update && apt-get install -y software-properties-common && apt-get clean
  4. 复制本地文件到容器中 COPY ./app /app
  5. 设置环境变量 ENV APP_VERSION=1.0
  6. 暴露容器的端口 EXPOSE 80
  7. 容器启动时执行的命令 CMD [“python”, “/app/main.py”]
  8. 镜像中应用的齐东明路,容器运行时调用 ENTRYPOINT java -jar xx.jar

示例

# 指定基础镜像
FROM ubuntu:20.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local

# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar

# 安装JDK
RUN cd$JAVA_DIR\&&tar-xf ./jdk8.tar.gz \&&mv ./jdk1.8.0_144 ./java8

# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin

# 暴露端口
EXPOSE 8090# 入口,java项目的启动命令
ENTRYPOINT java-jar /tmp/app.jar

准备好dockerfile和两个需要用到的文件

docker build -t mdocker:1.0 .

在这里插入图片描述
构建完成后查看镜像
在这里插入图片描述
说明Dockerfile构建镜像成功!

标签: ubuntu docker linux

本文转载自: https://blog.csdn.net/weixin_53811934/article/details/132724870
版权归原作者 竹玄羽 所有, 如有侵权,请联系我们删除。

“ubuntu上Docker的下载和使用”的评论:

还没有评论