docker基础
1.获取docker
- 先上docker docs的官网获取安装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