记录一下Docker的常见命令和DockerFile的指令。
1. Docker命令
学习https://www.runoob.com/docker/docker-command-manual.html,列出了一些场景的命令。
1.1 容器生命周期管理
- run 创建一个新的容器并运行一个命令
docker run -p 80:80 -v /data:/data -d nginx:latest
start/stop/restart
-
kill
-
rm
docker rm $(docker ps -a -q) # 删除所有已经停止的容器
- pause/unpause
- create
- exec 在运行的容器中执行命令
docker exec -it mynginx bash
1.2 容器操作
-ps 列出容器
docker ps -a -f "name=mysql"
-
inspect
-
top
-
attach
-
events
-
logs
-
wait
-
export
-
port
1.3 容器rootfs命令
- commit 从容器创建一个新的镜像
docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1
- cp 用于容器与主机之间的数据拷贝
docker cp CONTAINER:SRC_PATH DEST_PATH
docker cp SRC_PATH CONTAINER:DEST_PATH
- diff
1.4 镜像仓库
-
login
-
pull
-
push
-
search
1.5 本地镜像管理
-
images
-
rmi
-
tag
-
build 用于使用 Dockerfile 创建镜像
docker build -t nginx:test . # 使用当前目录的 Dockerfile 创建镜像
-
history
-
save 将指定镜像保存成 tar 归档文件
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3
- load 导入使用 docker save 命令导出的镜像
docker load -i path/xx.tar
- import
2. DockerFile
- 2.1 DockerFile的常用指令
学习https://blog.csdn.net/qq_29999343/article/details/78318397,写的挺清楚的。
![](https://img.haomeiwen.com/i3280233/987e4f839135905a.jpg)
找一篇做例子,以后可以参考
FROM ubuntu:18.04
## NOTE: This is a default and be overridden by chartpress using the
## chartpress.yaml configuration
ARG JUPYTERHUB_VERSION=1.1.*
RUN apt-get update && \
apt-get install -y --no-install-recommends \
git \
vim \
less \
python3 \
python3-dev \
python3-pip \
python3-setuptools \
python3-wheel \
libssl-dev \
libcurl4-openssl-dev \
build-essential \
sqlite3 \
curl \
dnsutils \
$(bash -c 'if [[ $JUPYTERHUB_VERSION == "git"* ]]; then \
# workaround for https://bugs.launchpad.net/ubuntu/+source/nodejs/+bug/1794589
echo nodejs=8.10.0~dfsg-2ubuntu0.2 nodejs-dev=8.10.0~dfsg-2ubuntu0.2 npm; \
fi') \
&& \
apt-get purge && apt-get clean
ARG NB_USER=jovyan
ARG NB_UID=1000
ARG HOME=/home/jovyan
ENV LANG C.UTF-8
RUN adduser --disabled-password \
--gecos "Default user" \
--uid ${NB_UID} \
--home ${HOME} \
--force-badname \
${NB_USER}
RUN python3 -m pip install --upgrade --no-cache setuptools pip
COPY requirements.txt /tmp/requirements.txt
RUN PYCURL_SSL_LIBRARY=openssl pip3 install --no-cache-dir \
-r /tmp/requirements.txt \
$(bash -c 'if [[ $JUPYTERHUB_VERSION == "git"* ]]; then \
echo ${JUPYTERHUB_VERSION}; \
else \
echo jupyterhub==${JUPYTERHUB_VERSION}; \
fi')
WORKDIR /srv/jupyterhub
# So we can actually write a db file here
RUN chown ${NB_USER}:${NB_USER} /srv/jupyterhub
# JupyterHub API port
EXPOSE 8081
# when building the dependencies image
# add pip-tools necessary for computing dependencies
# this is not done in production builds by chartpress
ARG PIP_TOOLS=
RUN test -z "$PIP_TOOLS" || pip install --no-cache pip-tools==$PIP_TOOLS
USER ${NB_USER}
CMD ["jupyterhub", "--config", "/etc/jupyterhub/jupyterhub_config.py"]
网友评论