前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker使用学习笔记

docker使用学习笔记

作者头像
逝兮诚
发布2019-11-02 20:54:29
8740
发布2019-11-02 20:54:29
举报
文章被收录于专栏:代码人生代码人生

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/luo4105/article/details/102837587

docker介绍

docker是个容器,采用沙盒启动,类似虚拟机。

docker的架构是C/S,远程仓库存放image(镜像),本地下载image(镜像),并根据image(镜像)本机创建container(容器),一个容器就是一个运行的系统。

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

docker可以执行--help来查看命令API

代码语言:javascript
复制
docker start --help
在这里插入图片描述
在这里插入图片描述

docker下载后需要启动守护进程,它会跑着本机后台,启动方式 - 启动docker.app

代码语言:javascript
复制
open /Applications/Docker.app

macos通过命令行启动docker后台服务

通过 launchctl 查看 docker server, 记住docker server 名

代码语言:javascript
复制
launchctl list | grep docker

111117   0       com.docker.docker.2388

然后关闭和启动它。

代码语言:javascript
复制
launchctl stop com.docker.docker.2388 && launchctl start com.docker.docker.2388
容器(container)

docker创建容器并启动命令

代码语言:javascript
复制
docker run ubuntu:15.10 /bin/echo "Hello world"

docker会在本地找到ubuntu:15.10镜像并启动容器,容器使用bin/echo打印"Hello world"。

查看所有容器

代码语言:javascript
复制
docker ps -a
代码语言:javascript
复制
docker ps -a

CONTAINER ID    IMAGE                                   COMMAND         CREATED       STATUS              PORTS                                                        NAMES

b10c13741118    ubuntu:15.10                                "/bin/bash"       56 minutes ago   Exited (100) 54 minutes ago                                                              hardcore_dewdney

cc36ecdbfdd1    ubuntu:15.10                                "/bin/sh -c 'while t…"  About an hour ago  Exited (137) About an hour ago                                                            practical_herschel
在这里插入图片描述
在这里插入图片描述

会列出所有容器,启动或者非启动的。COMMAND是启动命令,可以通过CONTAINER IDNAMES启动、关闭、删除指定容器,ports是端口绑定,如0.0.0.0:80->80/tcp就是本地容器80端口绑定到本地80端口。

代码语言:javascript
复制
docker start 73d44474e7a0
73d44474e7a0
docker stop 73d44474e7a0
73d44474e7a0
docker rm 73d44474e7a0
73d44474e7a0

rm只能删除未启动的容器

查看容器日志

代码语言:javascript
复制
docker logs 73d44474e7a0
docker logs -f 73d44474e7a0

-f是实时监控打印。

进入容器

进入容器实际是进入容器并使用/bin/bash终端应用,使用exec命令

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
docker exec -it 73d44474e7a0 /bin/bash

也可以在容器中安装ssh工具进行连接。

镜像(image)

镜像就是一个操作系统的模版,根据镜像docker生成一个又一个容器。镜像放在docker远程仓库中,与mvn,git类似。

查看本地镜像

代码语言:javascript
复制
docker images
在这里插入图片描述
在这里插入图片描述

repository是镜像名,通过repository生成容器;image_id是镜像id,可以通过image_id删除镜像。

删除镜像

代码语言:javascript
复制
docker image rm dcba8021e01d6549a1ae8feabc5e1eca5cf746c1

生成容器

代码语言:javascript
复制
docker run -i -t ubuntu
代码语言:javascript
复制
docker run -i -t ubuntu:15.10

如果不指定版本,它会下载最新版本镜像并生成容器启动。-t是Allocate a pseudo-TTY,一个远程连接的终端。

生成镜像

对于修改的容器,可以生产自定义镜像

代码语言:javascript
复制
docker commit 0e143e309026ed84d489f87757d20f625aafb4c5226ec5bed5902f53db5e2bc5 ubuntu/luocheng
在这里插入图片描述
在这里插入图片描述

查看更多命令

代码语言:javascript
复制
docker image --help
在这里插入图片描述
在这里插入图片描述

搜索网上镜像

代码语言:javascript
复制
docker search python
在这里插入图片描述
在这里插入图片描述

下载镜像

代码语言:javascript
复制
docker pull python
dockerFile

dockerFile是一个构建docker镜像的命令行文件,里面的指令告诉docker如何去下载并配置镜像。

代码语言:javascript
复制
FROM nginx:1.15.12

COPY ./nginx.conf/total.conf /etc/nginx/conf.d/default.conf
COPY ./run.sh /app/run.sh

EXPOSE 80

CMD ["/app/run.sh"]

FROM是镜像来源,copy是要执行的操作,EXPOSE是暴露端口,cmd是要执行的命令。

代码语言:javascript
复制
docker build luocheng/ngnix .

luocheng/ngnix是镜像名,.是镜像文件所在的目录。

docker-compose

docker-compose是一个支持批量启动容器的自动化工具。需要定义一个.yml文件,里面写好将要执行的命令,一般是通过dockerfile构建镜像和容器,并启动它们,docker-compose执行这个.yml文件,将文件中的镜像和容器都构建号并打开。

代码语言:javascript
复制
services:
  redis:
    image: redis:4.0
    volumes:
      - redis-data:/data
    ports:
      - "6379:6379"
  mariadb:
    image: mariadb:10.0
    environment:
      - MYSQL_ROOT_PASSWORD=luocheng123
      - MYSQL_USER=luocheng
      - MYSQL_PASSWORD=luocheng123
      - MYSQL_DATABASE=luocheng
      - TZ=Asia/Shanghai
    volumes:
      - ./mysql/conf.d:/etc/mysql/conf.d
      - ./mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
      - mysql-data:/var/lib/mysql
    ports:
      - "3306:3306"

volumes:
  redis-data: {}

docker-compose还有一些自定义命令。

查看打印日志

代码语言:javascript
复制
docker compose logs helloworld

启动项目

代码语言:javascript
复制
docker compose start helloworld

更新并启动项目

代码语言:javascript
复制
docker-compose up helloworld
docker特效和原理

docker运行于操作系统,但与操作系统共用磁盘,内存,这使得这种虚拟化技术可以让一台服务器上部署很多个docker容器,而不像虚拟机内存和磁盘与操作系统完全分开,不能共用。

docker虽然共用内存,磁盘,但是容器之间不能直接通信,访问,是完成独立的;在容器内使用ps命令,只能看到该容器的进程,无法看到其他容器的进程,说明它们的进程也是独立分开的;网络也是分开的;还能归约docker对硬件的使用,如设置几个cpu,设置最大多少内存。

隔离用的技术是linux的命名空间,这个命名空间和多用户登陆类似。硬件资源的控制和管理使用linux系统的CGroups功能。docker的核心虚拟化功能都是使用linux自带的功能。就好像coding的核心功能也是git文件版本管理,它做的是git外业务,展示等。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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