前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker简单入门

Docker简单入门

原创
作者头像
古人诗
修改2021-01-15 10:53:27
1.2K0
修改2021-01-15 10:53:27
举报
文章被收录于专栏:最肯忘却最肯忘却

Docker总览

以下所有学习均使用腾讯云官方镜像Centos7.8,安装后无任何额外安装。***.com域名解析为我服务器的ip,后续不进行解释。

一、Docker基本操作

1.1安装docker

代码语言:txt
复制
#1.下载Docker的依赖环境
yum -y install yum-utils device-mapper-persistent-date lvm2
代码语言:txt
复制
#2.设置一下下载Docker的镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
代码语言:txt
复制
#3.安装docker
yum makecache fast
yum install -y docker-ce
代码语言:txt
复制
#4.启动,并设置为开机自动启动,测试
systemctl start docker
#设置开机自动启动
systemctl enable docker
#测试(参数不用过多纠结没后续1.4中有详细解释)
docker run -d -p 80:80 --name nginx_test nginx
#-d:在后台运行docker
#-p:端口映射,格式为[宿主机端口:容器端口]
#--name:自定义生成容器的名称
#nginx:使用nginx的镜像生成容器,默认从国外网站的
image.png
image.png

1.2Docker设置中央仓库

1.Docker官方的中央仓库:这个仓库镜像最全,但是下载速度比较慢

https://hub.docker.com/

2.国内有名的镜像网站:网易蜂巢(需要登陆),daoCloud(可以直接拉取)等等

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

https://hub.daocloud.io/ (推荐)

3.自建私服的方式进行拉取镜像,需要额外的资源和添加部分配置。

代码语言:txt
复制
#需要在/etc/docker/daemon.json,添加配置,(下列配置双引号可能为中文双引号,暂未测试)
{
		"registry-mirrors":["https://registry.docker-cn.com"]	
		"insecure-registries":["ip:prot"]
}
#配置后重启以下两个服务后生效
systemctl	daemon-reload
systemctl restart docker

1.3镜像的相关操作

代码语言:txt
复制
#1.拉取镜像到本地
docker pull 镜像名称[:tag]
#举个🌰
docker pull daocloud.io/library/nginx:1.13.1
代码语言:txt
复制
#2.查看本地全部的镜像
docker images
代码语言:txt
复制
#3.删除本地镜像
docker rmi 镜像的标示
代码语言:txt
复制
#4.镜像的导入导出
	#将本地镜像导出
	docker save -o 导出路径 镜像id
	#加载本地镜像
	docker load -i 镜像文件
	#修改镜像名称
	docker tag 镜像id 新镜像名称[:tag]

1.4容器的相关操作

代码语言:txt
复制
#1.运行容器
	#简单操作
	docker run 镜像的标识|镜像名称[:tag]
	#常用的参数
	docekr run -d -p 宿主机端口:容器端口 --name 容器名称 镜像标识|镜像名称[:tag]
	#举个🌰,在1.1中使用的到的
	docker run -d -p 80:80 --name nginx_test nginx
	#-d:在后台运行docker
	#-p:端口映射,格式为[宿主机端口:容器端口]
	#--name:自定义生成容器的名称,后面的nginx_test即为自定义的名称
	#nginx:使用nginx的镜像生成容器
代码语言:txt
复制
#2.查看正在运行的容器
docker ps [-aq]
#-a:查看全部的容器,包括没有运行的
#-q:只查看容器,获取对应的标识
代码语言:txt
复制
#3.查看容器日志
docker logs -f 容器id
#-f:可以查看日志最新的几行,类似tail -f
代码语言:txt
复制
#4.进入容器内部的命令行
docker exec -it 容器id|容器名称 /bin/bash
#-d:在后台运行
#-i:即使没有附加也保持STDIN 打开(暂时没搞清楚什么意思,不加无法打开)
#-t:分配一个伪终端
#/bin/bash:调用指令集,也可以只写bash即可,例如docker exec -it 容器id|容器名称 bash
代码语言:txt
复制
#5.删除容器(删除前需要先停止对应容器)
#停止指定容器
docker stop 容器id
#停止全部容器
docker stop $(docker ps -aq)
#删除指定容器
docker rm 镜像id
#删除全部容器
docekr rm $(docker ps -qa)
代码语言:txt
复制
#6.启动容器
docker start 容器id

二、Docker应用

2.1准备nginx容器

代码语言:txt
复制
#使用1.3中拉取到本地的nginx镜像即可(需要删除之前的测试容器,否则端口会占用,这里不进行阐述)
docker run -d -p 80:80 --name nginx_test daocloud.io/library/nginx
#nginx镜像生成后,先测试下nginx测试页有没有问题,如果没问题就进行网站配置,这里复制之前准备好的静态网站到容器内部
docker cp /Docker/. nginx_test:/usr/share/nginx/html
#cp:用来在宿主机和容器中拷贝数据
#/Docker/.   :这里的“/Docker”存放了准备的网站文件,“/.”意思为将对应目录下的所有文件复制到容器路径下,不加“.”则为复制目录,需要注意(后续本目录还会用到,不再进行解释)
#nginx_test:/usr/share/nginx/html:冒号前为容器id|容器名称,冒号后为容器对应路径
#这里常用nginx的可以知道一般默认的网站目录为/usr/share/nginx/html
image.png
image.png

2.2准备mysql容器

mysql仅做测试,我的nginx中没有需要用到数据库的地方

代码语言:txt
复制
#运行MySQL容器
docker -d -p 3306:3306 --name mysql_test -e MYSQL_ROOT_PASSWORD=root daocloud.io/library/mysql:5.7.4
#-e:指定MySQL启动时的参数,MYSQL_ROOT_PASSWORD=root为设置root用户的密码为root

2.3数据卷

【数据卷】将宿主机中一个目录映射到容器的目录当中。

为了部署2.1的网站,需要额外使用拷贝命令将宿主机内部的文件复制到容器当中,但是这种方法对于成百上千的容器操作量太过重复,因此可以使用【数据卷】的方法进行容器统一挂在宿主机指定目录。

可以在宿主机中操作目录中的内容,那么容器内映射的文件也会一起改变

代码语言:txt
复制
#1.创建数据卷
docker volume create 数据卷名称
#创建数据卷后,默认会存放在一个目录下/var/lib/docker/volumes/数据卷名称/_data
代码语言:txt
复制
#2.查看数据卷的详细信息
docker volume inspect 数据卷名称
代码语言:txt
复制
#3.查看全部的数据卷
docker volume ls
代码语言:txt
复制
#4.删除数据卷
docker volume rm 数据卷名称
代码语言:txt
复制
#5.应用数据卷
#当你映射数据卷时,如果数据卷不存在,Docker会帮你自动创建,同时会讲容器内部自带的文件(容器中的index.html),存储在默认的数据卷存放路径中。
docker run -v 数据卷名称:容器内部路径 镜像id
#直接指定一个路径映射到容器中,这个路径创建后也不会将容器内部的自带文件拷贝过来,需要自行手动添加。
docker run -v 路径:容器内部的路径 镜像id
#举个🌰,使用2.1的网站部署中,直接对/Docker的文件挂载到/usr/share/nginx/html中
docker run -d -p 80:80 --name nginx_test -v /Docker/:/usr/share/nginx/html daocloud.io/library/nginx

三、Docker自定义镜像

中央仓库上的镜像,也是Docker的用户自己上传的

代码语言:txt
复制
#1.创建一个Dockerfile文件,通过这个文件指定自定义镜像信息。
#Dockerfile文件中常用内容:
form:指定当前自定义镜像依赖的环境
copy:将相对路径下的内容复制到自定义镜像中
workdir:声明镜像的默认工作目录
cmd:需要执行的命令(在workdir下执行的,cmd可以写多个,但只以最后一个为准)
#举个🌰,可以在/Docker目录下编辑如下的Dockerfile,然后进行创建。
from daocloud.io/library/nginx
copy . /usr/share/nginx/html
#. 代表相对目录下所有文件

#2.在/Docker目录下通过Docker的命令制作镜像
docker build -t 镜像名称[:tag] 制作镜像后的存放路径
#-t,--tag:指定镜像名称和标签
#额外常用的build参数有:
#-f:指定要使用的Dockerfile路径
#--quiet, -q:安静模式,成功后只输出镜像 ID
#--cpu-shares:设置 cpu 使用权重
#--cpuset-cpus:指定使用的CPU id;
#--cpuset-mems:指定使用的内存 id;
#-m:设置内存最大值
image.png
image.png

使用自定义创建后,可直接访问我们部署的网站。

image.png
image.png

四、Docker-Compose

之前运行一个镜像,需要添加大量的参数。

可以使用Docker-Compose编写这些参数。

Docker-Compose可以帮助我们批量管理容器。

只需要通过一个docker-compose.yml文件去维护即可

4.1下载Docker-Compose

代码语言:txt
复制
#1.去github官网搜索docker-compose,下载1.24.1版本的Docker-Compose(下载较慢)
https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64
#建议使用wget直接下载到linux中
#2.将下载好的docker-compose-Linux-x86_64文件修改名称,同时给予文件可执行权限
mv docker-compose-Linux-x86_64 docker-compose
chmod 777 docker-compose
#3.为了方便后续使用,配置一个环境变量
#这里我将docker-compose移动到了/usr/local/bin中,同时修改文件/etc/profiel文件,将/usr/local/bin配置到$PATH中
mv docker-compose /usr/local/bin
vim /etc/profile
		export PATH=/usr/local/bin:$PATH
source /etc/profile

#5.测试一下
在任意目录下测试输入docker-compose,可执行成功说明已经生效
image.png
image.png

4.2Docker-Compose管理Nginx容器

yml文件以key:value方式来指定配置信息

多个配置信息以换行+缩进的方式来区别

在docker-compose.yml文件中,不要使用制表符,无法识别,全部都是空格

以下内容MySQL仅用来测试

代码语言:txt
复制
version: "3.1"
services: 
  mysql:        #服务的名称,自定义
    restart: always    #只要docker启动,那么这个容器就跟着一起启动
    image: daocloud.io/library/mysql:5.7.4  #指定镜像路径
    container_name: mysql  #指定容器名称
    ports:
      - 3306:3306  #指定端口号的映射
      - 7000:7000  #可以指定多个,这里不需要
    environment:
      MYSQL_ROOT_PASSWORD: root   #指定MySQL的ROOT用户登录密码
      TZ: Asia/Shanghai           #指定时区
    volumes:
      - /docker_nginx_mysql/mysql/data:/var/lib/mysql  #映射数据卷
  nginx:
    restart: always
    image: daocloud.io/library/nginx:1.13.1
    container_name: nginx
    ports:
      - 8080:80
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /docker_nginx_mysql/nginx/:/usr/share/nginx/html

4.3使用docker-compose命令管理容器

在使用docker-compose的命令时,默认会在当前目录下找docker-compose.yml文件

代码语言:txt
复制
#1. 基于docker-compose.yml启动管理的容器,将6.2的yml内容复制到/docker_nginx_mysql/docker-compose.yml文件中,同时在目录下进行启动
docker-compose up -d
image.png
image.png
代码语言:txt
复制
#2. 关闭并删除容器
docker-compose down
代码语言:txt
复制
#3. 开启|关闭|重启已经存在的有docker-compose维护的容器
docker-compose start|stop|restart
代码语言:txt
复制
#4. 查看由docker-compose管理的容器
docker-compose ps
代码语言:txt
复制
#5. 查看日志
docker-compose logs -f

4.4 docker-compose配置Dockerfile使用

使用docker-compose.yml文件以及Dockerfile文件在生成自定义镜像的同时启动当前镜像,并且由docker-compose去管理容器

需要注意的地方是指定文件路径时的目录设置,我的文件目录为.image_hexo/hexo和.image_hexo/Dockerfile,docker-compose.yml放在.image_hexo/docker-compose/下

image.png
image.png

docker-compose.yml

代码语言:txt
复制
#yml文件
version: '3.1'
services:
  hexo:
    restart: always
    build:          #构建自定义镜像
      context: ../  #指定dockerfile文件的所在路径,相对路径
      dockerfile: Dockerfile  #指定Dockerfile文件名称
    image: c246cd3dd41d
    container_name: hexo
    ports: 
      8081:80
    environment:
      TZ: Asia/Shanghai

Dockerfile文件

代码语言:txt
复制
from from daocloud.io/library/nginx:1.13.1
copy hexo/. /usr/share/nginx/html/

代码语言:txt
复制
#可以直接启动给予docker-compose.yml以及Dockerfile文件构建的自定义镜像
docker-compose up -d
#如果自定义镜像不存在,会自动帮助我们构建出自定义镜像,如果自定义镜像已经存在,会直接运行这个自定义镜像
#如果自定义镜像存在,需要重新构建的话,可以使用以下命令
#重新构建自定义镜像
docker-compose build
#运行前重新构建
docker-compose up -d --build

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Docker总览
  • 一、Docker基本操作
    • 1.1安装docker
      • 1.2Docker设置中央仓库
        • 1.3镜像的相关操作
          • 1.4容器的相关操作
          • 二、Docker应用
            • 2.1准备nginx容器
              • 2.2准备mysql容器
                • 2.3数据卷
                • 三、Docker自定义镜像
                • 四、Docker-Compose
                  • 4.1下载Docker-Compose
                    • 4.2Docker-Compose管理Nginx容器
                      • 4.3使用docker-compose命令管理容器
                        • 4.4 docker-compose配置Dockerfile使用
                        相关产品与服务
                        容器服务
                        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档