docker使用教程(一)

Docker是一种独特的虚拟化技术,与其他虚拟化产品不同的是Docker本身占用资源特别少。像VMware,KVM等产品要开启一台虚拟机就是完全的从系统内核起了一台与宿主机差不多同样的系统。

注册中心:超级码头,上面就是集装箱
镜像:集装箱
容器:运行起来的镜像

一、Docker的基本操作

1.1 安装docker

# 1.下载关于Docker的依赖环境
yum -y install yum-utils device-mapper-persistent-data lvm2
# 2.设置一下下载Docker的镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 3.安装Docker
yum makacache fast
yum -y install docker-ce
# 4.启动,并设置为开机自动启动
mkdir -pv /etc/docker

vim /etc/docker/daemon.json 
{
  "graph": "/data/docker",
  "storage-driver": "overlay2",
  "insecure-registries": ["registry.access.redhat.com","quay.io"],
  "registry-mirrors": ["https://q2gr04ke.mirror.aliyuncs.com"],
  "bip": "172.7.6.1/24",      >>>根据自己系统的ip可以自定义后两位
  "exec-opts": ["native.cgroupdriver=systemd"],
  "live-restore": true
}


systemctl start docker     //启动Docker服务

systemctl enable docker    //设置Docker开机自启

docker run hello-world     //测试,拉取镜像并运行为容器

1.2 DOCKER的中央仓库

1.Docker官方的中央仓库:这个仓库是镜像最全的,但是下载速度慢,原因是国外服务器。

https://hub.docker.com/

2.国内的镜像网站:网易蜂巢,DaoCloud……

https://c.163yun.com/hub#/home

http://hub.daocloud.io/ (推荐使用)

3.在公司会采用私服务的方式拉取镜像。(添加配置)
https://c.163yun.com/hub#/home
# 需要在/etc/docker/daemon.json
{
    "registry-mirrors": ["https;//registry.docker-cn.com"],
    "insecure-registries": ["ip:port"]
}
# 重启两个服务
systemctl restart daemon-reload
systemctl restart docker

1.3 镜像操作

# 1.拉取镜像到本地,标签可写可不写
docke pull 镜像名[:tag]
# 举个例子
docker pull daocloud.io/library/tomcat:8.5.15-jre8
# 2.查看本地全部镜像
docker images
# 3.删除本地镜像
docker rmi 镜像名称|ID

docker rmi -f 镜像名称|ID   //删除正在运行的容器的镜像
# 4.镜像的导入导出
docker save -o nginx.tar nginx:latest     //导出镜像
或 
docker save > nginx.tar nginx:latest 

docker load -i nginx.tar   //导入镜像
或
docker save > nginx.tar nginx:latest 

其中-o和>表示输出到文件,nginx.tar为目标文件,nginx:latest是源镜像名(name:tag)
# 5.修改镜像名称

docker tag 镜像名|ID 新镜像名称:版本 

1.4 容器操作

# 1.运行容器
docker run 镜像名称|ID[:tag]     //简单操作命令

docker run -d -p 宿主机端口:容器内端口 --name 容器名称 镜像名称|ID[:tag]     //常用操作命令

# -d:代表后台运行容器
# -p:为了映射当前宿主机系统内的端口到容器中
# --name:指定要运行容器的名称
# 2.查看容器运行状态
docker ps       //查看正在运行的容器

docker ps -a    //查看全部运行过的容器
# 3.查看容器的日志
docker logs -f 容器名称|ID 

# -f:可以滚动查看日志的最后几行
# 4.进入到容器内部
docker exec -it 容器名称|ID /bin/bash
# 5.停止删除容器
docker stop 容器名称|ID        //停止指定容器

docker stop $(docker -qa)    //停止全部容器

docker rm 容器名称|ID         //删除指定容器

docker rm $(docker -qa)     //删除全部容器

# -f:强制删除(运行中容器)
# 6.启动容器
docker start 容器名称|ID

1.5 其他操作

# 1.拷贝命令
docker cp 宿主机文件目录:容器目录

# 例如:把宿主机/home下的文件拷贝到容器的/目录下
docker cp /home/文件 容器名:/

# 2.打包容器为镜像
docker commit -p 容器名 要打包的镜像名
# 3.查看容器或者镜像的详细信息
docker 容器名称|ID inspect

docker 镜像名称|ID inspect

1.获取镜像

docker pull NAME[:TAG]

如果没有显示TAG,则默认是latest标签,也就是最新版本的镜像
在这里插入图片描述
2.查看镜像信息:
在这里插入图片描述

容器数据卷
什么是容器数据卷

将应用和环境打包成一个镜像!数据?如果数据都在容器中,那么容器如果删除,数据就会丢失,因此有一个新的需求数据持久化
容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地!
这就是卷技术!目录的挂载,将我们的容器内的目录,挂载到linux上面!
在这里插入图片描述
总结一句话:容器的持久化和同步操作!容器间也是可以数据共享的!

使用数据卷

方式一 直接使用命令来挂载 —v
docker run -it -v 主机目录,容器目录
docker run -it -v /home/ceshi:/home Centos /bin/bash
# 启动起来时候我们可以通过docker inspect 容器id

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
再来测试!

  1. 停止容器
  2. 宿主机上修改文件
  3. 启动容器
  4. 容器内的数据依旧是同步的
    在这里插入图片描述
    好处:我们以后修改只需要在本地修改即可,容器内会自动同步!
具名和匿名挂载
# 匿名挂载
-v 容器内路径
# docker run -d -P --nginx01 -v /ect/nginx nginx

# 查看所有的volume的情况
# docker volume ls

#local     0d1439b1ae68f7ad7226d1b2457559630ba93ba083292ff5f6b191b79dd2befc
#  这里发现,这种就是匿名挂载,我们在-v只写了容器内的路径,没有写容器外的路径

# 具名挂载
# docker run -d -P --name ncinx02 -v juming-nginx:/etc/nginx nginx
local               juming-nginx

# 通过 -v 匿名:容器路径 
# 查看卷的路径
# docker volume inspect juming-nginx

在这里插入图片描述
所有的docker容器内的卷,没有指定目录的情况下都是在:/var/lib/docker/

# 如何确定是具名挂载还是匿名挂载,还是指定路径挂载:
-v 容器内路径                      # 匿名挂载
-v 卷名:容器内路径 				  # 具名挂载
-v /宿主机路径:/容器内路径          # 指定路径挂载

拓展:

ro           readonly       #  只读
re           readwrite      #  只写

# 一旦这个设置了容器权限,容器对我们挂载出来的内容就有限定了!
docker run -d -P --name nginx02 -v  juming -nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v  juming -nginx:/etc/nginx:rw nginx

初识Dockerfile

Dockerfile 就是用来构建docker镜像的构建文件!命令脚本!
通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个个的命令,每个命令都是一层!

# 创建一个dockerfile文件,名字可以随机,建议dockerfile
# 文件中的内容
FROM centos

VOLUME ["volume01","volume02"]   
 
CMD echo "----end----"
CMD /bin/bash

# 这里的每一个命令,就是镜像的一层。

在这里插入图片描述

用Pycharm远程访问docker容器
docker run -itd -p 5000:8000 -p 8022:22 --name Darknet  -v /home/zg/Code:/home 03fd2203a0be  bash

在这里插入图片描述

docker run -p 8022:22 -v /home/zg/Mycode:/home --name="tensorflow" -itd nvcr.io/nvidia/cuda:11.2.0-cudnn8-devel-ubuntu18.04 /bin/bash

在这里插入图片描述
从容器创建一个镜像

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS说明:

  • -a :提交的镜像作者;
  • -c :使用Dockerfile指令来创建镜像;
  • -m :提交时的说明文字;
  • -p :在commit时,将容器暂停
docker commit c4f560325824 data_amplification:v1
docker commit -a "runoob.com" -m "my apache" a404c6c174a2  mymysql:v1 

打包一个镜像

docker save [OPTIONS] IMAGE [IMAGE...]
docker save -o data_change.tar data_amplification:v1

新服务器载入镜像
在这里插入图片描述

docker load [OPTIONS]
例:
docker load --input data_change.tar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
什么是Docker Docker 最初是dotCloud 公司创始人Solomon Hykes 在法国期间发起的一个公司内部项目, 它是基于dotCloud 公司多年云服务技术的一次革新,并于2013 年3 月以Apache 2.0 授权 协议开源,主要项目代码在GitHub 上进行维护。Docker 项目后来还加入了Linux 基金会, 并成立推动开放容器联盟(OCI)。 Docker 自开源后受到广泛的关注和讨论,至今其GitHub 项目已经超过4 万6 千个星标和一 万多个fork。甚至由于Docker 项目的火爆,在2013 年底,dotCloud 公司决定改名为 DockerDocker 最初是在Ubuntu 12.04 上开发实现的;Red Hat 则从RHEL 6.5 开始对 Docker 进行支持;Google 也在其PaaS 产品中广泛应用DockerDocker 使用Google 公司推出的Go 语言进行开发实现,基于Linux 内核的 cgroup,namespace,以及AUFS 类的Union FS 等技术,对进程进行封装隔离,属于操作 系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容 器。最初实现是基于LXC,从0.7 版本以后开始去除LXC,转而使用自行开发的 libcontainer,从1.11 开始,则进一步演进为使用runC 和containerd。 Docker容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极 大的简化了容器的创建和维护。使得Docker 技术比虚拟机技术更为轻便、快捷。 下面的图片比较了Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件 后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程 直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比 传统虚拟机更为轻便。
Docker 是一种开源的容器化平台,可以将应用程序和它们的依赖项打包到一个可移植的容器中,从而轻松部署到不同的环境中。以下是 Docker 使用的基本教程。 ## 安装 Docker 首先,您需要在您的计算机上安装 Docker。您可以在 Docker 官方网站上下载并安装适用于您的操作系统的 Docker。 ## 创建并运行容器 创建和运行容器的步骤如下: 1. 搜索要运行的容器镜像:您可以搜索 Docker Hub 上的容器镜像。例如,假设您要运行一个 Ubuntu 容器,则可以执行以下命令: ``` docker search ubuntu ``` 2. 下载容器镜像:要下载 Ubuntu 容器镜像,请执行以下命令: ``` docker pull ubuntu ``` 3. 运行容器:要运行 Ubuntu 容器,请执行以下命令: ``` docker run -it ubuntu /bin/bash ``` 该命令将在交互式模式下启动一个 Ubuntu 容器,并打开一个 Bash 终端。 ## 查看容器 要查看当前正在运行的容器,请执行以下命令: ``` docker ps ``` 如果要查看所有容器(包括已停止的容器),请执行以下命令: ``` docker ps -a ``` ## 停止和删除容器 要停止正在运行的容器,请执行以下命令: ``` docker stop <container_id> ``` 要删除容器,请执行以下命令: ``` docker rm <container_id> ``` ## 构建和发布镜像 要构建自己的容器镜像,请执行以下步骤: 1. 在 Dockerfile 中定义容器镜像的构建步骤。 2. 在 Dockerfile 所在的目录中执行以下命令来构建镜像: ``` docker build -t <image_name> . ``` 其中,`<image_name>` 是您要创建的镜像的名称。 3. 要发布您的镜像,请将其推送到 Docker Hub 或其他 Docker 注册表。要推送到 Docker Hub,请执行以下命令: ``` docker login docker tag <image_name> <dockerhub_username>/<image_name> docker push <dockerhub_username>/<image_name> ``` 其中,`<dockerhub_username>` 是您的 Docker Hub 用户名。 以上是 Docker 的基本使用教程。还有很多其他的命令和选项,您可以在 Docker 官方文档中找到更多信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值