笔记"/>
学习docker笔记
学习docker笔记
macOS配置镜像加速
点击Docker Desktop应用图标-> Perferences
,在左侧导航菜单选择 Docker Engine
,在右侧编辑 json 文件。修改完成之后,点击 Apply & Restart
按钮,Docker 就会重启并应用配置的镜像地址了。
{"registry-mirrors": ["",""]
}
使用镜像
常用命令
# 拉取镜像
docker pull [option] [address[:port]/]repository[:tag]
# 运行镜像
docker run -ti ubuntu:18.04 /bin/bash
# 列出镜像
docker image ls
# 查看镜像、容器、数据卷所占用的空间
docker system df
# 删除<none>镜像
docker image prune
# 列出中间层镜像
docker image ls -a
# 删除本地镜像,<image>可以是镜像短ID、长ID、镜像名、镜像摘要
docker image rm [option]<image1>[<image2>...]
# 启动已终止的容器
docker container start
# 终止一个容器
docker container stop
# 导入和导出容器
docker export <container id> > test.tar
docker import <url> test/test:tag #cat test.tar | docker import - test/test:tag
# 删除容器
docker container rm
docker container prune # 清除所有终止的容器
# 推送
docker push repository:tag #repository需要和你的仓库名一致
docker run的常用参数
-t: 让docker分配一个伪终端
-i: 让容器的标准输入保持打开
-d: 守护态运行,返回容器ID
-v: 绑定一个卷
-p:指定端口映射,大写则随机映射
-net: 指定容器的网络连接类型, 支持bridge/host/none/container
–expose: 开放一个端口或者一组端口
使用Dockerfile构建镜像
ARG <参数名>[=默认值]
FROM <image>
RUN command #在docker build时运行
COPY [--chown=<user>:<group>] <src> <dst>
ADD #与COPY类似,源文件为.tar gzip bzip2 xz则自动复制并解压到目标路径; 不解压的前提,无法复制tar压缩文件
USER <username>[:usergroup] # 必须存在
WORKDIR dir #切换当前执行的工作目录
ENTRYPOINT ["execute", "param1", ...] # 容器进入时执行的命令
CMD <shell command> #在docker run时运行
CMD ["execute", "param1", "param2", ...]
CMD ["param1", "param2", ...] # 为ENTYPOINT指令提供默认参数
ENV <key> <value> # 设置环境变量
ENV <key1>=<value1> <key2>=<value2> ...
EXPOSE port # 暴露端口
# 构建镜像
docker build -t name:tag .
例子
一个使用docker的简单例子
# 登陆docker hub
docker login -u 'user name' -p 'password'# 拉取ubuntu:18.04镜像
docker pull ubuntu:18.04# 查看镜像
docker image ls# 进入镜像
# -ti 分配一个终端并让容器标准输入始终打开
# -v ${dir}:${docker dir}
# {dir}为主机的某个路径,{docker dir}为docker容器里的路径
# 将主机的dir映射到docker dir, 在dir中或docker dir中修改文件,都会立刻生效,无论是在主机还是在docker中。
# --net=host 网络使用主机网络
docker -ti --net=host -v /home/dandelion/docker_dir:/home/dandelion ubuntu:18.04 /bin/bash# 在容器中do work
...# 退出容器,容器里除了在docker dir中修改的文件生效,其他任何操作都不会保留,在下次重新进入容器时,环境还是ubuntu:18.04
exit
使用dockerfile基于ubuntu:18.04构建一个cpp开发环境,并上传到docker hub
# 一个简单的dockerfile# 基于ubuntu:18.04
FROM ubuntu:18.04# 更新源,安装软件
RUN apt-get update && apt-get install -y git g++ gdb cmake vim# 从主机复制一些文件到docker中
COPY ~/.vim* /root/# 设置环境变量
ENV LANG=C.UTF-8
构建镜像上传
# user为你的docker hub账号ID
# demo为docker hub的仓库
# cpp为镜像的tag
docker build user/demo:cpp .# 推送至docker hub
docker push user/demo:cpp
更多推荐
学习docker笔记
发布评论