docker 学习大全

docker版本迭代

Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。

社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。

社区版按照stable和edge两种方式发布,每个季度更新stable版本;每个月份更新edge版本。

docker 安装卸载

之前的docker卸载
查看安装的docker
yum list installed | grep docker

卸载之前安装的docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
                  

准备yum仓库
cd /etc/yum.repos.d/ 
这里的源是centos7的,centos6不可以用
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum clean
yum makecache
查看可用版本的 Docker-ce
yum list docker-ce --showduplicates | sort -r

docker-ce.x86_64     17.03.0.ce-1.el7.centos           docker-ce-stable
docker-ce.x86_64     17.03.1.ce-1.el7.centos           docker-ce-stable
docker-ce.x86_64     17.03.2.ce-1.el7.centos           docker-ce-stable
docker-ce.x86_64     17.03.3.ce-1.el7                  docker-ce-stable
docker-ce.x86_64     17.06.0.ce-1.el7.centos           docker-ce-stable
docker-ce.x86_64     17.06.1.ce-1.el7.centos           docker-ce-stable
docker-ce.x86_64     17.06.2.ce-1.el7.centos           docker-ce-stable
docker-ce.x86_64     17.09.0.ce-1.el7.centos           docker-ce-stable
docker-ce.x86_64     17.09.1.ce-1.el7.centos           docker-ce-stable
docker-ce.x86_64     17.12.0.ce-1.el7.centos           docker-ce-stable
docker-ce.x86_64     17.12.1.ce-1.el7.centos           docker-ce-stable
docker-ce.x86_64     18.03.0.ce-1.el7.centos           docker-ce-stable
docker-ce.x86_64     18.03.1.ce-1.el7.centos           docker-ce-stable
docker-ce.x86_64     18.06.0.ce-3.el7                  docker-ce-stable
docker-ce.x86_64     18.06.1.ce-3.el7                  docker-ce-stable
docker-ce.x86_64     18.06.2.ce-3.el7                  docker-ce-stable
docker-ce.x86_64     18.06.3.ce-3.el7                  docker-ce-stable

安装指定docker
俩种方式
yum install -y docker-ce-17.03.2.ce-1.el7.centos 

yum install -y \
--setopt=obsoletes=0 \
docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch



安装后启动docker
systemctl start docker
修改docker源

vim /etc/docker/daemon.json

{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

或者

{
"registry-mirrors": [
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"dns": ["8.8.8.8","8.8.4.4"]
}

然后重启

systemctl daemon-reload
service docker restart

开机启动
chkconfig docker on 或者 systemctl enable docker
取消开机启动
systemctl disable docker

docker 命令

$ docker --version
$ systemctl daemon-reload  守护进程重启

$ service docker restart
$ service docker status
$ service docker stop

docker 镜像 操作

拉取镜像 docker pull docker.io/openpai/dev-box:v0.10.0
删除镜像 docker rmi -f ID
查看镜像 docker images

保存镜像到本地  docker   save  openpai/webportal  | gzip >   webportal.tar.gz 
加载镜像到仓库  docker   load -i  webportal.tar.gz    

更改镜像标签    docker tag myhello:1.0 wangjinlong/hello:latest
提交镜像       docker commit 23c18d958279 bigdata:v0.2

docker 容器 操作

运行容器 
		docker run -d -p 5000:80 docker.io/openpai/dev-box:v0.10.0    				          (hostPort:containerPort   5000 是主机端口,80是容器端口)
		 -v  冒号":"前面的目录是宿主机目录,后面的目录是容器内目录。
		可以在后面加参数指定数据位置
删除容器 docker  rm  容器ID或者容器名

启动容器(启动一个已经停止的容器或者已存在的镜像) 
	docker start  <ContainerID>
退出容器 exit
停止容器 
	docker stop <ContainerID>

进入已经运行的容器 
	docker attach <ContainerID>
	docker exec -it <ContainerID> /bin/bash
	第一种,当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示
	第二种,有的容器不支持 /bin/bash 可以替换为/bin/sh
查看全部docker容器 docker ps -a

保存镜像 docker commit 3bd0eef03413  demo:v1.3

docker 容器中的文件操作

拷贝文件到容器中
docker  cp  /Users/healerjean/Desktop/AAA.md   29df10f32d44:/etc/nginx/
容器中的文件拷贝出来
docker cp  29df10f32d44:/etc/nginx/nginx.conf  /Users/healerjean/Desktop

修改容器中文件

想修改tomcat的tomcat-user.xml文件 应该怎么操作呢?

答:

不要进入容器修改,因为在容器中修改的任何文件都是临时性的,容器重启后就丢失了,除非你修改后 commit 为一个新的镜像。

-V 挂载宿主机配置文件,不然你容器删除后,再重新启动你在容器内修改配置没有卵用

docker 管理界面

开启2375 docker远程管理端口
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H unix://var/run/docker.sock -H tcp://0.0.0.0:2375
systemctl daemon-reload
systemctl restart docker

拉取镜像
docker pull portainer/portainer 

启动容器
docker run -d -p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart=always  \
portainer/portainer

如果已经启动可以更新
docker run -d -p 9000:9000\
-v /var/run/docker.sock:/var/run/docker.sock \
update --restart=always \
portainer/portainer

docker 部署mysql

docker pull mysql:5.7


docker run -d -i --name mysql \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
--restart=always \
-v /app/data/mysqldockerdata/data:/var/lib/mysql \
-d mysql:5.7

-v /app/data/mysqldockerdata/conf/my.cnf:/etc/mysql/my.cnf \

开启远程登录(进入容器)
docker exec -it mysql /bin/bash
mysql -uroot -p123456
use mysql;
修改密码并开启远程登录:
alter user 'root'@'%' identified with mysql_native_password by'密码';
开启远程登录 
alter user 'root'@'%' identified by '密码';

docker部署私有仓库

docker pull registry

添加解决信任仓库
vim /etc/docker/daemon.json  

{
"registry-mirrors": [
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"dns": ["8.8.8.8","8.8.4.4"],
"insecure-registries": ["192.168.146.12:5000"]
}
运行
docker run -i -d  \
-v /software/registry:/var/lib/registry  \
-p 5000:5000  \
--restart=always  \
--name registry registry
重打标签,push到私有仓库
docker tag wangjinlong/busybox:latest    {IP}:{PORT}/busybox:latest

[root@node-2 software]# docker push 192.168.146.12:5000/busybox:latest
The push refers to a repository [192.168.146.12:5000/busybox]
5f70bf18a086: Pushed 
44c2569c4504: Pushed 
latest: digest: sha256:b9a758f71f4d54c4c23872c1093cc4147e1c0d3a7bef7e050206f37e30409bb3 size: 1146

私有仓库查看、删除管理

https://blog.csdn.net/duanbiren123/article/details/96482897

相应的参考命令:
#查询镜像
curl  <仓库地址>/v2/_catalog

#查询镜像tag(版本)
curl  <仓库地址>/v2/<镜像名>/tags/list

#查询镜像 digest_hash
curl --header "Accept:application/vnd.docker.distribution.manifest.v2+json" -I -XGET  <仓库地址>/v2/<镜像名>/manifests/<tag>

#删除镜像API
curl -I -X DELETE "<仓库地址>/v2/<镜像名>/manifests/<镜像digest_hash>"

这里虽然删除了,但是实际上硬盘地址还没有释放,是因为docker删除p_w_picpath只是删除的p_w_picpath的元数据信息。层数据并没有删除。现在进入registry中进行垃圾回收。

docker exec -it 071105c54db3 /bin/sh
/ # cd /var/lib/registry/

查看镜像大小

/var/lib/registry # du -sch
756.0K  .
756.0K  total
/var/lib/registry # registry garbage-collect /etc/docker/registry/config.yml 
busybox
 
0 blobs marked, 3 blobs and 0 manifests eligible for deletion
blob eligible for deletion: sha256:895ab622e92e18d6b461d671081757af7dbaa3b00e3e28e12505af7817f73649
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/89/895ab622e92e18d6b461d671081757af7dbaa3b00e3e28e12505af7817f73649  go.version=go1.11.2 instance.id=7c37e39d-6ad1-4139-b9d1-592a900b0902 service=registry
blob eligible for deletion: sha256:db8ee88ad75f6bdc74663f4992a185e2722fa29573abcc1a19186cc5ec09dceb
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/db/db8ee88ad75f6bdc74663f4992a185e2722fa29573abcc1a19186cc5ec09dceb  go.version=go1.11.2 instance.id=7c37e39d-6ad1-4139-b9d1-592a900b0902 service=registry
blob eligible for deletion: sha256:ee153a04d6837058642958836062f20badf39f558be3e6c7c7773ef7d8301d90
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/ee/ee153a04d6837058642958836062f20badf39f558be3e6c7c7773ef7d8301d90  go.version=go1.11.2 instance.id=7c37e39d-6ad1-4139-b9d1-592a900b0902 service=registry

再次查询,发现回收资源执行成功

/var/lib/registry # du -sch
0       .
0       total

翻墙下载镜像

登录到谷歌shell

docker login 登录dockerhub,

把原来的镜像重新 docker tag,然后push到dockerhub,然后再到国内拉取;

docker打包镜像

[root@node-1 test]# ll
总用量 33112
-r-------- 1 root root 33898556 12月 25 18:21 accountmanger.jar
-rw-r--r-- 1 root root      324 12月 26 14:50 Dockerfile
[root@node-1 test]# 
[root@node-1 test]# 
[root@node-1 test]#  docker build -t 192.168.146.12:v1.0 .
Sending build context to Docker daemon  33.9 MB
Step 1/6 : FROM openjdk:8-jdk-alpine
 ---> a3562aa0b991
Step 2/6 : ENV TZ Asia/Shanghai
 ---> Running in 358e809b8f50
 ---> 6501a1454eaa
Removing intermediate container 358e809b8f50
Step 3/6 : RUN ln -snf /usr/share/zoneinfo/$TZ  /etc/localtime && echo $TZ > /etc/timezon
 ---> Running in 9b4db13521ab
 ---> 8bc815749c09
Removing intermediate container 9b4db13521ab
Step 4/6 : VOLUME /tmp
 ---> Running in 48e179c09e20
 ---> 8fd13fc2a283
Removing intermediate container 48e179c09e20
Step 5/6 : ADD ./accountmanger.jar /
 ---> d206b4029a4e
Removing intermediate container 6f3987d39171
Step 6/6 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /accountmanger.jar
 ---> Running in 5a9cf2388563
 ---> 1b648ada6bc5
Removing intermediate container 5a9cf2388563
Successfully built 1b648ada6bc5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值