Docker基本命令

基本命令

# 查看docker的image
docker images

# 获取imager
docker image pull nginx

## 删除img
docker rmi id

# 运行
## 交互运行
docker run -it ubuntu
# -p 映射端口, -d 后台运行
docker run -p 8080:80 -d nginx  
# 查看正在运行的服务
docker ps
docker ps -a # 查看历史记录
# 拷贝文件到容器中// nginx默认目录是/usr/share/nginx/html
docker cp index.html 容器ID://usr/share/nginx/html

# 停止运行
docker stop ID

# 停止后再次运行原来拷贝的会丢失
# 使用commit保存后可在images中查看
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
docker commit -m "提交说明" -a "silas" f6e029f9f5a5 mynginx:v1


Dockerfile

github上的示例

FROM

From scratch # 制作base image(尽量使用官方image作为base image)

FROM  centos
From ubuntu:14.04

Label

打标签

LABEL maintainer="Silas"
LABEL version="1.0"
LABEL description="This is description"

RUN

为了美观复制的RUN使用反斜线换行!

避免无用分层,合并多行命令成一行

RUN yum updata && yum install -y vim \
    python-dev  # 反斜线换行

WORKDIR

用workdir,不用用RUN cd!尽量使用绝对目录

WORKDIR /test   # 没有/test会自动创建/test
WORKDIR demo
RUN pwd     # 此时会输出 /test/demo

ADD or COPY

大部分情况COPY由于ADD!ADD还有额外解压缩功能!添加远程使用curl或wget

ADD TEST.tar.gz /   # 添加到根目录并解压

ENV

尽量使用,增加可维护性!

ENV MYSQL_VERSION 5.6       # 设置常量
RUN apt-get install -y mysql-server = "${MYSQL_VERSION }"\
    && rm -rf /var/lib/apt/lists/*  # 引用常量

CMD && ENTRYPOINT

RUN:执行命令并创建新的image layer

CMD:设置日期启动后默认执行的命令和参数

docker run 制定了其他命令,CMD会被忽略,定义多个只有最后一个会被执行

ENTRYPOINT:设置日期启动时运行的命令

不会被忽略,移动会执行

镜像发布

docker login # 登录

docker push rudefish/helloworld:latest # 提交

可登录查看

拉取到本地docker pull rudefish/helloworld:latest

# 创建一个文件Dockerfile
FROM alpine:latest
MAINTAINER Silas
CMD ecjo "Hello world!"

# 编译
docker build -t myfile ./

# 运行
docker run myfile

现在本地生成一个打印helloworld的可执行文件,在加到image的/下,然后执行

FROM scratch
ADD DockerWork /
CMD ["/DockerWork"]

编写一个安装vim后的dockerfiles文件

FROM centos
RUN yum install -y  vim

其他人拿到dockerfile后到本地build即可

docker container

#查看
docker container ls -a
# 简写
docker ps -a
# 删除一个
docker rmi ID
# 删除全部
 1、查看所有>docker container ls -a
 2、查看所有的ID>docker container ls -aq
 3、删除>docker rm $(docker container ls -aq)
 # 删除status位exited的
docker rm $(docker container ls -f "status=exited" -q)

Rggistry

# 搜索镜像
docker search nginx

搭建私人dockerhub

搜索registry

docker run -d -p 5000:5000 --restart always --name registry registry:2

push

# 重新编译
docker build -t ip:port/hrllo-world .

建立可信连接

1、 在 /etc/docker/下新建一个文件

{"insecure-registries":["ip:port"]} > /etc/docker/deamon.json

2、 编辑docker启动文件

vi /lib/systemd/system/docker.service

添加一行: EnvironmentFile = /etc/docker/daemon.json

3、 重启docker

4、验证

pull后查看ip:pore/v2/_catelog

你可能感兴趣的:(Docker基本命令)