docker简单使用

本文介绍了Docker的基本概念,如客户端、守护进程、镜像和容器,并详细阐述了Docker的使用,包括常用命令、镜像操作和容器管理。通过Docker,开发者可以轻松打包应用及其依赖,并在不同环境中实现一致性部署。
摘要由CSDN通过智能技术生成

一、docker是什么

ocker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

可以看成是更精简更轻量化的虚拟机。可以解决环境难配的问题,环境冲突等。

二、docker架构

ocker主要有以下几部分组成:

  1. Docker Client 客户端
  2. Docker daemon 守护进程
  3. Docker Image 镜像
  4. Docker Container 容器
  5. Docker Registry 仓库

这里写图片描述

客户端和守护进程:

Docker是C/S(客户端client-服务器server)架构模式。
docker通过客户端连接守护进程,通过命令向守护进程发出请求,守护进程通过一系列的操作返回结果。
docker客户端可以连接本地或者远程的守护进程。
docker客户端和服务器通过socket或RESTful API进行通信。

Docker是一个C/S架构,在docker中,守护进程就是服务端,docker客户端向守护进程发送请求,可以是本地的也可以是远程的来访问.

我们通过客户端写命令,客户端将命令发送给守护进程,守护进程再将命令执行的结果返回给客户端.这就使我们能通过命令查看执行结果.

镜像、容器、仓库

镜像是容器的模板,容器是镜像的实例,仓库是保存镜像的地方

若想使用docker运行比如说tomcat开发web程序。首先从docker hub或者阿里的仓库拉取tomcat的镜像到本地,然后通过这个镜像创建一个容器,使用容器就能运行tomcat了。

镜像和容器的关系像类和实例的关系。

三、使用

安装教程网上有,安装完了,记得设置阿里云的加速器,把用户加入docker的group里就不用每次输入sudo了。

1、常用命令(待某日总结)

容器和主机之间数据拷贝

docker cp [OPTIONS] 主机文件路径 container_id:容器目录 # 主机文件拷贝到容器
docker cp [OPTIONS] container_id:容器文件路径 主机目录 # 容器文件拷贝到主机

2、docker命令

启动docker systemctl start docker
守护进程重启 sudo systemctl daemon-reload
重启docker服务 systemctl restart docker
重启docker服务 sudo service docker restart
关闭docker service docker stop
关闭docker systemctl stop docker
帮助 docker --help
docker run --help
查询版本 docker --version
查看docker信息 docker info

3、镜像命令

搜索镜像:
docker search name
docker search --filter=stars=3 name搜索star数大于3的name镜像

拉取镜像:
docker pull name[:tag]

列出本地镜像列表
docker images
docker images -a包括中间层
docker images -q列出镜像id,与-a连用

删除镜像
docker rmi iname删除某个镜像
docker rmi -f iname强制删除
docker rmi -f $(docker images -qa)删除所有镜像

更新镜像

docker commit -m="描述信息" -a="作者名字" containerid imagename[:tag] 以自己修改过的容器为基础创建一个新的镜像。
docker commit -m="add something" -a="xxyy" 9b9729bc4b6f xxyy/ubuntu:6.29不加tag默认就是latest

dockerfile创建镜像
docker build

4、容器命令

运行容器

docker run

--name 为容器指定名称
-i 交互模式
-t 为容器分配一个伪输入终端
-d 后台运行容器并返回容器id(即启动守护式容器)
-P 随机端口映射
-p 指定端口映射,格式如下4    ip:hostPort:containerPort
    ip::containerPort
    hostPort:containerPort(常用)
    containerPort
-v 容器容器卷  ## Bind mount a volume
    容器与主机数据的共享
--link建立容器之间的连接

--privileged

-it,--name交互式模式
docker run -it --name firstubuntu ubuntu以交互式模式运行容器,并指定名称。默认使用shell是bin/bash,相当于:docker run -it --name xx ubuntu /bin/bash

-d守护式容器,后台模式
docker run -d ubuntu启动守护式容器(没有交互式的终端),也就是后台模式。
docker容器后台运行,必须要有一个前台进程,不然就会退出,上面的命令输入后,容器开启,因为没有前台进程,所以立刻就关闭了。所以需要将运行的程序以前台进程的方式运行。如下:

docker run -d ubuntu ls
docker run -d ubuntu /bin/sh -c "while true;do echo hello;sleep 2;done"
此时容器仍以后台模式启动,但没有交互式界面,容器一直在后台不断执行打印命令。此时容器在后台干了什么可以使用容器日志命令查看。

docker run -d --name=server centos6.8-mysql /usr/bin/mysql_safe -d
这时候我们这个容器的名称为server,同时激活了数据库mysql的后台线程,让它不断的跑,这时候我们的容器也不会被关闭。不指定名称,会给随机的名称

docker run -d --name=server centos6.8-mysql /usr/bin/mysql_safe -d
这时候我们这个容器的名称为server,同时激活了数据库mysql的后台线程,让它不断的跑,这时候我们的容器也不会被关闭。不指定名称,会给随机的名称
-p -P端口映射
在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因为没有端口。
docker run -it -p 8888:8080 tomcat运行tomcat,指定端口为8888,此时打开浏览器输入localhost:8888即可进入tomcat。此时docker ps会显示端口为0.0.0.0:8888->8080/tcp,表示宿主机的8888端口映射到了tomcat的8080端口
docker run -it -P tomcat 运行tomcat,随机端口。tomcat的默认端口是8080(默认端口是作者设置的)
docker run -d -p 6666:8080 tomcat

-v数据容器卷
docker run -it -v 宿主机绝对路径目录:容器内目录 imagename
docker run -it -v /home/xianyi/work/caffe/project1:/project1 caffe连接宿主机的目录和虚拟机的目录
docker run -it -v /home/xianyi/work/caffe/project1:/project1:ro caffe只读:是虚拟机只读,不能改,而宿主机是可以修改的。

查询容器

docker ps默认列出running容器 list running containers
docker ps -a所有容器 list all containers
docker ps -l列出最近创建的容器 Show the latest created container (includes all states)
docker ps -q只列出id
docker ps -n 5列出最近5个容器

docker ps 界面,依次是
容器id            容器所属镜像          容器启动执行命令        创建时间            状态                          端口              名称
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
2818b36f0e4d        ubuntu              "/bin/bash"         19 minutes ago      Up 4 seconds(up表示正在启动,4s了)            thirsty_wing
退出容器

在容器的交互式界面退出有2种:
1. 停止并退出:在容器交互式的伪终端输入exit
2. 不停止退出:ctrl+P+Q 。此时只是暂时离开容器回到宿主机。

进入正在运行的容器并以命令行交互

docker execdocker attach
docker attach container进入正在运行的容器并以命令行交互。

docker exec -it container /bin/bash -t表示伪终端命令,-i表示标准输入,不加这个没法输入,功能同上。
docker execdocker attach更强大。
docker exec -t container ls -l /tmp进入容器,执行ls -l /tmp命令,退出并返回结果到宿主机。

二者的差异是attach直接进入容器启动命令的终端,不会启动新的进程
exec是在容器中打开新的终端,并且可以启动新的进程。

启动容器

docker start containers启动停止的容器
docker start -i containers以交互式模式启动停止的容器
docker restart container重启容器:重启,关闭再开启

停止容器

docker stop container停止正在运行的容器
docker kill container强制停止运行的容器

删除容器

docker rm containers删除已停止的容器
docker rm -f containers强制删除容器
docker rm -f $(docker ps -qa)删除所有容器
docker ps -qa | xargs docker rm同上

查看容器日志

docker logs -f -t --tail 3 container打印日志,带时间戳,跟随最新的3条日志。
-t加入时间戳,-f跟随最新的日志打印,--tail显示最后多少条

查看容器内的进程

toplinux下查看进程
docker top container查看容器内的进程

查看容器内部细节

dcoker inspect container

从容器拷贝数据到主机上

容器内的数据随着容器的删除就消失了,所以数据需要保存到主机

四、DockerFile

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值