docker 入门

构建jar

  1. openjdk
docker pull openjdk:8-jre
docker run -it --entrypoint bash openjdk:8-jre
  1. build jar image
    pom.xml
 <build>
        <finalName>web-demo</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

docker build -t web-demo:lastast .

Jenkins

version: '3'

services:
  jenkins:
    container_name: "jenkins"
    image: jenkins:2.32.3-alpine
    ports:
      - "8081:8080"
      - "50000:50000"
    volumes:
      - /data/docker/jenkins/:/data/jenkins
    environment:
      - JENKINS_ADMIN_ID=root
      - JENKINS_ADMIN_PW=123456
      - JENKINS_MODE=master
    restart: "no"

touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

需要修改下目录权限, 因为当映射本地数据卷时,/home/docker/jenkins目录的拥有者为root用户,而容器中jenkins user的uid为1000
执行如下命令即可:

chown -R 1000:1000 /home/docker/jenkins

commit

将容器当前状态做成镜像。

docker commit -p 容器id tag

save/load 镜像

docker save imageId > xx.tar

Dockerfile

FROM fight139/nginx:latest
ADD index.html /usr/share/nginx/html/index.html
EXPOSE 80

EVN/RUN指令

RUN构建镜像执行的命令

FROM centos
EVN key value
RUN yum install curl

CMD命令 ENTRYPOINT命令

启动容器时执行的命令

网络模型

  • NAT
  • NONE
  • HOST
  • 联合网络
docker run -it --name demo1 --rm --net=container:containerId 

容器内安装软件

  1. 更新源
tee /etc/apt/sources.list << EOF
deb http://mirrors.163.com/debian/ jessie main non-free contrib
deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib
EOF
  1. 安装
apt-get update
apt-get install curl

常用命令

镜像

docker images

docker search mysql

docker pull mysql:5.7

docker rmi 镜像id

docker rmi $(docker images -aq) 删除所有镜像

根据仓库查询

docker images --filter "reference=nginx"
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              bc9a0695f571        8 days ago          133MB

容器

docker run -it image
-i 进入容器, docker run -it centos /bin/bash

--name=name 容器名称
-d 后台运行

Ctrl+P+Q:退出容器,不关闭容器 ,

docker rm -rf 容器id

容器的启动和停止

docker start 容器id
docker restart id
docker stop id
docker kill id

docker run -d --name=hello hello-world

docker rm -f $(docker ps -aq --filter "name=hello")

docker run -it --rm tomcat:9.0
--rm 当停止容器后,一般用来测试,用完及删除 stop后自动删除容器

常用其他命令

docker run -d centos

查看日志

docker logs --tail -ft 200 id

-tf t:timestemp f:format

docker top id 查看容器内部的进程信息

# docker top b1baec2df55c
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                1209                1192                0                   15:00               ?                   00:00:01            /portainer

docker inspect 查看容器的详细信息

-c 参数

进入容器

docker exec -it id /bin/bash 开启新的终端,可以在里面操作
docker attach id 进入容器正在执行的终端

拷贝容器内的文件

docker cp 容器id:/root/a.txt /root/a.txt

安装nginx

docker pull nginx

docker run -d --name nginx01 -p 8888:80 nginx
外部端口:容器端口 映射

数据卷

容器内部的文件和外部做映射

  1. nginx的配置文件修改,在外部处理
  2. tomcat的war包在外部替换,然后重启容器即可 将容器内的webapps做映射

docker stack deploy

默认使用stack会提醒

this node is not a swarm manager. Use "docker swarm init

需要做配置:

[root@docker ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock    #修改这一行内容
[root@docker ~]# systemctl daemon-reload
[root@docker ~]# systemctl restart docker

posted @ 2020-12-03 20:27  fight139  阅读(71)  评论(0)    收藏  举报