Docker使用记录(二)
- 1. 常用指令
- 2. Dockerfile示例
- 3. 构建docker image
Docker中container,image,dockerfile
以及docker hub的关系如图所示,详细可见上一篇帖子。
本文主要记录Dockerfile相关。
1. 常用指令
常用指令(默认大写) | 功能 |
---|---|
FROM | 指定基础镜像,位于Dockerfile第一行(必须有)FROM ubuntu:16.04 |
MAINTAINER | 指定维护者信息(可以不写)MAINTAINER "test<test@outlook.com>" |
COPY | 和ADD相似,复制host中内容(必须与Dockerfile同级)至image指定路径中。COPY index.html /data/web/html/ |
ADD | 同上。此外,如果source是URL或压缩包,会自动下载或自动解压 ADD http://nginx.org/download/nginx-1.15.8.tar.gz /usr/local/src/ |
WORKDIR | 设置当前工作目录,为RUN,CMD等设置工作目录 |
ENV | 定义所需的环境变量 |
RUN | docker build过程中运行的程序,可以是任何命令 RUN cd ./src |
EXPOSE | 声明容器运行的服务端口,有tcp(默认)和udp EXPOSE 90/tcp |
CMD | 指定容器启动后默认运行的程序,CMD /usr/sbin/sshd -D (可以不写) |
2. Dockerfile示例
FROM ubuntu:16.04
# install ROS kinetic
RUN apt-get update \
&& apt-get -y install curl \
&& sh -c 'echo "deb http://packages.ros.org/ros/ubuntu xenial main" > /etc/apt/sources.list.d/ros-latest.list' \
&& curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add - \
&& apt-get update \
&& apt-get -y install ros-kinetic-desktop-full \
&& echo "source /opt/ros/kinetic/setup.bash" >> /etc/bash.bashrc \
&& /bin/bash -c '. /etc/bash.bashrc' \
&& apt-get -y install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential \
&& rosdep init \
&& rosdep update
# create catkin_ws
RUN mkdir -p ~/catkin_ws/src \
&& cd ~/catkin_ws \
# # ...
# # do what you need to do for example git clone something into ~/catkin_ws/src
# # ...
&& /bin/bash -c '. /opt/ros/kinetic/setup.bash; cd ~/catkin_ws; catkin_make; . ./devel/setup.bash'
3. 构建docker image
用 docker build
.
非常重要
docker build -t ubuntu-16.04:kinetic .
保存docker image至本地tar
文件
docker save -o ubuntu-16.04:kinetic kinetic.tar
加载 tar
文件到镜像
docker load -i kinetic.tar
参考文献:
1. https://www.cnblogs.com/edisonchou/p/dockerfile_inside_introduction.html
2. https://www.cnblogs.com/along21/p/10243761.html
3. http://t.csdnimg.cn/itVtL
4. http://t.csdnimg.cn/brVnu