docker

1. 新建一个Dockerfile文件:

# Dockerfile
# 基础镜像版本:https://hub.docker.com/_/centos?tab=tags&page=1&ordering=last_updated
ARG UBUNTU_VERSION=16.04
FROM ubuntu:${UBUNTU_VERSION} AS base


RUN set -x; buildDeps='gcc libc6-dev make wget zlib1g-dev libssl-dev build-essential' \
    && apt-get update \
    && apt-get install -y $buildDeps 

RUN apt-get update && apt-get install -y \   # -y表示安装过程中有选择yes/no的默认选yes
    python3 \
    python3-pip

RUN python3 -m pip --no-cache-dir install --upgrade \
    pip \
    setuptools

RUN wget https://www.python.org/ftp/python/3.6.12/Python-3.6.12.tgz \
    && tar -xf Python-3.6.12.tgz \
    && cd Python-3.6.12  \
    && ./configure \
    && make \
    && make install \
    && cd .. \
    && rm -rf Python-3.6.12.tgz \
    && rm -rf Python-3.6.12

2. 编译生成docker

systemctl start docker  # 如果失败删除rm -rf /etc/docker/daemon.json
docker build -t my_first_docker -f Dockerfile .

# my_first_docker: 生成的IMAGE的名字
# -f后面跟Dockerfile整个配置文件
# 如果更改了image里的镜像,需要在build的时候加上--network=host,这样就会使用/etc/apt目录下面的sources.list作为镜像了(这个文件可以COPY进去).docker run的时候也可以加上这个参数

3. 运行生成的docker run以及参数

docker run --name any_container_name -it -v /home/workspace:/tmp image_id  # any_container_name自定义一个名字, -v表示同步本地机器的/home/workspace下的内容到容器的/tmp目录.这样本地修改之后容器上对应的文件也会同步修改.

# 如果希望在docker里使用gdb,那么在创建容器的时候需要加上:
docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined 

# 在运行docker之后自动运行docker里面的脚本,加上-c参数
docker run --name ..... -c 'shell.sh'

docker attach container_id   # 进去某个container或者:
docker exec -it --user root container_id /bin/bash   # 以root权限进入某个container

# You cannot attach to a stopped container, start it first
docker start container_id

# docker command

docker ps -a # 查看所有的docker信息
docker images  # 查看有哪些生成的docker
docker image rm IMAGE_ID  # 删除image
docker image rm REPOSITORY:TAG

# 把生成的Docker保存为文件并从文件

docker save myimage:latest | gzip > myimage_latest.tar.gz
docker load -i myimage_latest.tar.gz

# 有问题的语法:
cat magicmind.tar.gz | sudo docker import - new_image:latest

# 查看所有的正在运行的container

docker container ls -a
docker container rm container_id   # 删除某个container

# container和host之间拷贝文件

docker cp container_Id:/file/path/within/container /host/path/target   # copy from container to host
docker cp file_name container_id:/path/to    # cp host to docker

# docker push (push 到hub)

docker login --username name  --password password hub.web.com
docker push iamges_name:tag

# 从container 生成image

docker commit container_id  REPOSITORY:TAG

# 更改docker默认存储目录

# 查看默认缓存目录
docker info -f '{{ .DockerRootDir}}'
# /var/lib/docker

sudo systemctl stop docker
sudo vim /lib/systemd/system/docker.service
# 修改
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# 为(新增data-root目录)
ExecStart=/usr/bin/dockerd --data-root "/share/workspace/docker-data" -H fd:// --containerd=/run/containerd/containerd.sock


sudo systemctl daemon-reload
sudo systemctl restart docker

# 查看目录是否生效
docker info -f '{{ .DockerRootDir}}'
# /share/workspace/docker-data

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值