Docker 学习的一些linux常用命令
国内镜像源
http://registry.docker-cn.com
列出所有镜像
docker images
删除所有镜像
docker rmi docker images -q
后台启动某个镜像
docker run -d 镜像名:tag
会得到容器id
后台启动镜像并映射端口
docker run -d -P 镜像名:tag
-P会自动映射docker应用的默认端口到主机随机端口
docker run -d -p 5000:8080 tomcat:9.0.22-jdk8-openjdk-slim
主机5000端口映射到docker容器的8080端口
交互模式启动某个镜像
docker run -it 镜像名:tag
列出所有正在运行的容器
docker ps
列出所有容器,包含已停止的
docker ps -a
查看镜像/容器元数据(所有details)
docker inspect image/containerId
查看container log
docker logs containerid
删除所有容器
docker rm docker ps -a -q
删除一个容器
docker rm containerId(前几位就行,只要能唯一匹配)
删除多个容器
docker rm containerId1 containerId2 containerId3 … (前几位就行,只要能唯一匹配)
进入容器
docker exec -it 容器id bash
退出容器
exit
查看容器的修改
docker diff
修改了容器的文件,改的是容器的存储层,可通过查看修改
查看操作系统信息
cat /etc/issue
容器内某些操作查看的仍是宿主机的内容,因为有些宿主机的path,如/proc /dev是不能隔离的
所以。。。
镜像文件导出到本地,可用于移植到其他机器上运行
docker save -o /…/name.tar 镜像名:tag
镜像文件导入到本地
docker load /…/name.tar
docker 安装默认目录:
/var/lib/docker/
一般空间比较小,需要设置成其他大空间目录(可以移植path,网上有很多)
Commit创建镜像 - 保存修改并提交成新的镜像
docker commit 镜像id 自定义的新的镜像名
Dockfile 创建镜像
1.设置基础镜像源(https://hub.docker.com可以在官方网站上找)
FROM 镜像名:tag号
2.复制本地文件到容器系统文件中.copy的src文件只能是本地文件
ADD/COPY a.jar b.jar
3.设置 容器对外映射的端口
EXPOSE 8080
4.配置容器启动后执行的命令
ENTRYPOINT
如【“java”,“-jar”,“/app.jar”】
->构建镜像到本地镜像list
5.docker build -t 跟你想要的镜像名称
FROM tomcat:9.0.22-jdk8-openjdk-slim
#FROM xxx:latest
# ARG WAR_FILE 声明参数,来自pom中设置
ARG WAR_FILE
#COPY ${WAR_FILE} /usr/local/tomcat/webapps/xxx.war
#COPY dockerfile当前根目录/target/xxxxx.war /usr/local/tomcat/webapps/xxx.war
COPY ${WAR_FILE} /usr/local/tomcat/webapps/xxx.war
#WORKDIR 类似于cd
#WORKDIR /usr/local/tomcat/webapps/(进入docker镜像某个目录)
#RUN /bin/sh -c 'ln -s xxxxx.war xxx.war' (run 脚本)
#WORKDIR /usr/local/tomcat/conf/Catalina/localhost/
#RUN /bin/sh -c 'touch xxx.xml && echo "<Context docBase='/usr/local/tomcat/webapps/xxx.war'></Context>" > xxx.xml'
#WORKDIR /usr/local/tomcat/bin/
#RUN
EXPOSE 8080
ENTRYPOINT ["catalina.sh","run"]
Docker 启动postgres & PGAdmin4
Postgres
docker run -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 --name postgres postgres
PGAdmin4
docker run -d -p 5433:80 --name pgadmin4 -e PGADMIN_DEFAULT_EMAIL=test@123.com -e PGADMIN_DEFAULT_PASSWORD=123456 -e “PGADMIN_LISTEN_ADDRESS=0.0.0.0” xxxpgadmin4(name)
没有PGADMIN_LISTEN_ADDRESS=0.0.0.0会报如下错误,因为pgadmin默认会监听ipV6 地址,:: 应该代表ipV6的,0.0.0.0 则是ipV4
postfix/postfix-script: starting the Postfix mail system
[2022-03-28 19:30:53 +0000] [1] [INFO] Starting gunicorn 20.1.0
[2022-03-28 19:30:53 +0000] [1] [ERROR] Retrying in 1 second.
[2022-03-28 19:30:54 +0000] [1] [ERROR] Retrying in 1 second.
[2022-03-28 19:30:55 +0000] [1] [ERROR] Retrying in 1 second.
[2022-03-28 19:30:57 +0000] [1] [ERROR] Retrying in 1 second.
[2022-03-28 19:30:58 +0000] [1] [ERROR] Retrying in 1 second.
[2022-03-28 19:30:59 +0000] [1] [ERROR] Can't connect to ('::', 80)