docker organize records

1 Official docker link

https://download.docker.com/linux/
https://download.docker.com/linux/debian/dists/stretch/pool/stable/amd64/docker-ce_17.03.0~ce-0~debian-stretch_amd64.deb

2 Download the corresponding docker package from the official website

docker-ce_19.03.9~3-0~debian-stretch_amd64.deb
docker-ce-cli_19.03.9~3-0~debian-stretch_amd64.deb

3 Execute the installation command

dpkg -i docker-ce_19.03.9~3-0~debian-stretch_amd64.deb
提示:docker-ce 依赖于 docker-ce-cli;然而:
	未安装软件包 docker-ce-cli。
执行:$sudo dpkg -i ./docker-ce-cli_19.03.9~3-0~debian-stretch_amd64.deb
执行: $sudo dpkg -i ./docker-ce_19.03.9~3-0~debian-stretch_amd64.deb
安装成功!!!

4 docker get the complete container id

docker ps --no-trunc

5 Get the mirror

docker pull xxxxxx
docker pull registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27     获取tomcat的镜像

6 Run the mirror

docker run -d -p 80:8080 registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27
// -d 后台运行
// -p 本地端口:容器端口

7 View the running docker

docker ps 
CONTAINER ID        IMAGE                                                     COMMAND                  CREATED             STATUS              PORTS                  NAMES
b3b46e8208d3        registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27   "/bin/sh -c '/usr/to…"   9 seconds ago       Up 7 seconds        0.0.0.0:80->8080/tcp   relaxed_noyce

8 Enter the container

docker exec -it b3b46e8208d3 bash
root@b3b46e8208d3:/#
退出:exit

9 Copy the files inside the container to the local // local content to the inside of the container

docker cp ID全称:容器地址 本地地址
docker cp b3b46e8208d3d09dccf48d14e17bf17057aa3dae8ad4ace7b8de0c3830023aca:/usr/tomcat/logs/catalina.out ./

10 Stop the container

docker stop ID 

11 Delete container

docker rm 容器ID 

12 Delete mirror

docker rmi 镜像ID      ps:镜像产生容器后,需要先删除容器,再删除镜像

13 Build a mirror and publish your own project

a 创建文件夹Docker
	mkdir Docker
b 创建Dockerfile文件
	vi Dockerfile
c 编辑文件并写入
	#该镜像的父镜像 为 tomcat 镜像 这样我们就有了tomcat的环境
	from registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27
	#复制当前文件夹下的 war包 到镜像中tomcat的webapps目录
	COPY TestDocker.war /usr/tomcat/webapps
	#去除容器内部中文乱码问题
	ENV LANG C.UTF-8
d 下载测试包
	testDocker.war
e 构建镜像
	docker build -t 镜像名称(镜像名称必须为小写):镜像版本 .
	docker build -t docker-test:latest .
f 查看镜像
	docker images 
	REPOSITORY                                                TAG                 IMAGE ID            CREATED              SIZE
	docker-test                                               latest              e12f103326ee        About a minute ago   386MB
	hello-world                                               latest              bf756fb1ae65        7 months ago         13.3kB
	registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27   latest              d07ca8aba782        2 years ago          369MB
g 运行构建的镜像
	docker run -d -p 80:8080 docker-test
	ed996d2bba530c406a74b401d7e7a8afe5feaf6f273bdafaf67ca50407e721ee

14 Search mirror

docker search debian

15 Common commands

a FROM
	用于指定基础images,格式为FROM OR FROM:
	Dockerfile都应该以FROM开头,指明以什么images为基础
	可以在同一个Dockerfile中多次使用FROM命令用于创建多个镜像
b MAINTAINER
	用于指定镜像创建者和联系方式
c COPY
	用于复制本地主机内容到容器中
d WORKDIR
	用于配合RUN,CMD,ENTRYPOINT 命令设置当前工作路径
	可以设置多次,如果是相对路径,则相对前一个WORKDIR命令,
	默认路径为/
e RUN
	用于容器内部执行命令,每个RUN命令相当于在原有的镜像基础上添加了一个改动层。
	原有的镜像不会有变化,例如安装python依赖包,命令为:RUN pip install -r requirements.txt
f EXPOSE
	用来指定对外开放的接口,EXPOSE 5000
g ENTRYPOINT
	使容器表现的像一个可执行程序一样。一个Dockerfile中只能有一个改命令,如有多个,最后一个生效
h CMD	
	启动容器时默认执行的命令,该命令可以包含可执行文件,也可以不包含可执行文件
	不包含可执行文件时要用ENTRYPOINT指定一个,然后CMD命令的参数就会作为ENTRYPOINT的参数
i ENV	
	用于在镜像构建过程中设置环境变量
j ADD 
	用来将构建环境下的文件和目录复制到镜像中
k LABEL
	用于为Docker镜像添加元数据

16 Obtaining container log information

docker logs container

17 Enter the container

docker attach container 

18 execute commands in the container

docker exec containre command

19 Export image

docker save -o image_name.tar image_name

20 understanding of base image in Docker image

a 不依赖其他镜像,从scratch构建
b 其他镜像可以为之基础进行扩展的
c Linux操作系统由内核空间和用户空间组成
d 内核空间是kernel,Linux刚启动时加载bootfs文件系统给,之后会被卸载掉
e 用户空间的文件系统时rootfs,包含/dev ,/proc, /bin等目录
f 对于base镜像来说,底层直接用host的kernel,自己只需要提供rootfs就行了
g base镜像提供的是最小安装的linux发行版
h Dockerfile内容
	FROM scratch
	ADD centos-8-x86_64.tar.xz /
	LABEL org.label-schema.schema-version="1.0"     org.label-schema.name="CentOS Base Image"     org.label-schema.vendor="CentOS"     org.label-schema.license="GPLv2"     org.label-schema.build-date="20200809"
	CMD ["/bin/bash"]
i Dockerfile中ADD添加的镜像的tar包就是Centos 7的rootfs,在制作镜像时,该tar包会自动
	解压到/目录下,生成/dev, /proc, /bin等目录
j base镜像只是在用户空间与发行版一致,kernel版本与发行版是不同的。例如 CentOS 7 使用 3.x.x 的 kernel,如果 Docker Host 是 Ubuntu 16.04(比如我们的实验环境),那么在 CentOS 容器中使用的实际是是 Host 4.x.x 的 kernel
k 容器只能使用 Host 的 kernel,并且不能修改。所有容器都共用 host 的 kernel,在容器中没办法对 kernel 升级。如果容器对 kernel 版本有要求(比如应用只能在某个 kernel 版本下运行),则不建议用容器,这种场景虚拟机可能更合适。

21 Make your own basic image in docker (not verified)

a 本地镜像
	-把自己的开发环境打包,取名为centos6-base.tar,然后在docker中,以centos6-base.tar作为基础镜像
	-创建自己的 镜像,放置于/root目录下
		#tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar /
		会生成打包文件centos6-base.tar文件
	-将制作的centos导入,并命名为centos6-base	
		#cat centos6-base.tar | docker import - centos6-base
	-现在可以运行它并测试查看内核
		#docker run -i -t centos6-base cat /etc/redhat-release
b 本地目录
	-假设把centos-base.tar放在/opt目录里
		sudo tar -C . | docker import - /opt
c 远程镜像
	sudo docker import http://example.com/exampleimage.tgz

22 Create a mirror from the archive

docker import my_example.tar runoob/ubuntu:v4

23 docker save images_name

将一个镜像导出为文件,再使用docker load 命令将文件导入为一个镜像,会保存该镜像的所有历史记录

24 docker export container_id

将一个容器导出为文件,再使用docker import 命令将容器导入为一个新的镜像,相比docker save命令,容器文件会丢失所有元数据和历史记录
仅保存容器当时的状态,相当于虚拟机快照

25 save the image into a tar package

docker save logmanager:1.0 > logmanager.tar     or
docker save 131242bf3ee -o /root/dockerfile/my.tar

26 Load the tar package into an image

docker load < my.tar    or
docker load -i my.tar

27 docker container image packaging tar package-save the image on the current container for packaging, and use it on another service

a 命令:docker commit -a "dhd" -m "test" 8fd2108e1e90 hellp-world-test:v20200824
b 打包:docker save -o tmf-hello-world20200824.tar hellp-world-test:v20200824
c 部署升级:docker load -i tmf-hello-world20200824.tar
d 镜像打标签,目的是将导入的镜像归到某个镜像仓库里
	docker tag tmp-web:v20200824 docker.oa.com:8080/tmf/tmf_web:v20200824
e 将镜像推送到仓库
	docker push docker.oa.com:8080/tmf/tmf_web:v20200824

Guess you like

Origin blog.csdn.net/weixin_44991625/article/details/108201468