镜像导出和导入
将镜像导出到本地,再上传至别的服务器导入
使用 docker save 导出镜像:
docker save -o <output_file_name>.tar <image_name>
使用 docker load 导入镜像:
docker load -i <input_file_name>.tar
重命名镜像
使用 docker tag 命令重命名镜像:
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
给镜像打标签
使用 docker tag 命令给镜像打上标签,即为其命名:
docker tag IMAGE_ID NEW_IMAGE_NAME[:TAG]
启动镜像
docker run -it my_image /bin/bash
docker run -it -u 0 my_image /bin/bash # 以root用户启动容器
docker run -v ${workspace}:${workspace} my_image:v1 /bin/bash -c "cd script && ./build.sh"
-d, --detach:在后台模式下运行容器。
-it, --interactive --tty:以交互式方式运行容器,并分配一个伪终端(pseudo-TTY)。
--name:为容器指定一个名称。
-v, --volume:挂载主机文件系统的目录到容器内部。
进入容器
docker exec -it my_container /bin/bash
-d, --detach:在后台模式下运行命令。
-i, --interactive:保持标准输入打开,允许交互式输入。
-t, --tty:为命令分配一个伪终端(pseudo-TTY)。
镜像修改
这将创建一个名为 my_image 的新镜像,带有 latest 标签,它的内容是 my_container 容器当前的状态。
docker commit my_container my_image:latest
-a, --author:指定镜像的作者信息。
-c, --change:在提交镜像时应用 Dockerfile 中的指令。这允许你在提交镜像时修改容器的配置。
-m, --message:为提交的镜像指定一条描述性的信息。
创建镜像
根据 Dockerfile 创建镜像,和 Dockerfile 同级目录下执行:
docker build -t my_image:v1 .
Dockerfile 实例
FROM ubuntu:16.04
MAINTAINER xxx "xxx@xx.com"
# 更换Ubuntu镜像源为阿里云
COPY sources.list /etc/apt/sources.list
RUN chmod 644 /etc/apt/sources.list
# 设置 locale
RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \
&& localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
ENV LANG en_US.utf8
# 安装
RUN rm /bin/sh && ln -s /bin/bash /bin/sh \
&& dpkg --add-architecture i386 \
&& apt update \
&& apt install -y python git fakeroot zlib1g-dev libmagickwand-dev python-pip vim lib32z1 lib32ncurses5 libbz2-1.0:i386 squashfs-tools mtd-utils autoconf automake texinfo autopoint bison flex liblz4-tool u-boot-tools bc rsync zip tar \
&& pip install Wand \
&& useradd --user-group --create-home --no-log-init --shell /bin/bash username
COPY script ~/script
RUN chown -R username:username ~/script
COPY build-wrapper-linux-x86 /opt/build-wrapper-linux-x86
COPY sonar-scanner-4.8.0.2856-linux /opt/sonar-scanner-4.8.0.2856-linux
COPY nodejs /opt/nodejs
ENV PATH /opt/nodejs/bin:/opt/sonar-scanner-4.8.0.2856-linux/bin:/opt/build-wrapper-linux-x86:$PATH
USER username WORKDIR /home/username
RUN mkdir -p project