Docker入门命令

1、Hello World

首先

$ docker run ubuntu echo hello world

2、简单命令

$ docker images  # 显示本地存在的镜像
$ docker ps  # 显示正在运行的容器
$ docker ps -a # 显示所有的容器

3、 运行ng镜像

  1. 使用docker运行nginx

    $ docker run -p 8080:80 -d nginx
    # -p 端口映射:将本地的8080端口映射到docker的80端口上
    # -d 以守护进程方式执行,命令会直接返回,进程会在后台一直运行
    
  2. 将文件拷贝到容器中的目录

    $ docker cp index.html 12add7bbc58c://usr/share/nginx/html
    # cp 将本地文件拷贝到容器中。
    # index.html  本地的文件
    # 12add7bbc58c  容器的id
    # /usr/share/nginx/html   容器中的路径地址
    
  3. 停止一个容器

    $ docker stop 12add7bbc58c
    # 12add7bbc58c  容器的ID
    

    此时如果再次使用容器执行nginx,发现替换的index.html已经不在了,首页恢复了默认状态。这是因为容器做的所有更改都是暂时的,不会进行保存操作。

  4. 保存更改

    $ docker commit -m 'fun' e7c34d924c31
    # 将操作保存起来,这时候会产生一个新的镜像
    # 此时产生的镜像 名称 和 tag 都是
    $ docker commit -m 'fun' e7c34d924c31 nginx-fun
    # 此时产生的镜像,名字为  nginx-fun
    
  5. 删除Image和容器

    $ docker rmi 84ca813a0995 
    # 删除image, 84ca813a0995为ImageID
    $ docker rm e7c34d924c31 17add78bbc58c
    # 删除容器   e7c34d924c31 17add78bbc58c均为容器id
    

4、第一个Dockerfile

之前的方法是通过docker commit 命令创建了一个新的镜像。

现在有一个更加合理的方式来创建镜像。

一个最简单的Dockerfile文件内容

FROM alpine:latest # 基础镜像,alpine是一个专门针对docker的极简Linux系统
MAINTAINER wangXiaop # 告诉别人这是你的文件
CMD echo 'Hello World' # 命令

使用命令创建:

$ mkdir docker_dir
$ touch Dockerfile # 创建Dockerfile文件
$ vim Dockerfile# 编辑这个文件
$ docker build -t hello_docker . # 将上面的Dockerfile文件内容写入文件。-t hello_docker 指定一个名称。. 是指当前路径,会将路径下的所有文件送给docker build命令执行

5、 第二个Dockerfile

这是一个稍微复杂的Dockerfile

FROM ubuntu  # 基础镜像
MAINTAINER wXiaop # 作者
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list # 更换国内镜像,不是必须
RUN apt-get update # 更新程序的库
RUN apt-get install -y nginx # 安装nginx
COPY index.html /var/www/html # 拷贝文件到容器中
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"] # 程序入口点,最后将三个数组用空格隔开来执行
EXPOSE 80  # 暴露一个端口
命令 用途
FROM base_image
RUN 执行命令
ADD 添加文件
COPY 拷贝文件
CMD 执行命令
EXPOSE 暴露端口
WORKDIR 制定路径
MAINTAINER 维护者
ENV 设定环境变量
ENTRYPOINT 容器入口
USER 制定用户
VOLUME mount point

6、 镜像分层

Dockerfile中的每一行都产生一个新层,已经存在IMG里面的层,都是只读的。

FROM alpine:latest # 每层的id:4E38E38CE0
MAINTAINER wangXiaop # FB1AABF4427B
CMD echo 'Hello World' # 3DF065VGDFF6

会产生一个container layer 层,这一层是可读可写的。

7、 存储技术:Volume

提供独立于容器之外的持久化存储

简单例子:

$ docker run -v /usr/share/nginx/html nginx

这个命令将宿主机里面的/var/lib/docker/volumes/bae2223s3fd...3sdf3/_data路径,挂载在容器里面的/usr/share/nginx/html

第二个命令:

$ docker run -v $PWD/html:/var/www/html nginx
# $PWD 是shell语法,始终指向当前目录。
# 这个命令将,当前目录下的html目录   映射到容器里面的/var/www/html

第三种方式

创建一个仅有数据的容器。

$ docker create -v $PWD/data:/var/mydata --name data_container ubuntu
# 创建一个容器,以Ubuntu为基础镜像。
# 并且关联当前目录的data文件夹 到 容器的  /var/mydata 目录
$ docker run --volumes-from data_container ubuntu
# 使用--volume-from  将数据容器作为参数传进去。
# 再指定一个基础镜像 Ubuntu
# 这个数据容器  data_container可以被多个容器同时挂载

8、 镜像仓库

English 中文
host 宿主机
image 镜像
container 容器
registry 仓库
daemon 守护程序
client 客户端

9、 Docker常用命令总结

$ sudo docker pull 仓库/镜像:版本(不写默认latest) 
$ sudo docker run 加一堆参数,用来创建容器 
$ sudo docker ps #查看运行容器 
$ sudo docker images #查看所有下载的镜像 
$ sudo docker exec -i -t ha /bin/bash #进入容器终端 
$ sudo docker logs -f -t --tail 10 ha #实时查看10行的ha日志

你可能感兴趣的:(Docker入门命令)