docker基础

1.获取docker

1.1 卸载旧版本的docker

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

1.2 设置存储库

$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

1.3 安装docker

$ sudo yum install docker-ce docker-ce-cli containerd.io

2.docker命令

2.1 启动docker

sudo systemctl start docker

2.2 打印docker版本

sudo docker version

3.docker-machine

  • 创建一台安装好docker的虚拟机

3.1 查看docker-machine命令

docker-machine

3.2 查看是否有docker-machine

docker-machine version

3.3 创建demo

docker-machine create demo

3.4 查看现有的demo

docker-machine ls

3.5 启动demo

docker-machine ssh demo

3.5 删除demo

docker-machine ssh demo

3.6 输出demo的环境变量

docker-machine env demo

3.7 输出demo的环境变量(远程创建一台安装好docker的机器)

eval $(docker-machine env demo)

4. 获取image的方式

4.1 Dockerfile

4.1.1Dockerfile的格式

FFROM XXX 系统的版本

LABEL XXX
基于那个底层IANGE实现

RUN XXX 要执行的程序和命令

EPOSE 暴露的接口

ENTRYPOINT image的入口

4.1.2 从registry获取

5.image命令

4.1 查看image

sudo docker image ls
docker image

4.1 删除image

docker image rm id
docker image rm2 id

4.2 启动image

docker run xxx

4.3查看image的更多信息

more Dockerfile

6.构建iamge

docker build -t xxx .

其中 .是在当前目录查找
xxx为自定义的image名字

7.Dockerfile语法

7.1 EUN&CMD&ENTRYPOINT 的区别

  • RUN:执行命令并创建Image Layer
  • CMD:设置容器启动后默认执行的命令和参数
  • ENTRYPOINT:设置容器启动时运行的命令

ENTRYPOINT

  • 让容器以应用程序或者服务的形式运行
  • 不会被忽略,一定执行
  • 最佳实践:写一个shell脚本作为entrypoint
CPOY docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT["docker-entrypoint.sh"]

EXPOSE 27017
CMD["mongod"]

CMD

  • 容器启动默认执行的命令
  • 如果docker run指定了其他命令,CMD命令被忽略
  • 如果定义了多个CMD,只有最后一个执行

FROM(源)

FROM scratch #制作base image
FROM centos #使用base image

LABEL(版本描述)

LABEL maintainer="xxx" 
LABEL version="1.0"

RUN(版本描述)

每次run都为一层image,为了避免无用分层,用 && 合并成一行,用 \ 换行让命令更加美观

RUN yum clean all
RUN apt-get install -y mysql-server= "${MYSQL_SERVER}"

WORKDIR(设定当前所在的目录)

WORKDIR /test #如果没有会自动创建test
WORKDIR demo
WORKDIR pws 输出/test/demo

ADD and COPY(添加本地文件)

ADD hello / 添加hello到根目录里面去,/表示根目录
ADD test.tar.gz / #添加到根目录并且解压

联合使用

WORKDIR /root
ADD hello test/   #/root/test/hello

ENV(设置常量)

ENV MYSQL_VERSION 5.6 #设置常量

7.container

7.1 命令

当前本地正在运行的容器
docker container ls
本地运行过的容器
docker container ls -a
docekr ps -a
删除container

1

docker container rm id

2

docker rm id
列举containerid
docker container ls -aq
删除列举containerid
docker -rm $(docekr container ls -aq)
列举某个属性的容器
docker container ls -f "status=exited"
删除某个属性的容器
docker rm $(docekr container ls -f "status=exited" -aq)
保存修改后的container
docker container commit

简写

docker commit

7.2 交互式运行容器

docker run -it centos
posted @ 2020-08-10 20:59  0小豆0  阅读(145)  评论(0编辑  收藏  举报
隐藏
对话
对话