Jaylon

导航

 

说明:由于比较匆忙 docker操作项较多 部分复杂理论引用了某些其他博客 部分操作解说不甚详细 有待改进

1、安装与启动

准备好Linus系统环境 网络 防火墙 selinux yum等

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum clean all
yum makecache

#依赖环境 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2


#查看可以安装的docker版本
yum list docker-ce --showduplicates | sort -r
yum install docker-ce #默认安装最新版本(未确认)

yum install docker-ce-17.12.0.ce #安装指定版本

----------------------------------
安装报错
安装出现 Problem: problem with installed package buildah…

删除podman
yum erase podman buildah -y

------------------------------
安装完毕后启动
systemctl daemon-reload
systemctl start docker
systemctl enable docker
systemctl status docker

验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version

重新安装
yum erase docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
yum install docker-ce

2、 镜像制作与容器使用

从远程仓库拉取一个纯净的 centos 系统镜像

docker search centos

[root@mysql1 yum.repos.d]# docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 6774 [OK]
ansible/centos7-ansible Ansible on Centos7 135 [OK]

docker pull 镜像名
查看本地镜像 docker images

[root@mysql1 yum.repos.d]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
[root@mysql1 yum.repos.d]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764 9 days ago 231MB

创建并进入容器
docker run -dit --name=容器名 镜像 id /bin/bash
启动容器时端口绑定映射到宿主服务器 详见博客文档
https://www.cnblogs.com/kevingrace/p/9453987.html
#######################################################################
启动容器 -d ( daemon方式,守护态运行)
docker run -it -d --name mysql8.0.26 -p 3306:3306 5d0da3dc9764
-p 小写p表示docker会选择一个具体的宿主机端口映射到容器内部开放的网络端口上。
-P 大写P表示docker会随机选择一个宿主机端口映射到容器内部开放的网络端口上。

如需修改端口 参见博客
https://www.cnblogs.com/ceason/articles/13819193.html

进入一个已经启动了的容器 详见博客
https://www.cnblogs.com/xhyan/p/6593075.html

使用docker attach
使用SSH
使用nsenter
使用exec

1:docker attach id 刚方法进入之后,exit退出就会导致容器stop
2:docker exec -it containerID /bin/bash 这个命令exit退出,ok容器还在运行

docker attach 容器id
例:
[root@Master ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6c0bad4f3e7 5d0da3dc9764 "/bin/bash" 11 hours ago Up 11 hours mysql8.0.26
[root@Master ~]# docker attach d6c0bad4f3e7
[root@d6c0bad4f3e7 /]#

 

查看所有的容器
docker ps -a

[root@Master docker]# docker run -dit --name=mysql8.0.26 5d0da3dc9764 /bin/bash
d6c0bad4f3e7d429a6961bcf5370f0aca78c9989a37cb4a40b48d722b89167ff
[root@Master docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6c0bad4f3e7 5d0da3dc9764 "/bin/bash" 43 seconds ago Up 42 seconds mysql8.0.26

查看ip
docker inspect 容器ID | grep IPAddress

拷贝本地文件到docker容器
docker cp 本地路径 容器长ID:容器路径

启动容器
docker run -it -d --name mysql8.0.26 -p 3327:3306 33027:33061 bffe90c794e4
docker run -it -d --name my-nginx3 -p 127.0.0.1:8888:80 docker.io/nginx

进入容器
docker exec -it 容器名 /bin/bash
退出
exit 

然后再容器中操作(相当于你在windows里安装了一个vm虚拟机;打开虚拟机 在虚拟机里实验配置,可以打包迁移方便等)

docker commit :从容器创建一个新的镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

docker commit -m "" -a "" [CONTAINER ID] [给新的镜像命名]
docker commit -a "提交的镜像作者" -m "说明" a404c6c174a2 mymysql:v1
docker commit -a "提交的镜像作者" -m "说明" [CONTAINER ID] [给新的镜像命名]

docker commit -a "Jaylon" -m "audit" 4500005d66a3 mysql8:audit

将制作好的镜像打成 tar 包
docker save -o tar包的名字 镜像名

别人接收到 tar 包之后,怎么使用 tar 包
 格式:docker load < tar 包所在路径 创建并运行容器

重命名REPOSITORY:TAG
docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)

关于容器镜像的导入导出
https://blog.csdn.net/u013730110/article/details/107620876

docker save [options] images [images…]
docker export [options] container

################################################
导出容器
docker export #ID or #Name > /home/export.tar

docker export -o nginx-test.tar nginx-test

docker export -o mysql-commercial:8.0.27_audit.tar audit

docker export -o mysql-commercial:8.0.27_audit.tar audit

导入
docker import nginx-test.tar nginx:imp
################################################

[root@CentOS8-4-2105 Jaylon]# docker tag bffe90c794e4 mysql/enterprise-server:v8.0.23
[root@CentOS8-4-2105 Jaylon]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql/enterprise-server v8.0.23 bffe90c794e4 11 months ago 492MB

docker rm REPOSITORY: TAG
docker rm -f REPOSITORY: TAG
#删除不掉 请注意退出所有登陆 不能占用

 

注意网络问题   

WARNING: IPv4 forwarding is disabled. Networking will not work.

解决办法:
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 #添加这段代码

#查看是否修改成功 (备注:返回1,就是成功)

[root@docker-node2 ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

#重启network服务

systemctl restart network && systemctl restart docker

再进入容器 就可以将打包的镜像迁移到其他地方使用了


宿主机器停止docker
[root@Master ~]# systemctl stop docker.socket
[root@Master ~]# systemctl stop docker.service

 

,"PortBindings":{"3306/tcp":[{"HostIp":"","HostPort":"3306"}]}
"3306/tcp":[{"HostIp":"",“HostPort”:“3307”}]

posted on 2021-11-20 14:20  Jaylon  阅读(78)  评论(0)    收藏  举报