Docker的基础使用

简介

  • Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
  • 一个完整的Docker有以下几个部分组成
    • DockerClient客户端
    • Docker Daemon守护进程
    • Docker Image镜像
    • DockerContainer容器

安装Docker和Docker-Compose

本文所有指令均在CentOS8环境下执行

Docker

  • 使用官方脚本一键安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  • 使用daocloud一键安装
curl -sSL https://get.daocloud.io/docker | sh
  • 启动Docker服务
systemctl start docker # 启动docker服务 systemctl enable docker # 设置开机自启 systemctl stop docker # 关闭docker服务 systemctl status docker # 查看docker服务状态

Docker-compose

  • 从github上下载稳定版本
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
  • 创建软链
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  • 检查安装
docker-compose --version docker-compose version 1.24.1, build 4667896b

Docker使用

Docker的使用主要是围绕镜像(image)和容器(container)。
如果用面向对象来类比的话,镜像相当于类,容器相当于类的实例
一般从Dockerhub中查找我们需要的镜像

修改Docker镜像源

由于众所周知的原因,我们希望使用国内的下载源

vim /etc/docker/daemon.json

进入编辑模式后添加以下内容

{ "registry-mirrors":["https://mirror.ccs.tencentyun.com", "https://hub-mirror.c.163.com/"] }

重启dokcer服务

systemctl restart docker

查找镜像

比如我想要一个mysql镜像

  • 一个简单的办法是使用指令查找
docker search mysql

image.png

  • Dockerhub中搜索
    image.png
    • 点击进入第一个OFFICIAL IMAGE
    • 进入后进入到一个Description介绍页面,这一页会有介绍镜像的使用和各种tag的区别
    • Tag标签选项能搜索具体的标签
      image.png
  • 下载镜像
# docker pull <image>:<tag> docker pull mysql:8.0

启动一个容器来运行镜像

通常在镜像的首页会介绍如何使用和拓展这个镜像比如在Mysql镜像仓库中,可以看到How to use this image
image.png

  • Docker run 指令常用的参数(我常用的)
docker run [options] [image] [command] [args] [options]: --name containername # 给container一个命名 -e environment_variable=environment_value # 设置环境变量 --link container_name:alias_name # 链接两个容器,可以使用alias_name访问container_name,也可以获取到container_name的环境变量 -v local_folder:container_folder # 链接本机文件夹到容器内的文件夹,相当于文件夹共享 -p local_port:container_port # 通过本机端口访问容器端口,前提是容器必须expose这个端口 -d # 后台运行

比如运行mysql镜像

docker run -d -p 3307:3306 --name mysql -e MYSQL_ROOT_PASSWORD=password mysql:8.0 # 表示在后台以mysql:8.0镜像启动一个docker容器,并使用3307端口映射到容器的3306端口,设置一个叫MYSQL_ROOT_PASSWORD的环境变量为password(实际上被用做mysql的root用户密码),并将这个容器命名为mysql

常用指令

docker search <image> # 搜索image docker pull <image>:<tag> # 下载image docker run [options] <image> # 运行一个容器 docker stop <container_id/name> # 停止运行一个容器,可以使用容器id或名称 docker start <container_id/name> # 启动一个已停止的容器 docker restart <container_id/name> # 重启一个在运行的容器 docker rm <container_id/name> # 删除一个容器 docker ps # 列出所有在运行的容器 docker ps -a # 列出所有容器 docker images # 列出本地所有镜像 docker rmi <image> # 删除一个本地镜像
阅读(32)
评论(0)
updated@2020-11-16
评论区
目录