docker基本操作

 网站:    https://hub.docker.com/

容器的基本操作

  • 下载镜像
格式:docker pull 镜像名:TAG
     docker pull tomcat

 我的阿里云镜像加速器地址:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ehp8oymj.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 查看镜像
docker images  #查看本地所有的镜像
  • 删除镜像
docker rmi -f  镜像ID或镜像名:TAG
#删除指定的镜像
# -f 表示强制删除
  • 获取元数据信息
docker inspect 镜像ID或镜像名:TAG
#镜像的元信息,详细信息
  • 查看镜像ID
docker image  ls -q
docker ps -aq
  • 镜像的导入和导出
格式:docker image save  镜像ID或者镜像名:TAG  >存储路径/文件名
docker image save tomcat >/opt/tomcat.tar.gz  #导出
格式:docker image load -i  文件路径
docker image load -i /opt/tomcat.tar.gz
docker image tag 镜像ID 新镜像名
  • 容器运行
格式: docker run  --name '容器名' -p 对外端口:内部接口 -d  镜像名
docker run  --name tom -p 6666:8080 -d tomcat:8

格式: docker  run -it -name  '容器名'  -p 对外端口:内部接口 -d  镜像名
docker run  --name tom -p 6666:8080 -it  tomcat

注: --rm       退出即容器删除 (交互式)

       --restart=always  启动docker后,容器自动启动

  • 容器删除

 

docker rm $(docker ps -aq) #删除所有容器

 

  • 容器的连接方式
docker attach  容器名
docker exec -it  容器名  /bin/bash
  • 查看日志
格式:docker logs [-tf]  容器名称或容器ID

  docker logs tom

  • 查看容器PID
格式:docker container  top 镜像ID

docker container  top  36b4da4330f4
  • 容器的数据卷
格式: docker run  --name '容器名' -p 对外端口:内部接口 -d  -v 宿主机目录:容器内目录   镜像名

docker run  -d -p 80:8080 -v /opt/html:/usr/local/tomcat/webapps/ROOT tomcat:8
  • 数据卷容器
格式: docker run  --name '数据卷名称' -p 对外端口:内部接口 -d  -v 宿主机目录:容器内目录   镜像名

      docker run  -d  --volumes-from  数据卷名称  --name 容器名字  镜像名字

创建镜像

有时从仓库中下载的镜像不能满足我们的要求,需要我们自己创建一个自定义镜像

两种方式:
  • 更新镜像    docker commit 命令
  • 构建镜像    docker build 命令  需要Dockerfile文件

更新镜像

先使用

 

mkdir /var/run/sshd
echo 'UseDNS no' >> /etc/ssh/sshd_config
sed -i -e '/pam_logiinuid.so/d' /etc/pam.d/sshd
echo 'root:123456'| chpasswd
/usr/bin/ssh-keygen -A

 

创建仓库

  • registry仓库配置
1.启动容器
docker run -d -p 5000:5000 --restart=always  --name=registry -v /opt/regitsry:/var/lib/registry registry
2.修改配置文件
/etc/docker/daemon.json 中添加如下;
{ 
   "insecure-registries":["10.0.0.88:5000"],
   "registry-mirrors": ["https://ehp8oymj.mirror.aliyuncs.com"]

 }
3.重启容器
systemctl restart docker
  • 本地仓库加安全认证
yum install httpd-tools -y
mkdir  /opt/registry-auth/ -p
htpasswd -Bbn qin 123456 > /opt/registry-auth/htpasswd
docker run -d -v /opt/registry-auth/:/auth/ -v /opt/registry:/var/lib/registry -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -p 5000:5000 --restart=always --privileged=true --name registry registry
  • 验证仓库
docker login 10.0.0.88:5000
Username: qin
Password: 
Login Succeeded
docker push  10.0.0.88:5000/qin/centos:v2
  •     私有仓库habor配置

 1.  下载软件

放到/usr/local/bin下,给执行权限.

curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

要安装其他版本的Compose,请替换1.25.5 为要使用的Compose版本。

chmod +x /usr/local/bin/docker-compose

 

cd /usr/local/src
wget https://github.com/goharbor/harbor/releases/download/v2.0.0/harbor-offline-installer-v2.0.0.tgz

2.   解压软件安装依赖

[root@localhost harbor]# yum install docker-compose -y
[root@localhost harbor]# docker-compose --version
docker-compose version 1.18.0, build 8dd22a9
[root@localhost src]# tar xf harbor-offline-installer-v2.0.0.tgz 

3. 配置证书

 配置https:默认harbor是https,所以需要配置下https。

  • 1.需要的文件
   harbor.com.crt:服务器端的证书文件
   harbor.com.key:服务器端的秘钥
   ca.crt:客户端的证书文件
  • 2.生成秘钥和自签名证书
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt
  • 3.生成证书签名请求
openssl req -newkey rsa:4096 -nodes -sha256 -keyout harbor.com.key -out harbor.com.csr
  •  4.生成证书
openssl x509 -req -days 365 -in harbor.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out harbor.com.crt
  • 5.证书统一规划

[root@localhost harbor]# mkdir -p /etc/cert/harbor
[root@localhost harbor]# cp harbor.com.crt harbor.com.key /etc/cert/harbor

 4. 修改配置文件

[root@localhost harbor]# egrep -v '#|^$' harbor.yml
hostname: harbor.com
http:
  port: 80
https:
  port: 443
  certificate: /etc/cert/harbor/harbor.com.crt
  private_key: /etc/cert/harbor/harbor.com.key
harbor_admin_password: 123456
database:
  password: root123
  max_idle_conns: 50
  max_open_conns: 100
data_volume: /data/harbor
clair:
  updaters_interval: 12
trivy:
  ignore_unfixed: false
  skip_update: false
  insecure: false
jobservice:
  max_job_workers: 10
notification:
  webhook_job_max_retry: 10
chart:
  absolute_url: disabled
log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    location: /var/log/harbor
_version: 2.0.0
proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - clair
    - trivy

 5.安装harbar

[root@localhost harbor]# ./install.sh 

[Step 0]: checking if docker is installed ...

Note: docker version: 18.03.1

[Step 1]: checking docker-compose is installed ...

Note: docker-compose version: 1.18.0

[Step 2]: loading Harbor images ...
Loaded image: goharbor/notary-signer-photon:v2.0.0
Loaded image: goharbor/clair-adapter-photon:v2.0.0
Loaded image: goharbor/chartmuseum-photon:v2.0.0
Loaded image: goharbor/harbor-log:v2.0.0
Loaded image: goharbor/harbor-registryctl:v2.0.0
Loaded image: goharbor/registry-photon:v2.0.0
Loaded image: goharbor/clair-photon:v2.0.0
Loaded image: goharbor/notary-server-photon:v2.0.0
Loaded image: goharbor/redis-photon:v2.0.0
Loaded image: goharbor/nginx-photon:v2.0.0
Loaded image: goharbor/harbor-core:v2.0.0
Loaded image: goharbor/harbor-db:v2.0.0
Loaded image: goharbor/harbor-jobservice:v2.0.0
Loaded image: goharbor/trivy-adapter-photon:v2.0.0
Loaded image: goharbor/prepare:v2.0.0
Loaded image: goharbor/harbor-portal:v2.0.0


[Step 3]: preparing environment ...

[Step 4]: preparing harbor configs ...
prepare base dir is set to /usr/local/harbor
Generated configuration file: /config/log/logrotate.conf
Generated configuration file: /config/log/rsyslog_docker.conf
Generated configuration file: /config/nginx/nginx.conf
Generated configuration file: /config/core/env
Generated configuration file: /config/core/app.conf
Generated configuration file: /config/registry/config.yml
Generated configuration file: /config/registryctl/env
Generated configuration file: /config/registryctl/config.yml
Generated configuration file: /config/db/env
Generated configuration file: /config/jobservice/env
Generated configuration file: /config/jobservice/config.yml
Generated and saved secret to file: /data/secret/keys/secretkey
Creating harbor-log ... done
Generated configuration file: /compose_location/docker-compose.yml
Clean up the input dir


Creating registry ... done
Creating harbor-core ... done
Creating network "harbor_harbor" with the default driver
Creating nginx ... done
Creating redis ... 
Creating registryctl ... 
Creating harbor-portal ... 
Creating registry ... 
Creating harbor-db ... 
Creating harbor-core ... 
Creating harbor-jobservice ... 
Creating nginx ... 
✔ ----Harbor has been installed and started successfully.----

 

 网络类型

  • 本地网络
docker network ls    
bridge       # 默认模式 相当于NAT模式     
host         # 公有宿主机network NameSace      
none         # 无网络模式
container # 与其他容器公用
network NameSace

  • 跨主机之间的网络
1.macvlan网络的实现 (不能上外网)
#宿主机1
docker network create --driver macvlan  --subnet=10.0.0.0/24  --gateway=10.0.0.254 -o  parent=ens33  macvlan_1
docker run -it  --network=macvla1 --ip=10.0.0.11  centos /bin/bash
#宿主机2
docker network create --driver macvlan  --subnet=10.0.0.0/24  --gateway=10.0.0.254 -o  parent=ens33  macvlan_1
docker run -it  --network=macvlan_1 --ip=10.0.0.12 centos /bin/bash

 2. overlay 实现跨主机网络

1.启动consul
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
2.配置文件添加内容 (宿主机都要修改)
/etc/docker/daemon.json 
{
  "hosts": ["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"],
  "cluster-store" : "consul://10.0.0.88:8500",
  "cluster-advertise" :"10.0.0.88:2375"  
}
#其中标红的地址根据各自的ip修改
3.重启服务 systemctl restart docker
  •  创建overlay网络
docker network create -d overlay --subnet 172.18.0.0/24 --gateway 172.18.0.254 overlay_1
# 创建网络 -d 指定网络驱动程序为 overlay multi_host
docker network create -d 
注:再任意节点创建后会通过overlay同步到已连接的节点下创建网络。 命令:docker network ls 651b70b7c68c        overlay_1           overlay             global
  •  测试
docker run -it --net=overlay_1  busybox
#在一台主机上测试连通性
/ # ping 10.0.0.3 PING 10.0.0.3 (10.0.0.3): 56 data bytes 64 bytes from 10.0.0.3: seq=0 ttl=64 time=49.553 ms 64 bytes from 10.0.0.3: seq=1 ttl=64 time=0.654 ms 64 bytes from 10.0.0.3: seq=2 ttl=64 time=0.724 ms 64 bytes from 10.0.0.3: seq=3 ttl=64 time=1.022 ms 64 bytes from 10.0.0.3: seq=4 ttl=64 time=0.774 ms

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2022-04-19 19:01  那一天的蜕变  阅读(59)  评论(0)    收藏  举报