Other

Docker自制镜像之内网系统部署操作

一、Docker安装

Docker之安装篇

离线包官方下载:

https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/

http://docker-release-purple-prod.s3-website-us-east-1.amazonaws.com/linux/centos/7/x86_64/stable/Packages/

二、Docker操作

搜索中央仓库可用镜像

$ docker search centos

2.1【镜像操作命令】

2.1.1 查看所有镜像docker images删除所有镜像

$ docker rmi $(docker images -q)

2.1.2 删除没有使用的镜像

docker rmi -f $(docker images | grep "" | awk "{print \$3}")

2.2【容器操作命令】

2.2.1 查看所有容器(包括未运行)

$ docker ps -a

2.2.2 删除所有未运行容器(https://www.jb51.net/article/111073.htm)

$ docker rm $(docker ps -a -q)

2.2.3 删除停止的容器

$ docker rm $(docker ps --all -q -f status=exited)

2.2.4.1 创建容器(暂不推荐)

$ docker create --name=myapp [增加可选参数]

2.2.4.2 创建并启动容器(推荐,注:显示指定--network=host 代替默认的 bridge 模式可能性能更好,--privileged表示以超级权限启动,-d(detach)表示以后台启动,-v(volume)表示共享挂载宿主机与容器目录(宿主机目录:容器目录)可以写多个 如:-v /opt/apps:/opt/apps -v /mnt/disk1:/mnt/disk1表示分别挂载两个目录,重要:这里以/usr/sbin/init作为入口启动的好处是避免在centos7下默认sshd/systemctl/d-bus等服务不会自启动的问题)

$ docker run -tid -v /mnt/disk1:/mnt/disk1 --privileged --name=myapp --hostname=myapp1 --network=bridge myapp /usr/sbin/init [其他可选参数]

或增加端口映射的语法(宿主机代理端口:容器端口,注:仅在--network=bridge模式下有效):

$ docker run -tid -p 58081:8081 -v /opt/apps:/opt/apps --privileged --name=myapp --hostname=myapp1 --network=bridge myapp /usr/sbin/init

若想映射UDP端口则使用命令:  -p 58081:8081/udp

2.2.5 修改容器配置(如果需要)

$ docker container update --restart always [container ID]

注:此方式仅支持一部分参数修改,如,不支持修改映射端口;

若想修改端口映射,可参考:动态修改docker映射端口

更多docker命令参数请参见

2.2.6 后台启动容器

$ docker start [containerID]

2.2.7 进入某个容器

$ docker exec -it [containerID] bash

2.2.8 查看容器日志

$ docker logs -f --tail 10 myapp

2.3【自制镜像的导入和导出】

2.3.1 保存容器

$ docker commit [containerID] myapp

2.3.2 导出镜像到本地文件

$ docker export [containerID] > myapp.img

2.3.3 导入本地镜像(:latest表示指定tag 可选)

$ docker import - myapp:latest < myapp.img

2.3.4 宿主机与容器文件拷贝

$ docker cp [OPTIONS] srcPath containerID:destPath

$ docker cp [OPTIONS] containerID:srcPath destPath

2.4【Docker CentOS7 安装SSH】

2.4.1 安装passwd,openssl,openssh-server

$ yum install passwd openssl openssh-server -y

启动sshd:

[root@myapp1 /]# /usr/sbin/sshd -D

这时报以下错误:

Could not load host key: /etc/ssh/ssh_host_rsa_key

Could not load host key: /etc/ssh/ssh_host_ecdsa_key

Could not load host key: /etc/ssh/ssh_host_ed25519_key

执行以下命令解决:

[root@myapp1 /]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''

[root@myapp1 /]# ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''

[root@myapp1 /]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key  -N ''

然后,修改 /etc/ssh/sshd_config 配置信息:

UsePAM yes 改为 UsePAM no

UsePrivilegeSeparation sandbox 改为 UsePrivilegeSeparation no

[root@myapp1 /]# sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config

[root@myapp1 /]# sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config

修改完后,重新启动sshd(注:此启动仅供测试sshd服务是否正常,重新创建容器时可显示指定启动参数,见1.2创建容器)

[root@myapp1 /]# /usr/sbin/sshd -D > /var/log/sshd.log

留言

您的电子邮箱地址不会被公开。