Docker Basic
docker basics
installation
- install on ubuntu
sudo apt install docker.io
- check whether docker client and server is properly installed
docker version
- Run docker without sudo
groupadd docker
usermod -aG docker $USER
newgrp docker
image and container
- image(镜像)相当于虚拟机模板或类
-
container(容器)相当于虚拟机或类的实例
- check locally available images
docker images
# docker image ls will also work
- check running containers
docker container ls
- show both running and stopped container
docker container ls -a
- remove docker images
docker rmi image_id
# docker image rm image_id will also work
- start/stop/remove container instances
docker container start container_id
docker container stop container_id
docker container rm container_id
- run a exutable with docker container from a image
# run a exutable with docker container from a image
# docker container run name.or.id.of.image path.to.exutable parameters
docker run ubuntu echo 'hello world'
# 'hello world'
# if you want docker remove the container after exited, add --rm
# docker container --rm run name.or.id.of.image path.to.exutable
docker run --rm ubuntu echo 'hello world'
# 'hello world'
# If the docker container has a prespecified entry point
# docker run --rm image.with.entry.point parameters
docker run --rm jinyf1998/cowsay.v0 goodbye cold world
# ____________________
#< goodbye cold world >
# --------------------
# \ ^__^
# \ (oo)\_______
# (__)\ )\/\
# ||----w |
# || ||
docker container exec和docker container run功能比较类似,区别在于
docker volume (数据卷)
- external storage
- 有的时候你希望docker利用宿主机上的存储
- Docker volumes are directories that are not part of the container’s UFS
# 把当前路径下的programming目录mount到docker container 的/data路径下
# 如果想挂载多个目录,多次指定-v就可以了
docker run -it --rm -v $PWD/programming:/data ubuntu /bin/bash
build customized docker image
- two ways
- install dependency in docker interactive terminal, than commit a snapshot of the container with
docker commit - using
Dockerfile, and rundocker build
- install dependency in docker interactive terminal, than commit a snapshot of the container with
- 优劣比较https://zzq23.blog.csdn.net/article/details/80571262
- The docker commit method is not currently recommended, as building with a Dockerfile is far more flexible and powerful
- 常用Dockerfile 关键字
FROM从那个已有镜像开始构建RUN后跟在构建镜像的过程中执行的命令ENV设置环境变量ADD将building context的文件导入镜像COPY和ADD的区别在于COPY只从本地获得数据VOLUME挂载数据卷ENTRYPOINT运行容器的进入程序CMD容器运行时执行的命令
- An example
FROM debian
MAINTAINER John Smith <john@smith.com>
RUN apt-get update && apt-get install -y cowsay fortune
COPY entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]
- run
# Assume a Dockerfile is present in current directory
docker build -t target.image.name .
docker hub
-
pull docker image from docker hub with
docker pull -
push your docker image to docker hub
- tag the docker image to your own repo with
docker tag - run
docker push
- tag the docker image to your own repo with