Docker学习总结
- 一纾 罗
- Aug 4, 2022
- 2 min read
我把docker的命令分为三大类型
images管理:包括pull push这类指令
docker运行:主要run ps rm运行和管理容器指令
DockerFile编写:包括compose以及DockerFile和yml的编写
Chapter1
>docker pull busybox#下载busybox image
>docker images#展示所有镜像
>docker login#登录docker hub
>docker push [yourusername]/catnip#上传到自己的镜像库catnip image

Chapter2
run
>docker run busybox#运行busybox
>docker run busybox echo "hello from busybox"#运行并输出"hello from busybox"
>docker run -it busybox sh#-it表示交互模式,sh有什么用呢?
>docker run --rm -it prakhar1989/static-site#--rm表示关闭的时候自动终结该container

>docker run -d -P --name static-site prakhar1989/static-site
#--name会为container取一个名字,-d表示后台运行,-P会随机暴露端口
>docker run -p 8888:80 prakhar1989/static-site
#-p会暴露指定映射的端口,8888表示本机端口,80表示container端口
>docker run -d --name es --net foodtrucks-net -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2
#--net指定网络,用于多个container之间相互通讯
>docker run -it --rm --net foodtrucks-net yourusername/foodtrucks-web bash
不知道这里bash和sh是什么作用,其实没有也能进入交互界面

ps/rm/stop/container
ps:显示所有运行的container
>docker ps
>docker ps -a

这里我们来看一下container的构成,
CONTAINER ID,NAMES 不指定的时候都是随机分布的,其实NAMES可以使用--name配置.
IMAGE-镜像名称,有默认git hub name的话就会是7245530433/catnip格式.
COMMAND这里很像我们上个疑惑点 SH,BASH什么用处,还有python ./app.py 就是我们写DockerFile里面的RUN,还有echo
CREATED-镜像创建时间
STATUS-状态
rm:删除一个container
>docker rm $(docker ps -a -q -f status=exited)
>docker rmi
stop:终止,当我们用-d运行image的时候,container会在后台运行,这个时候需要手动关闭
>docker stop static-site

container:显示container./删除所有不运行的container
>docker container prune
>docker container ls
Others:
>docker port [container name]
#run命令使用-P会随机分配端口,这个时候需要使用port命令查看实际端口
>docker network ls/inspect/create
Chapter3
built&DockerFile
>docker build -t 7245530433/catnip .

Dockerfile1:
FROM python:3.8
# set a directory for the app
WORKDIR /usr/src/app
# copy all the files to the container
COPY . .
# install dependencies
RUN pip install --no-cache-dir -r requirements.txt
# define the port number the container should expose
EXPOSE 5000
# run the command
CMD ["python", "./app.py"]
Dockerfile2:
# start from base
FROM ubuntu:18.04
MAINTAINER Prakhar Srivastav <prakhar@prakhar.me>
# install system-wide deps for python and node
RUN apt-get -yqq update
RUN apt-get -yqq install python3-pip python3-dev curl gnupg
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash
RUN apt-get install -yq nodejs
# copy our application code
ADD flask-app /opt/flask-app
WORKDIR /opt/flask-app
# fetch app specific deps
RUN npm install
RUN npm run build
RUN pip3 install -r requirements.txt
# expose port
EXPOSE 5000
# start app
CMD [ "python3", "./app.py" ]
几个重要的关键词
FROM:定义系统环境/RUN和CMD都是运行命令
EXPOSE:往外暴露端口
WORKDIR:设置运行目录
ADD/COPY:复制文件,迁移文件



Comments