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