为了账号安全,请及时绑定邮箱和手机立即绑定

docker快速上手

标签:
Docker

docker安装

安装请参考docker官网:https://docs.docker.com/engine/installation/linux/ubuntulinux/

容器相关命令

  • docker启动、重启、关闭

sudo docker start | restart | stop
  • 查看docker程序是否正常工作

sudo docker info
  • 创建一个交互式shell容器,并为容器命名,名字可以包含字符:a-z,A-Z,0-9,下划线,圆点,横线。用正则表示[a-zA-Z0-9_.-]

sudo docker run --name first_container -it ubuntu /bin/bash
  • 查看当前系统中的容器列表

docker ps -a
docker ps -a -l #列出最后一次运行的容器
  • 重新启动已经停止的容器

sudo docker start first_container
sudo docker start container_id #也可以用从其id启动sudo docker start container_name #重新启动一个容器
  • 创建守护式容器,使用-d参数,docker容器会在后台运行

sudo docker run --name container_name -d ubuntu /bin/bash
  • 停止守护进程

sudo docker stop container_name
  • 获取守护式容器日志

sudo docker logs container_name
sudo docker logs -f container_name #监控docker日志sudo docker logs --tail 10 container_name #获取日志最后10行sudo docker logs --tail 0 -f container_name #跟踪某个容器的最新日志而不必读取日志文件sudo docker logs -ft container_name #-t标志为每条日志加上时间戳,方便调试
  • 查看容器内的进程

sudo docker top container_name
  • 自动重启容器

sudo cocker run --restart=always --name container_name -d ubutu

--restart:always,on-failure
--restat=on-failure:5,自动尝试重启五次

  • 查看容器

sudo docker inspect container_name

docker inspect命令会对容器进行详细的检查,然后返回其配置信息,包括名称、命令、网络配置的数据,也可以用-f或者--format标志来选定查看结果。

sudo docker inspect --format='{{.State.Running}}' container_name#查看多个容器sudo docker inspect --format='{{.Name}} {{.State.Running}}' container_name_1 container_name_2

/var/lib/docker目录存放着docker镜像、容器以及容器的配置,所有的容器都保存在/var/lib/docker/containers目录下

  • 删除容器

sudo docker rm container_name | container_id

运行的docker容器是无法删除的,必须先通过docker stop或者docker kill命令停止容器,才能删除。

  • 删除全部容器(-a标志代表列出所有容器,-q表示只需要返回容器的ID。)

sudo docker rm `docker ps -a -q`

镜像相关命令

  • 列出docker镜像

sudo docker images

本地镜像都保存在dockers宿主机的/var/lib/docker目录下。镜像从仓库下载,镜像保存在仓库中,而仓库存在于Registry中,默认的Registry是由Docker公司运营的公共Registry服务,及Docker Hub

  • 拉取ubuntu镜像

docker pull ubuntu #拉取镜像docker pull ubuntu:14.04 #拉去tag为14.04的镜像

指定仓库的标签是一个好习惯,这样可以准确的制定容器来源于哪里。
Docker Hub有两种仓库:用户仓库和顶层仓库,用户仓库的镜像由Docker用户创建,顶层仓库由Docker内部人来管理。

  • 查看镜像

sudo docker images container_name
  • 查找镜像

sudo docker search container_name
  • 构建镜像

    sudo docker login
    #创建一个要进行修改的定制容器sudo docker run -i -t ubuntu /bin/bash#安装apache软件包apt-get -yqq update
    apt-get -y install apache2#退出当前容器#提交定制容器sudo docker commit 4aab3ce3cb86 jamtur01/appache2#检查新创建的镜像sudo docker images jamtur01/apache2#在提交镜像时指定更多的数据(包括标签)来详细描述所做的修改sudo docker commit -m="A new custom image" --author="James Turnbull" 4aab3ce3cb76 jamtur01/apache2:webserver#使用docker inspect查看新创建的镜像详细信息sudo docker inspect jamtur01/apache2:webserver#从提交的镜像运行一个新容器sudo docker run -t -i jamtur01/apache2:webserver /bin/bash
  1. 用docker的commit命令创建镜像
    基于ubuntu镜像创建一个新镜像

  1. 创建Docker Hub账号

  2. 登陆Docker Hub

用dockerfile构建镜像
并不推荐使用docker commit的方法来构建镜像,相反推荐使用Dockerfile的定义文件和docker build命令来构建镜像。Dockerfile使用基于DLS语法的指令来构建一个Docker镜像,之后使用docker build命令基于该dockerfile中的指令构建一个新的镜像。步骤:(我们将创建一个包含简单web服务器的docker镜像)

mkdir static_webcd static_web
touch Dockerfile
#第一个Dockerfile#Version:0.0.1FROM ubuntu:14.04MAINTAINER James Turnbull "james@example.com"
RUN apt-get update
RUN apt-get install -y nginx
RUN echo 'Hi, I am in your container' > /usr/share/nginx/html/index.html
expose 80
#运行Dockerfilecd static_web
sudo docker build  -t="jamtur01/static_web" .

使用docker build命令来构建新镜像,通过-t为新镜像设置了仓库和名称。在本例仓库为jamtur01,镜像名为static_web。建议为自己的镜像设置合适的名字以方便追踪和管理。也可以设置标签,如:

sudo docker build -t="jamtur01/static_web:v1" .
  上面告诉docker到本地目录中去找Dockerfile文件,也可以指定一个Git仓库的源地址来指定Dockerfile的位置。
sudo docker build -t="jamtur01/static_web:v1 git@github.com:jamtur01/docker-static_web
  • Docker从基础镜像运行一个容器。

  • 执行一条指令,对容器做出修改。

  • 执行类似docker commit的操作,提交一个新的镜像层。

  • Docker在基于刚提交的镜像运行一个新容器。

  • 执行Dockerfile中的下一条指令,直到所有指令都执行完毕。

  1. dockerfile指令解释
    Docker大体按照如下流程执行Dockerfile中的指令

  2. 基于dockerfile镜像构建新镜像
    执行docker build命令时,dockerfile中的指令都会被执行并且被提交,并且在该命令成功结束后返回一个新镜像。

  1. dockerfile文件内容

  1. 创建一个目录并在里面创建初始化的Dockerfile

忽略dockerfile的构建缓存

sudo docker build --no-cache -t="jamtur01/static_web"
  • 查看新镜像

sudo docker images jamtur01/static_web
  • 查看镜像如何构建出来的

sudo docker history22d47c8cb3jkk
  • 从新镜像启动一个容器

sudo docker run -d -p 80 --name static_web jamtur01/static_web nginx -g "daemon off;"

-d:说明在后台运行
-p:控制docker在运行时应该公开哪些网络端口给宿主机,-p还可以灵活的管理容器和宿主机之间的端口映射关系

sudo docker run -d -p 80:80 --name static_web jamtur01/static_web nginx -g "daemon off;"sudo docker run -d -p 8080:80 --name static_web jamtur01/static_web nginx -g "daemon off;"#端口限制在特定的IP上sudo docker run -d -p 127.0.0.1:8080:80 --name static_web jamtur01/static_web nginx -g "daemon off;"

-P:可以用来对外公开在Dockerfile中EXPOSE指令中设置的所有端口

sudo docker run -d -P --name static_web jamtur01/static_web nginx -g "daemon off;"

运行一个容器时,Docker可以通过两种方法来在宿主机上分配端口。
* Docker可以在宿主机上随机选择一个位于49153~65535的一个比较大的端口好来映射到容器中的80端口上。
* 可以在Docker宿主机中指定一个具体的端口好来映射到容器中的80端口上。

  • 查看docker端口映射情况

sudo docker ps -l##指定要查看映射情况的容器ID和容器的端口号sudo docker port container_id 80



作者:YONGSSU的技术站点
链接:https://www.jianshu.com/p/ae07706c419e


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消