docker整理记录

1 docker官方链接

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 从官网下载相应的docker软件包

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

3 执行安装命令

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 获取完整container id

docker ps --no-trunc

5 获取镜像

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

6 运行镜像

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

7 查看正在运行的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 进入容器

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

9 拷贝容器内部文件到本地 //本地内容到容器内部同理

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

10 停止容器

docker stop ID 

11 删除容器

docker rm 容器ID 

12 删除镜像

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

13 构建镜像并发布自己的项目

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 搜索镜像

docker search debian

15 常用指令

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 获取容器日志信息

docker logs container

17 进入容器

docker attach container 

18 在容器中执行命令

docker exec containre command

19 导出镜像

docker save -o image_name.tar image_name

20 Docker镜像中的base镜像理解

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 docker中制作自己的基础镜像 (未验证)

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 从归档文件中创建镜像

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 将image save成tar包

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

26 将tar包load成一个image

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

27 docker 容器镜像打包tar包-在现在的容器上保存镜像进行打包,在另一台服务上使用

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

猜你喜欢

转载自blog.csdn.net/weixin_44991625/article/details/108201468
今日推荐