Docker之初体验

macOS-Docker初体验

Docker常用命令:

生成镜像:docker build -t imagesName .
查看镜像:docker images
删除镜像:docker rmi `imagesName`
启动容器:docker run -itd --name imagesName nginx
查看容器列表:docker ps -a
进入容器内部:docker exec -it imagesName bash
停止容器:docker stop imagesName
启动容器:docker start imagesName
删除容器:docker rm imagesName
停止所有容器:docker stop $(docker ps -a -q)
删除所有容器:docker rm $(docker ps -a -q)
导出镜像:docker export 容器ID/name > xxx.tar
导入镜像:docker import xxx.tar 镜像名称

Docker三个重要的概念是镜像、容器、仓库; 我们首先来创建一个镜像,创建镜像的方法有很多种,如:直接拉取官网镜像、使用dockerfile创建自定义镜像等;

一、拉取官网镜像

1.1 由于docker默认源是国外的,所以我们使用之前先修改下源,修改源的地址在设置中,Mac使用快捷键command+,进入设置页面; 打开设置页面 1.2 修改源地址

{
  "debug" : true,
  "experimental" : true,
  "registry-mirrors" : [
        "https://1nj0zren.mirror.aliyuncs.com",
        "https://docker.mirrors.ustc.edu.cn",
        "http://f1361db2.m.daocloud.io",
        "https://registry.docker-cn.com"
  ]
}

设置源地址

1.3 拉取官网镜像文件

// 使用docker pull 命令进行拉取
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
// 如我想拉取ubuntu镜像,这样就拉取一个nginx的镜像
docker pull nginx
// 结果如下
docker pull nginx
16.04: Pulling from library/nginx
fe703b657a32: Pull complete
f9df1fafd224: Pull complete
a645a4b887f9: Pull complete
57db7fe0b522: Pull complete
Digest: sha256:e9938f45e51d9ff46e2b05a62e0546d0f07489b7f22fbc5288defe760599e38a
Status: Downloaded newer image for nginx
docker.io/library/nginx

1.4 查看镜像列表,已经安装好镜像

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               77be327e4b63        4 days ago          124MB
php                 7.2-fpm             42440ec55db8        5 days ago          398MB
nginx               latest              2073e0bcb60e        3 weeks ago         127MB

1.5 使用镜像创建一个容器

// 如镜像有tag需跟上tag,启动容器成功以后会显示容器ID,下面是将本地80端口映射到容器中的80端口
docker run -d -p 80:80 --name server nginx
8a640cfd37fb5288323471453fe95aa98a0c6334ef448e3220d0403674322123

连接成功

二、使用DockerFile自定义安装镜像 DockerFile命令

1.FROM 指定基础镜像
  
    所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制。就像我们之前运行了一个redis镜像的容器,再进行修改一样,基础镜像是必须指定的。而 FROM 就是指定基础镜像,因此一个  Dockerfile  中  FROM  是必备的指令,并且必须是第一条指令。
	在 Docker Store 上有非常多的高质量的官方镜像,有可以直接拿来使用的服务类的镜像,如nginx  、 redis  、 mongo  、 mysql  、 httpd  、 php  、 tomcat  等;如果没有找到对应服务的镜像,官方镜像中还提供了一些更为基础的操作系统镜像,
    如ubuntu  、 debian  、 centos、 alpine 等这些操作系统的软件库
  
2、RUN 执行命令
     
	RUN  指令是用来执行命令行命令的。
	格式:
	  RUN \<command\> (类似/bin/sh -cshell格式)
	  
	  RUN ["executable", "param1", "param2"] (exec格式)

	类似shell脚本风格的:
	    FROM alpine
        RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
		RUN apk add  gcc g++ libc-dev  wget vim  openssl-dev make  linux-headers 
		RUN mkdir -p /usr/src/redis
		RUN cd /usr/src/redis
		RUN wget -O redis-4.0.11.tar.gz  "http://download.redis.io/releases/redis-4.0.11.tar.gz"
		RUN tar -xzf redis-4.0.11.tar.gz -C /usr/src/redis
		RUN cd /usr/src/redis/redis-4.0.11 &&  make && make PREFIX=/usr/local/redis install
	之前说过,Dockerfile 中每一个指令都会建立一层, RUN  也不例外。每一个  RUN  的行为,就和刚才我们手工建立镜像的过程一样:新建立一层,在其上执行这些命令,执行结束后, commit这一层的修改,构成新的镜像。使用 Dockerfile 定制镜像
    而上面的这种写法,创建了很多层镜像。这是完全没有意义的,而且很多运行时不需要的东西,都被装进了镜像里,比如编译环境、更新的软件包等等。结果就是产生非常臃肿、非常多层的镜像,不仅仅增加了构建部署的时间,也很容易出错。 这是很多初学
	Docker 的人常犯的一个错误。Union FS是有最大层数限制的,比如 AUFS,曾经是最大不得超过 42 层,现在是不得超过 127 层。

创建一个php7.2版本的镜像文件 1、首先创建一个文件,命名为dockerfile 2、在文件内写入以下代码

FROM php:7.2-fpm

RUN apt-get update \
    && apt-get install iputils-ping \
    && docker-php-ext-install mysqli && docker-php-ext-enable mysqli

3、执行下面的命令生成镜像,执行命令时必须在dockerfile目录下执行

docker build -t php7.2 .
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值