docker安装

1 安装

1 添加yum源:

 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

2 安装

 yum install docker-ce 

3 查看docker版本

[root@szj ~]# docker -v
Docker version 18.09.6, build 481bc77156

2 启动运行

1 启动docker

[root@szj ~]# service docker start
Redirecting to /bin/systemctl start docker.service

2 查看客户端和服务端

[root@szj ~]# docker version
Client: Docker Engine - Community
 Version:           23.0.3
 API version:       1.42
 Go version:        go1.19.7
 Git commit:        3e7cbfd
 Built:             Tue Apr  4 22:04:18 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          23.0.3
  API version:      1.42 (minimum version 1.12)
  Go version:       go1.19.7
  Git commit:       59118bf
  Built:            Tue Apr  4 22:02:01 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.20
  GitCommit:        2806fc1057397dbaeefbea0e4e17bddfbd388f38
 runc:
  Version:          1.1.5
  GitCommit:        v1.1.5-0-gf19387a
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

3 Docker官方镜像仓库:

https://hub.docker.com

4 常见的docker命令:

 docker search java (相当于在hub.docker.com搜索)

 [root@szj ~]# docker pull java:8 从镜像仓库下载镜像到本地仓库(类似于maven)

注意:有时候执行pull命令的时候由于连接不上外国的网站,出现如下报错

解决方式:修改/etc/docker/ daemon.json,添加网易或阿里加速镜像进行加速

{"registry-mirrors": ["http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]}

重启docker服务即可。

 [root@szj ~]# docker images 查看本地仓库中的镜像

REPOSITORY          TAG                 IMAGE ID            CREATED         SIZE
java                8                   d23bdf5b1b1b        2 years ago         643MB 

5 运行一个容器

 [root@szj ~]# docker run -d -p 91:80 nginx:1.14 (-d后台运行, -p端口)

866c6f775a057605d23ec6e4885b207d011f350a79b2083495cb4df85d9f0072

此时就运行了一个docker容器,浏览器访问http://192.168.3.12:91/会看到运行的nginx

6 查看运行态的容器

 

[root@szj ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
bc28853025be        nginx:1.14          "nginx -g 'daemon of…"   3 minutes ago       Up 2 minutes        0.0.0.0:91->80/tcp   competent_cohen

 

7 查看容器详细信息

 [root@szj ~]# docker inspect bc28853025be 

使用dockerip访问nginx

在宿主机访问:

 [root@szj ~]# curl 172.17.0.2:80 

8 进入docker镜像

[root@szj ~]# docker container exec -it bc28853025be /bin/bash
root@bc28853025be:/#

3 构建自己的镜像

1 创建Dockerfile文件

内容:

#FROM指令用于指定基础镜像

FROM nginx

#RUN指令用于构建镜像阶段执行命令

RUN echo '<h1>this is zhuge nginx</h1>' > /usr/share/nginx/html/index.html

2 构建镜像

[root@szj app]# docker build -t nginx:zhuge .

Sending build context to Docker daemon  2.048kB

Step 1/2 : FROM nginx

Successfully built 3143d00dc239

Successfully tagged nginx:zhuge

查看镜像,就会发现多了一个镜像文件

[root@szj app]# docker images

REPOSITORY   TAG   IMAGE ID   CREATED   SIZE

Nginx   zhuge   3143d00dc239   34 seconds ago   109MB

3 运行镜像

[root@szj app]# docker run -d -p 93:80 nginx:zhuge

3514537d3f912c73c0a2ced5780bb895794645d2d7d41f0faf56198fd2a94148

 

4 将微服务打包成镜像并运行

以之前做的spring cloud eureka为例说明一下

1 创建Dockerfile文件

#基于哪个镜像

FROM java:8

#复制文件到容器

ADD cloud-eureka-server-1.0-SNAPSHOT.jar /app.jar

#声明需要暴露的端口

EXPOSE 8761

#配置容器启动后执行的命令

ENTRYPOINT ["java","-jar","/app.jar"]

2 构建镜像

[root@szj microService]# docker build -t microservice-eureka-server:zhuge .

Sending build context to Docker daemon  39.67MB

Step 1/4 : FROM java:8

 ---> d23bdf5b1b1b

Step 2/4 : ADD cloud-eureka-server-1.0-SNAPSHOT.jar /app.jar

 ---> 8b70ea19297b

Step 3/4 : EXPOSE 8761

 ---> Running in 0d1efcc3fdb3

Removing intermediate container 0d1efcc3fdb3

 ---> c0a2c2501855

Step 4/4 : ENTRYPOINT ["java","-jar","/app.jar"]

 ---> Running in 2b898ad6750b

Removing intermediate container 2b898ad6750b

 ---> c5b142446c7c

Successfully built c5b142446c7c

Successfully tagged microservice-eureka-server:zhuge

 

3 查看镜像

[root@szj microService]# docker images

 

4 启动镜像

[root@szj microService]# docker run -p 8761:8761 microservice-eureka-server:zhuge

 

5 浏览器测试

http://192.168.3.12:8761/

5 常用命令

5.1 docker运维相关

1 启动容器

docker run -dp 3000:3000 getting-started
docker run -dp 3000:3000 --mount type=volume,src=todo-db,target=/etc/todos getting-started //挂载volume,这里把todo-db挂载到容器中的/etc/todos/路径下

2 列出容器

 docker ps 

3 关闭一个运行中的容器

 docker rm -f <id> 

4 启动镜像时执行bash命令

 docker run -d ubuntu bash -c "shuf -i 1-10000 -n 1 -o /data.txt && tail -f /dev/null" 

这里启动一个ubuntu镜像并写一个随机数到/data.txt中,其中&&后面的命令用于保持容器运行。

5 创建volume

[root@localhost ~]# docker volume create todo-db
todo-db
[root@localhost ~]# docker volume ls
DRIVER    VOLUME NAME
local     todo-db

 

5.2 docker内部

1 执行内部命令

 docker exec <container-id> cat /data.txt 

2 进入容器内部

 docker container exec -it aded3ed2b62c /bin/sh 

 

posted @ 2023-04-17 23:13  zhenjingcool  阅读(27)  评论(0编辑  收藏  举报