删除旧docker,因为有些linux系统会自带一个老版本的docker
yum -y remove docker docker-common container-selinux
安装yum-utils,安装docker时候的工具包
yum install -y yum-utils
安装docker,如果成功就不用执行下面的步骤了
yum install docker-engine
如果提示找不到docker说明Linux原始的软件源中没有docker,需要更改软件源
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-7 - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/7/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-7 - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/7/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-7 - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/extras/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/7/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-7 - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/centosplus/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/7/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#contrib - packages by Centos Users
[contrib]
name=CentOS-7 - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/contrib/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/7/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
创建并编辑该文件
vim /etc/yum.repos.d/docker.repo
文件内容如下
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
更新yum源
yum clean all
yum makecache fast
再次安装docker
yum install docker-engine
没网络的安装方式(没有尝试过不确定可行)
使用rpm 包的方式进行安装
可以从 https://yum.dockerproject.org/repo/main/centos/ 中选择合适的CentsOS版本下载rpm包注意stable和testing
安装 docker
sudo yum -y install /path/to/package.rpm
使用这种方式可能需要手动处理依赖问题。
-ivh name.rpm --nodeps --force ##忽略依赖性并且强制安装
systemctl start docker
设置开机启动docker
chkconfig docker on
* docker images
这里的镜像相当于是一个容器的副本类似于ios镜像一样,通过这一个镜像可以启动多个容器。
启动后的容器类似于虚拟机一样有独立的linux环境。
通过docker可以确保开发环境和使用环境保持一致,避免因为环境导致软件无法运行
使用save 导出这种方式导入时候必须使用load导入
docker save ubuntu > /root/ubuntu.tar
通过image id导出
docker save eb40dcf64078 > /root/tomcat.tar
使用export 导出这种方式导入的时候必须使用import导入
docker export 98ca36> ubuntu.tar
在SecureCRT 8.1中使用sz指令可以将上一步生成的tar包下载到本机
默认下载路径就是电脑的下载路径,也可以在options->session options->x/y/zmodem中修改下载的路径
sz ubuntu.tar
必须是save导出的tar文件才可以使用load 导入
docker load < ubuntu.tar
这个必须搭配export导出的才能用
docker import - tomcat:latest < tomcat.tar 指定镜像的REPOSITORY、TAG导入
docker images
命令查看本机的镜像docker tag eb40dcf64078 django:latest
修改为原来的镜像名称和标签名称 使用docker run -itd django:latest 加载镜像到容器,验证镜像是否能够成功运行
不成功通常是使用了不搭配的导入导出导致的,save和load命令,export和import命令要匹配不能混用
docker build imagesproject/ -t tomcat:latest
dockerfile
-t tomcat:latest
指定构建后的镜像的名字和版本号docker ps
进入正在运行的容器的linux环境当中
docker exec -it d48b21a7e439 /bin/sh
其中d48b21a7e439
为CONTAINER ID
需要注意容器内的linxu环境极度精简只能使用基础命令,在有网络的情况下也可以安装指令
在容器内的操作不会影响到镜像,通过镜像启动的新的容器还是没有修改前的状态,因为启动的时候是基于镜像启动的,生成好的镜像只能用dockerfile修改后创建新的镜像
docker stop NAMES,通过docker ps查看
docker stop $(docker ps -a -q)
启动tomcat镜像到8080,前者是外围访问端口:后者是容器内部端口
docker run -d -p 8080:8080 tomcat
删除前要停止正在运行的容器
docker ps 查看正在运行的容器
desktop stop NAMES 停止正在运行的容器
还要删除运行过的记录
docker ps -a 查看已经停止但是还有记录的容器
docker rm c551bb2d0b1f 删除指定容器
删除指定的镜像
docker images 查看所有的镜像
docker rmi 5e4f2da203e2
FROM
FROM 或 FROM :
第一条指令必须为FROM指令。
MAINTAINET
MAINTAINET
指定维护者的信息
RUN
RUN 或 RUN ["", "", ""]
每条指令将在当前镜像基础上执行,并提交为新的镜像。(可以用“\”换行)
CMD
CMD ["","",""]
指定启动容器时执行的命令,每个Dockerfile只能有一条CMD指令,如果指定了多条指令,则只执行最后一条。
EXPOSE
EXPOSE [ ...]
告诉Docker服务端对外开放的端口,在容器启动时需要通过 -p 做端口映射
ENV
ENV
指定环境变量,会被RUN指令使用,并在容器运行时保存
ADD
ADD
复制指定的到容器的中,可以是Dockerfile所在的目录的一个相对路径;可以是URL,也可以是tar.gz(自动解压)
COPY
COPY
复制本地主机的 ( 为 Dockerfile 所在目录的相对路径)到容器中的 (当使用本地目录为源目录时,推荐使用 COPY)
ENTRYPOINT
ENTRYPOINT ["","",""]
配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。(每个 Dockerfile 中只能有一个 ENTRYPOINT ,当指定多个时,只有最后一个起效)
VOLUME
VOLUME ["/mnt"]
创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等
USER
USER daemon
指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。
WORKDIR
WORKDIR /path/to/workdir
为后续的 RUN 、 CMD 、 ENTRYPOINT 指令配置工作目录。(可以使用多个 WORKDIR 指令,后续命令如果参数是相对路径, 则会基于之前命令指定的路径)
ONBUILD
ONBUILD [INSTRUCTION]
配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令
vim /etc/sysconfig/docker-storage
编辑该文件
DOCKER_STORAGE_OPTIONS=
vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'
vim /etc/docker/daemon.json
编辑该文件
{ "storage-driver": "devicemapper" }
最后重启docker
systemctl restart docker