学习docker笔记

学习docker笔记

macOS配置镜像加速

点击Docker Desktop应用图标-> Perferences,在左侧导航菜单选择 Docker Engine,在右侧编辑 json 文件。修改完成之后,点击 Apply & Restart 按钮,Docker 就会重启并应用配置的镜像地址了。

{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}

使用镜像

常用命令

# 拉取镜像
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值