前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker 介绍、核心概念、常用命令

Docker 介绍、核心概念、常用命令

作者头像
桑鱼
发布2020-03-18 15:13:23
3830
发布2020-03-18 15:13:23
举报

Docker 介绍

Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发到任何流行的Linux机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低

Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。运行中的这个镜像称为容器,容器启动后非常快速。

Docker 核心概念

  • docker镜像 (Images) 用于创建docker容器的模板,开发者可上传
  • docker容器 容器是独立运行的一个或一组应用。发布的镜像,使用者运行这个镜像称为容器,一个镜像可以运行多个容器
  • docker客户端 客户端通过命令行或者其他工具使用DockerAPI 与Docker的守护进程通信,就是说连接docker主机进行操作
  • docker主机(Host) 一个物理或者虚拟的机器用于执行Docker守护进程和容器,可以理解为安装了Docker程序的机器
  • docker仓库 Docker仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub https://hub.docker.com/ 提供了庞大的镜像集合供使用

使用Docker的步骤:

1) 安装Docker 2)去Docker仓库找到需要软件对应的镜像 3)使用Docker这个镜像,这个镜像就会生成一个Docker容器 4)对容器的启动停止就是对软件的启动停止

Docker的常用命令

(此处以Mysql为例)

1、打开Docker Hub,查看可用的 MySQL 版本

默认是最新版本 mysql:latest ,下面还有其他可用的版本,按照需要复制红框的内容,然后命名行输入

命令行查看可用版本

$  docker search mysql
NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   9164                [OK]                
mariadb                           MariaDB is a community-developed fork of MyS…   3263                [OK]                
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   677                                     [OK]
centos/mysql-57-centos7           MySQL 5.7 SQL database server                   70                                      
mysql/mysql-cluster               Experimental MySQL Cluster Docker images. Cr…   63                                      
centurylink/mysql                 Image containing mysql. Optimized to be link…   61                                      [OK]
deitch/mysql-backup               REPLACED! Please use http://hub.docker.com/r…   41                                      [OK]
bitnami/mysql                     Bitnami MySQL Docker Image                      36                                      [OK]
...

2、拉取镜像

// 拉取官方的最新版本的镜像
$ docker pull mysql:latest
// 也可使用默认拉取最新版本镜像
$ docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
6d28e14ab8c8: Pull complete 
dda15103a86a: Pull complete 
55971d75ab8c: Pull complete 
f1d4ea32020b: Pull complete 
61420072af91: Pull complete 
05c10e6ccca5: Pull complete 
7e0306b13322: Pull complete 
900b113c001e: Pull complete 
06cd07c30bf4: Pull complete 
df0d65aee5aa: Pull complete 
53eeb6e0335c: Pull complete 
6cf8f9563e97: Pull complete 
Digest: sha256:f91e704ffa9f19b9a267d9321550a0772a1b64902226d739d3527fd6edbe3dfe
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest

可能会出现的异常,在拉取镜像的时候出现下面的错误

$ docker pull tomcat
Error saving credentials: error storing credentials - err: exit status 1, out: `The user name or passphrase you entered is not correct.`

解决方法:使用下面的命名,然后根据提示输入用户名和密码登录即可,如果忘记用户名或密码,或者没有的,在官网注册或找回密码就可以了

$ docker login

3、查看本地镜像

$ docker images
REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
mysql                                           latest              c8ad2be69a22        2 days ago          465MB

4、运行容器 ,就是刚刚安装的镜像

$ docker run -itd --name mysql-test -p 6606:6606 -e MYSQL_ROOT_PASSWORD=123456 mysql
5aa405af510f10336d9f34d5f8a7b0865035c0f1c855fc32f1f24ff5fbb6e263
// -p 3306:3306 :表示映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 , 访问到 MySQL 的服务
// MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码
// --name 设置容器名称
// -d 后台运行
//  -t让docker分配一个伪终端并绑定到容器的标准输入上
// -i则让容器的标准输入保持打开.

查看运行的容器

$ docker ps

有时候会发现运行容器后,使用docker ps却没有显示

// 使用命令查看所有运行过的容器
$ docker ps -a
CONTAINER ID        IMAGE                                                 COMMAND                  CREATED             STATUS                           PORTS                                                                                                                      NAMES                                                                                                                        
d1b20d117a73        rabbitmq:management                                   "docker-entrypoint.s…"   5 days ago          Exited (255) About an hour ago   0.0.0.0:4369->4369/tcp, 0.0.0.0:5671-5672->5671-5672/tcp, 0.0.0.0:15671-15672->15671-15672/tcp, 0.0.0.0:25672->25672/tcp   myrabbit                                                                                                                                                                                 

由上图可以看出这个容器不是没有运行,而是运行过然后自动退出了。可以查看日志来观察退出的原因

// 根据CONTAINER ID查看对应容器日志
$ docker logs  [CONTAINER ID]
// 根据CONTAINER ID删除对应容器
$ docker rm [CONTAINER ID]
// 删除所有的容器
$ sudo docker container prune
Password:
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y

5、停止容器docker stop [CONTAINER ID]、启动容器 docker start [CONTAINER ID]

// 停止容器
$ docker stop 5aa405af510f
5aa405af510f

//启动容器
$ docker start  5aa405af510f
5aa405af510f
pengyapandeMacBook-Air:WebDriverAgent pengyapan$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                         NAMES
5aa405af510f        mysql               "docker-entrypoint.s…"   3 minutes ago       Up 3 seconds        3306/tcp, 33060/tcp, 0.0.0.0:6606->6606/tcp   mysql-test

6、使用一个镜像启动多个容器,互相独立

$ docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
50e431f79093: Pull complete 
dd8c6d374ea5: Pull complete 
c85513200d84: Pull complete 
55769680e827: Pull complete 
e27ce2095ec2: Pull complete 
5943eea6cb7c: Pull complete 
3ed8ceae72a6: Pull complete 
91d1e510d72b: Pull complete 
98ce65c663bc: Pull complete 
27d4ac9d012a: Pull complete 
Digest: sha256:2c90303e910d7d5323935b6dc4f8ba59cc1ec99cf1b71fd6ca5158835cffdc9c
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
$ docker images
REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
tomcat                                          latest              4e7840b49fad        2 days ago          529MB
$ docker run -d -p 8889:8080 tomcat
d608a9214b0059aa599d740c305251da8039dfc630b1fa6926f640561b6ff70e
$ docker run -d -p 8887:8080 tomcat
e1c801d0d780030e4246fd33efee206a361224f71588aa67470dbc61b9991d29
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                         NAMES
e1c801d0d780        tomcat              "catalina.sh run"        11 seconds ago      Up 9 seconds        0.0.0.0:8887->8080/tcp                        lucid_newton
d608a9214b00        tomcat              "catalina.sh run"        17 seconds ago      Up 14 seconds       0.0.0.0:8889->8080/tcp                        

7、其他高级操作

// 文件挂载
$ docker run --name mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 mysql 
// 把主机的/my/custom文件夹挂载到mysqldocker容器的/etc/mysql/conf.d文件里面,现在镜像内就可以共享宿主机里的文件了,改mysql的配置文件就只需要把mysql配置文件放在/my/custom
// 指定mysql的一些参数,指定mysql的编码集,建表的时候不需要再次指定了
$ docker run --name mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 mysql --character-set-server=utf8mb4 --collection-server=utf8mb4_unicode_ci
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Docker 介绍
  • Docker 核心概念
  • Docker的常用命令
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档