{"id":35262,"date":"2023-12-26T14:45:12","date_gmt":"2024-03-03T13:01:41","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8aws%ef%bc%88amazon-linux2023%ef%bc%89%e5%9c%a8docker%e4%b8%8a%e6%9e%84%e5%bb%bavsftpd%e3%80%82\/"},"modified":"2024-05-04T15:29:10","modified_gmt":"2024-05-04T07:29:10","slug":"%e4%bd%bf%e7%94%a8aws%ef%bc%88amazon-linux2023%ef%bc%89%e5%9c%a8docker%e4%b8%8a%e6%9e%84%e5%bb%bavsftpd%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8aws%ef%bc%88amazon-linux2023%ef%bc%89%e5%9c%a8docker%e4%b8%8a%e6%9e%84%e5%bb%bavsftpd%e3%80%82\/","title":{"rendered":"\u4f7f\u7528AWS\uff08Amazon Linux2023\uff09\u5728docker\u4e0a\u6784\u5efavsftpd"},"content":{"rendered":"<h1>\u7684\u662f\u4ec0\u4e48\uff1f<\/h1>\n<p>\u672c\u6587\u4e2d\u8bb0\u5f55\u4e86\u5728AWS\u73af\u5883\u4e2d\u521b\u5efa\u4e86\u4e00\u4e2aFTP\u670d\u52a1\u5668\uff08\u5728Docker\u5bb9\u5668\u4e2d\u5b89\u88c5vsftpd\uff09\uff0c\u5e76\u5b9e\u9645\u6267\u884c\u4e86FTP\u547d\u4ee4\u5e76\u53d6\u5f97\u6587\u4ef6\u7684\u9a8c\u8bc1\u5185\u5bb9\u3002<br \/>\n\u901a\u8fc7\u521b\u5efaDockerfile\u5e76\u751f\u6210\u955c\u50cf\uff0c\u53ef\u4ee5\u4e86\u89e3\u5b89\u88c5\u4e86\u4ec0\u4e48\uff0c\u5e76\u4e14\u91cd\u65b0\u6784\u5efa\u73af\u5883\u4e5f\u66f4\u52a0\u5bb9\u6613\u3002<\/p>\n<h1>\u524d\u63d0\u6761\u4ef6 (paraphrased in Chinese)<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">FTP\u30b5\u30fc\u30d0\u306eEC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306f\u4ee5\u4e0b\u3067\u4f5c\u6210<\/ul>\n<\/li>\n<\/ul>\n<p>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\uff1aAmazon Linux2023\uff08\u203b1\uff09<br \/>\n\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u30bf\u30a4\u30d7\uff1at2-micro<\/p>\n<p>FTP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306eEC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306f\u4ee5\u4e0b\u3067\u4f5c\u6210<\/p>\n<p>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\uff1aRHEL9.0<br \/>\n\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u30bf\u30a4\u30d7\uff1at2-micro<\/p>\n<p>FTP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u74b0\u5883\u306e\u69cb\u7bc9\u306f\u30011\u3064\u524d\u306b\u6295\u7a3f\u3057\u305f\u4e0b\u8a18\u8a18\u4e8b\u3092\u53c2\u7167\u304f\u3060\u3055\u3044\u3002<br \/>\nAWS\u74b0\u5883\u3067FTP\u30b5\u30fc\u30d0\u3092\u69cb\u7bc9\u3057\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089FTP\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c<\/p>\n<p>\u6211\u672c\u6765\u60f3\u5728RHEL\u4e0a\u6784\u5efa\u4e00\u4e2adocker\u5bb9\u5668\uff0c\u5e76\u5b89\u88c5vsftpd\u3002\u4f46\u662f\uff0cRHEL8\u53ca\u66f4\u9ad8\u7248\u672c\u8981\u4f7f\u7528docker\u9700\u8981\u63d0\u524d\u51c6\u5907\u4e00\u4e9b\u8bf8\u5982Podman\u7684\u5de5\u5177\uff0c\u6211\u5c1d\u8bd5\u521b\u5efaDockerfile\u5e76\u5b89\u88c5vsftpd\uff0c\u4f46\u4e0d\u6210\u529f\uff08\u4e0d\u77e5\u9053vsftpd\u7684RPM\u6587\u4ef6\u4e0b\u8f7d\u5730\u5740\uff09\u3002<\/p>\n<p>\u4f46\u662f\uff0c\u8fd9\u6b21\u7684\u76ee\u7684\u662f\u5728Linux\u64cd\u4f5c\u7cfb\u7edf\u4e0a\u521b\u5efa\u4e00\u4e2a\u7528\u4e8evsftpd\u73af\u5883\u7684docker\u5bb9\u5668\uff0c\u6240\u4ee5\u6211\u51b3\u5b9a\u4f7f\u7528Amazon Linux 2023\u4f5c\u4e3a\u5e73\u53f0\u3002\uff08\u800c\u4e14\u5728\u6709\u65f6\u95f4\u7684\u65f6\u5019\uff0c\u6211\u60f3\u518d\u6b21\u5c1d\u8bd5\u4e00\u4e0b\uff09<\/p>\n<h1>\u8bb0\u5f55\u8303\u56f4<\/h1>\n<p>\u6211\u5c06\u63cf\u8ff0\u4eceFTP\u5ba2\u6237\u7aef\u8fde\u63a5\u5230FTP\u670d\u52a1\u5668\uff0c\u5e76\u6267\u884cFTP\u547d\u4ee4(GET)\u6765\u83b7\u53d6\u6587\u4ef6\u7684\u8fc7\u7a0b\u3002\uff08\u6211\u63d0\u4f9b\u4e86\u6267\u884c\u547d\u4ee4\u548c\u65e5\u5fd7\u7684\u8bb0\u5f55\uff0c\u5e0c\u671b\u5bf9\u60a8\u53c2\u8003\u540e\u7684\u6267\u884c\u7ed3\u679c\u6709\u6240\u5e2e\u52a9\uff09<\/p>\n<p>\u5728\u5c1d\u8bd5\u7684\u8fc7\u7a0b\u4e2d\uff0c\u6211\u53c2\u8003\u4e86\u4ee5\u4e0b\u7f51\u7ad9\uff1a<br \/>\n\u901a\u8fc7Dockerfile\u521b\u5efa\u4e00\u4e2a\u5728CentOS\u4e0a\u8fd0\u884cvsftpd\u7684Docker\u5bb9\u5668\uff0c\u540c\u65f6\u5b66\u4e60\u5982\u4f55\u4f7f\u7528Docker<br \/>\nAmazon Linux\uff08\u5b98\u65b9\uff09\u203b\u5728Dockerfile\u7684FROM\u6307\u4ee4\u4e2d\u6307\u5b9aAmazon Linux 2023\u7684\u7248\u672c<br \/>\nCompose\u6587\u4ef6\u7684\u7248\u672c\u548c\u5347\u7ea7\u203b\u5728\u521b\u5efadocker-compose.yml\u6587\u4ef6\u65f6\u6307\u5b9a\u7684\u7248\u672c<\/p>\n<h1>\u9884\u5148\u51c6\u5907\uff08\u521b\u5efa\u64cd\u4f5c\u76ee\u5f55\uff09<\/h1>\n<pre class=\"post-pre\"><code><span class=\"c\"># \/usr\/local\u306b\u306f\u3001docker\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210<\/span>\r\n<span class=\"c\"># \/usr\/local\/docker\u306b\u306f\u3001conteinar01\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210<\/span>\r\n<span class=\"o\">[<\/span>ec2-user@ip-xxx-xx-xx-xx docker]<span class=\"nv\">$ <\/span><span class=\"nb\">pwd<\/span>\r\n\/usr\/local\/docker\r\n<span class=\"o\">[<\/span>ec2-user@ip-xxx-xx-xx-xx docker]<span class=\"nv\">$ <\/span><span class=\"nb\">ls<\/span> <span class=\"nt\">-la<\/span> <span class=\"nb\">.<\/span>\r\ntotal 0\r\ndrwxr-xr-x.  3 root root  25 Nov  3 22:29 <span class=\"nb\">.<\/span>\r\ndrwxr-xr-x. 13 root root 145 Nov  3 22:29 ..\r\ndrwxr-xr-x.  2 root root   6 Nov  3 22:29 container01\r\n<\/code><\/pre>\n<h1>\u5b89\u88c5Docker<\/h1>\n<pre class=\"post-pre\"><code><span class=\"nb\">sudo <\/span>yum <span class=\"nb\">install<\/span> <span class=\"nt\">-y<\/span> docker\r\n<\/code><\/pre>\n<details>\u6267\u884c\u65e5\u5fd7<br \/>\n[ec2-user@ip-xxx-xx-xx-xx docker]$ sudo yum install -y docker<br \/>\n\u4e0a\u6b21\u5143\u6570\u636e\u5230\u671f\u68c0\u67e5\u65f6\u95f4\uff1a0\u5c0f\u65f616\u5206\u949f19\u79d2\u524d\uff0c2023\u5e7411\u67083\u65e5\u661f\u671f\u4e9422\u70b923\u520630\u79d2\u3002<br \/>\n\u5df2\u89e3\u51b3\u4f9d\u8d56\u5173\u7cfb\u3002<br \/>\n===============================================================================================================================<br \/>\n\u8f6f\u4ef6\u5305 \u67b6\u6784 \u7248\u672c \u4ed3\u5e93 \u5927\u5c0f<br \/>\n===============================================================================================================================<br \/>\n\u6b63\u5728\u5b89\u88c5:<br \/>\ndocker x86_64 24.0.5-1.amzn2023.0.2 amazonlinux 42 M<br \/>\n\u6b63\u5728\u5b89\u88c5\u4f9d\u8d56\u9879:<br \/>\ncontainerd x86_64 1.7.2-1.amzn2023.0.4 amazonlinux 34 M<br \/>\niptables-libs x86_64 1.8.8-3.amzn2023.0.2 amazonlinux 401 k<br \/>\niptables-nft x86_64 1.8.8-3.amzn2023.0.2 amazonlinux 183 k<br \/>\nlibcgroup x86_64 3.0-1.amzn2023.0.1 amazonlinux 75 k<br \/>\nlibnetfilter_conntrack x86_64 1.0.8-2.amzn2023.0.2 amazonlinux 58 k<br \/>\nlibnfnetlink x86_64 1.0.1-19.amzn2023.0.2 amazonlinux 30 k<br \/>\nlibnftnl x86_64 1.2.2-2.amzn2023.0.2 amazonlinux 84 k<br \/>\npigz x86_64 2.5-1.amzn2023.0.3 amazonlinux 83 k<br \/>\nrunc x86_64 1.1.7-1.amzn2023.0.3 amazonlinux 3.0 M\u4e8b\u52a1\u603b\u7ed3<br \/>\n===============================================================================================================================<br \/>\n\u5b89\u88c5 10 \u4e2a\u8f6f\u4ef6\u5305<\/p>\n<p>\u603b\u4e0b\u8f7d\u5927\u5c0f\uff1a80 M<br \/>\n\u5df2\u5b89\u88c5\u5927\u5c0f\uff1a306 M<br \/>\n\u4e0b\u8f7d\u8f6f\u4ef6\u5305\uff1a<br \/>\n(1\/10): libnftnl-1.2.2-2.amzn2023.0.2.x86_64.rpm 664 kB\/s | 84 kB 00:00<br \/>\n(2\/10): pigz-2.5-1.amzn2023.0.3.x86_64.rpm 1.3 MB\/s | 83 kB 00:00<br \/>\n(3\/10): libnfnetlink-1.0.1-19.amzn2023.0.2.x86_64.rpm 1.4 MB\/s | 30 kB 00:00<br \/>\n(4\/10): iptables-libs-1.8.8-3.amzn2023.0.2.x86_64.rpm 1.8 MB\/s | 401 kB 00:00<br \/>\n(5\/10): runc-1.1.7-1.amzn2023.0.3.x86_64.rpm 12 MB\/s | 3.0 MB 00:00<br \/>\n(6\/10): libcgroup-3.0-1.amzn2023.0.1.x86_64.rpm 1.5 MB\/s | 75 kB 00:00<br \/>\n(7\/10): libnetfilter_conntrack-1.0.8-2.amzn2023.0.2.x86_64.rpm 1.1 MB\/s | 58 kB 00:00<br \/>\n(8\/10): iptables-nft-1.8.8-3.amzn2023.0.2.x86_64.rpm 2.3 MB\/s | 183 kB 00:00<br \/>\n(9\/10): containerd-1.7.2-1.amzn2023.0.4.x86_64.rpm 45 MB\/s | 34 MB 00:00<br \/>\n(10\/10): docker-24.0.5-1.amzn2023.0.2.x86_64.rpm 37 MB\/s | 42 MB 00:01<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n\u603b\u8ba1 55 MB\/s | 80 MB 00:01<br \/>\n\u6b63\u5728\u8fd0\u884c\u4e8b\u52a1\u68c0\u67e5<br \/>\n\u4e8b\u52a1\u68c0\u67e5\u6210\u529f\u3002<br \/>\n\u6b63\u5728\u8fd0\u884c\u4e8b\u52a1\u6d4b\u8bd5<br \/>\n\u4e8b\u52a1\u6d4b\u8bd5\u6210\u529f\u3002<br \/>\n\u6b63\u5728\u8fd0\u884c\u4e8b\u52a1<br \/>\nPreparing : 1\/1<br \/>\nInstalling : runc-1.1.7-1.amzn2023.0.3.x86_64 1\/10<br \/>\nInstalling : containerd-1.7.2-1.amzn2023.0.4.x86_64 2\/10<br \/>\nRunning scriptlet: containerd-1.7.2-1.amzn2023.0.4.x86_64 2\/10<br \/>\nInstalling : libcgroup-3.0-1.amzn2023.0.1.x86_64 3\/10<br \/>\nInstalling : libnfnetlink-1.0.1-19.amzn2023.0.2.x86_64 4\/10<br \/>\nInstalling : libnetfilter_conntrack-1.0.8-2.amzn2023.0.2.x86_64 5\/10<br \/>\nInstalling : iptables-libs-1.8.8-3.amzn2023.0.2.x86_64 6\/10<br \/>\nInstalling : pigz-2.5-1.amzn2023.0.3.x86_64 7\/10<br \/>\nInstalling : libnftnl-1.2.2-2.amzn2023.0.2.x86_64 8\/10<br \/>\nInstalling : iptables-nft-1.8.8-3.amzn2023.0.2.x86_64 9\/10<br \/>\nRunning scriptlet: iptables-nft-1.8.8-3.amzn2023.0.2.x86_64 9\/10<br \/>\nRunning scriptlet: docker-24.0.5-1.amzn2023.0.2.x86_64 10\/10<br \/>\nInstalling : docker-24.0.5-1.amzn2023.0.2.x86_64 10\/10<br \/>\nRunning scriptlet: docker-24.0.5-1.amzn2023.0.2.x86_64 10\/10<br \/>\n\u6b63\u5728\u521b\u5efa\u7b26\u53f7\u94fe\u63a5\/etc\/systemd\/system\/sockets.target.wants\/docker.socket \u2192 \/usr\/lib\/systemd\/system\/docker.socket\u3002<\/p>\n<p>Verifying : libnftnl-1.2.2-2.amzn2023.0.2.x86_64 1\/10<br \/>\nVerifying : iptables-libs-1.8.8-3.amzn2023.0.2.x86_64 2\/10<br \/>\nVerifying : runc-1.1.7-1.amzn2023.0.3.x86_64 3\/10<br \/>\nVerifying : pigz-2.5-1.amzn2023.0.3.x86_64 4\/10<br \/>\nVerifying : libnfnetlink-1.0.1-19.amzn2023.0.2.x86_64 5\/10<br \/>\nVerifying : libcgroup-3.0-1.amzn2023.0.1.x86_64 6\/10<br \/>\nVerifying : docker-24.0.5-1.amzn2023.0.2.x86_64 7\/10<br \/>\nVerifying : containerd-1.7.2-1.amzn2023.0.4.x86_64 8\/10<br \/>\nVerifying : libnetfilter_conntrack-1.0.8-2.amzn2023.0.2.x86_64 9\/10<br \/>\nVerifying : iptables-nft-1.8.8-3.amzn2023.0.2.x86_64 10\/10<\/p>\n<p>\u5df2\u5b89\u88c5:<br \/>\ncontainerd-1.7.2-1.amzn2023.0.4.x86_64 docker-24.0.5-1.amzn2023.0.2.x86_64<br \/>\niptables-libs-1.8.8-3.amzn2023.0.2.x86_64 iptables-nft-1.8.8-3.amzn2023.0.2.x86_64<br \/>\nlibcgroup-3.0-1.amzn2023.0.1.x86_64 libnetfilter_conntrack-1.0.8-2.amzn2023.0.2.x86_64<br \/>\nlibnfnetlink-1.0.1-19.amzn2023.0.2.x86_64 libnftnl-1.2.2-2.amzn2023.0.2.x86_64<br \/>\npigz-2.5-1.amzn2023.0.3.x86_64 runc-1.1.7-1.amzn2023.0.3.x86<\/p>\n<\/details>\n<h1>\u542f\u52a8Docker\u670d\u52a1\uff08\u2605\u6240\u793a\u4e3a\u6267\u884c\u547d\u4ee4\uff09<\/h1>\n<pre class=\"post-pre\"><code><span class=\"o\">[<\/span>ec2-user@ip-xxx-xx-xx-xx docker]<span class=\"nv\">$ <\/span><span class=\"nb\">sudo <\/span>service docker start\u3000\u2605\r\nRedirecting to \/bin\/systemctl start docker.service\r\n<span class=\"o\">[<\/span>ec2-user@ip-xxx-xx-xx-xx docker]<span class=\"nv\">$ <\/span>docker <span class=\"nt\">--version<\/span>\u3000\u2605\r\nDocker version 24.0.5, build ced0996\r\n<\/code><\/pre>\n<h1>\u8bbe\u7f6e\u4f7f\u5f97\u300cec2-user\u300d\u65e0\u9700\u4f7f\u7528sudo\u547d\u4ee4\u5373\u53ef\u6267\u884cdocker\u547d\u4ee4\u3002<\/h1>\n<pre class=\"post-pre\"><code><span class=\"c\">#su\u5207\u308a\u66ff\u3048<\/span>\r\n<span class=\"nb\">sudo <\/span>su\r\n<span class=\"c\">#Docker\u30b0\u30eb\u30fc\u30d7\u306bec2-user\u3092\u7d10\u3065\u3051\u308b<\/span>\r\n<span class=\"nb\">sudo <\/span>gpasswd <span class=\"nt\">-a<\/span> ec2-user docker\r\n<span class=\"c\">#docker info\u30b3\u30de\u30f3\u30c9\u304csudo\u306a\u3057\u3067\u5b9f\u884c\u3067\u304d\u308b<\/span>\r\ndocker info\r\n<\/code><\/pre>\n<details>\u5b9e\u884c\u65e5\u5fd7\uff08\u2605\u90e8\u5206\u662f\u6267\u884c\u547d\u4ee4\uff09<br \/>\n[ec2-user@ip-xxx-xx-xx-xx docker]$ sudo su\u3000\u2605<br \/>\n[root@ip-xxx-xx-xx-xx docker]# grep -i docker \/etc\/group\u3000\u2605\u786e\u8ba4\u66f4\u6539\u524d\u7684\u60c5\u51b5<br \/>\ndocker:x:992:<br \/>\n[root@ip-xxx-xx-xx-xx docker]# sudo gpasswd -a ec2-user docker\u3000\u2605<br \/>\n\u5c06\u7528\u6237ec2-user\u6dfb\u52a0\u5230docker\u7ec4<br \/>\n[root@ip-xxx-xx-xx-xx docker]# grep -i docker \/etc\/group\u3000\u2605\u786e\u8ba4\u66f4\u6539\u540e\u7684\u60c5\u51b5<br \/>\ndocker:x:992:ec2-user<br \/>\n[ec2-user@ip-xxx-xx-xx-xx docker]$ docker info\u3000\u2605<br \/>\n\u5ba2\u6237\u7aef\uff1a<br \/>\n\u7248\u672c\uff1a24.0.5<br \/>\n\u4e0a\u4e0b\u6587: \u9ed8\u8ba4<br \/>\n\u8c03\u8bd5\u6a21\u5f0f\uff1afalse<br \/>\n\u63d2\u4ef6\uff1a<br \/>\nbuildx\uff1aDocker Buildx (Docker Inc.)<br \/>\n\u7248\u672c\uff1av0.0.0+unknown<br \/>\n\u8def\u5f84\uff1a\/usr\/libexec\/docker\/cli-plugins\/docker-buildx\u670d\u52a1\u5668\uff1a<br \/>\n\u9519\u8bef\uff1a\u5c1d\u8bd5\u8fde\u63a5\u5230Docker\u5b88\u62a4\u7a0b\u5e8f\u5957\u63a5\u5b57unix:\/\/\/var\/run\/docker.sock\u65f6\u6743\u9650\u88ab\u62d2\u7edd\uff1aGet &#8220;http:\/\/%2Fvar%2Frun%2Fdocker.sock\/v1.24\/info&#8221;: dial unix \/var\/run\/docker.sock: connect: permission denied<br \/>\n\u9519\u8bef\uff1a\u6253\u5370\u4fe1\u606f\u65f6\u51fa\u9519\u3000\u2605\u5728\u8fd9\u4e2a\u76ee\u7684\u4e0a\u4e0d\u5fc5\u62c5\u5fc3\u8fd9\u4e2a\u9519\u8bef\uff0c\u7ee7\u7eed\u8fdb\u884c\u3002<\/p>\n<\/details>\n<h1>\u5c06Docker\u670d\u52a1\u914d\u7f6e\u4e3a\u81ea\u52a8\u542f\u52a8<\/h1>\n<pre class=\"post-pre\"><code><span class=\"nb\">sudo <\/span>systemctl <span class=\"nb\">enable <\/span>docker\r\nsystemctl is-enabled docker\r\n<\/code><\/pre>\n<details>\u5b9f\u884c\u30ed\u30b0\uff08\u2605\u90e8\u5206\u304c\u5b9f\u884c\u30b3\u30de\u30f3\u30c9\uff09<br \/>\n[ec2-user@ip-xxx-xx-xx-xx docker]$ sudo systemctl enable docker<br \/>\nCreated symlink \/etc\/systemd\/system\/multi-user.target.wants\/docker.service \u2192 \/usr\/lib\/systemd\/system\/docker.service.<br \/>\n[ec2-user@ip-xxx-xx-xx-xx docker]$ systemctl is-enabled docker<br \/>\nenabled<\/details>\n<h1>\u5b89\u88c5Docker Compose<\/h1>\n<pre class=\"post-pre\"><code><span class=\"c\">#docker-compose\u306e\u30d0\u30a4\u30ca\u30ea\u30d5\u30a1\u30a4\u30eb\u3092\u683c\u7d0d\u3059\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u4f5c\u6210\u3057\u3066\u304a\u304f<\/span>\r\n<span class=\"c\">#\/usr\/local\/lib\/docker\/cli-plugins\/docker-compose<\/span>\r\n<span class=\"nb\">sudo <\/span>curl   <span class=\"nt\">-L<\/span> https:\/\/github.com\/docker\/compose\/releases\/download\/v<span class=\"k\">${<\/span><span class=\"nv\">VER<\/span><span class=\"k\">}<\/span>\/docker-compose-<span class=\"si\">$(<\/span><span class=\"nb\">uname<\/span> <span class=\"nt\">-s<\/span><span class=\"si\">)<\/span>-<span class=\"si\">$(<\/span><span class=\"nb\">uname<\/span> <span class=\"nt\">-m<\/span><span class=\"si\">)<\/span>   <span class=\"nt\">-o<\/span> \/usr\/local\/lib\/docker\/cli-plugins\/docker-compose\r\n<span class=\"c\">#\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305fdocker-compose\uff08\u30d0\u30a4\u30ca\u30ea\u30d5\u30a1\u30a4\u30eb\uff09\u306b\u5b9f\u884c\u6a29\u9650\u3092\u4ed8\u4e0e<\/span>\r\n<span class=\"nb\">sudo chmod<\/span> +x \/usr\/local\/lib\/docker\/cli-plugins\/docker-compose\r\n<span class=\"c\">#\/usr\/bin\/\u306b\/usr\/local\/lib\/docker\/cli-plugins\/docker-compose\u3078\u306e\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u3092\u8a2d\u5b9a<\/span>\r\n<span class=\"nb\">sudo ln<\/span> <span class=\"nt\">-s<\/span> \/usr\/local\/lib\/docker\/cli-plugins\/docker-compose \/usr\/bin\/docker-compose\r\n<span class=\"c\">#docker-compose\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u78ba\u8a8d<\/span>\r\ndocker-compose <span class=\"nt\">--version<\/span>\r\n<\/code><\/pre>\n<details>\u5b9f\u884c\u30ed\u30b0\uff08\u2605\u90e8\u5206\u304c\u5b9f\u884c\u30b3\u30de\u30f3\u30c9\uff09<br \/>\n[ec2-user@ip-xxx-xx-xx-xx docker]$ sudo curl -L https:\/\/github.com\/docker\/compose\/releases\/download\/v${VER}\/docker-compose-$(uname -s)-$(uname -m) -o \/usr\/local\/lib\/docker\/cli-plugins\/docker-compose<br \/>\n% Total % Received % Xferd Average Speed Time Time Time Current<br \/>\nDload Upload Total Spent Left Speed<br \/>\n0 0 0 0 0 0 0 0 &#8211;:&#8211;:&#8211; &#8211;:&#8211;:&#8211; &#8211;:&#8211;:&#8211; 0<br \/>\n100 56.8M 100 56.8M 0 0 63.0M 0 &#8211;:&#8211;:&#8211; &#8211;:&#8211;:&#8211; &#8211;:&#8211;:&#8211; 139M<br \/>\n[ec2-user@ip-xxx-xx-xx-xx docker]$ sudo chmod +x \/usr\/local\/lib\/docker\/cli-plugins\/docker-compose<br \/>\n#\/usr\/bin\/\u306b\/usr\/local\/lib\/docker\/cli-plugins\/docker-compose\u3078\u306e\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u3092\u8a2d\u5b9a<br \/>\n[ec2-user@ip-xxx-xx-xx-xx docker]$ sudo ln -s \/usr\/local\/lib\/docker\/cli-plugins\/docker-compose \/usr\/bin\/docker-compose<\/details>\n<h1>\u51c6\u5907\u300cmyapp.sh\u300d<\/h1>\n<p>vsftpd\u306f\u30c7\u30fc\u30e2\u30f3\u8d77\u52d5\u3059\u308b\u305f\u3081\u3001vsftpd\u306e\u8d77\u52d5\u51e6\u7406\u304c\u7d42\u4e86\u3059\u308b\u3068Docker\u30b3\u30f3\u30c6\u30ca\u3082\u7d42\u4e86\u3057\u3066\u3057\u307e\u3046\u305f\u3081\u3001\u300ctail -f \/dev\/null\u300d\u3092\u5229\u7528\u3057\u3066Docker\u30b3\u30f3\u30c6\u30ca\u304c\u7d42\u4e86\u3057\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u3002<\/p>\n<p>\u30fb\u6211\u7684\u5e94\u7528\u7a0b\u5e8f.sh<\/p>\n<pre class=\"post-pre\"><code><span class=\"c\">#!\/usr\/bin\/bash<\/span>\r\n<span class=\"c\">#vsftpd\u3092\u8d77\u52d5<\/span>\r\n\/usr\/sbin\/vsftpd \/etc\/vsftpd\/vsftpd.conf\r\n<span class=\"c\">#\u30c7\u30fc\u30e2\u30f3\u8d77\u52d5\u306eDocker\u30b3\u30f3\u30c6\u30ca\u3092\u7d42\u4e86\u3055\u305b\u306a\u3044<\/span>\r\n<span class=\"nb\">tail<\/span> <span class=\"nt\">-f<\/span> \/dev\/null\r\n<\/code><\/pre>\n<h1>\u521b\u5efaDockerfile<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u300cAmazon Linux2023\u300d\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u5229\u7528<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">FTP\u30b5\u30fc\u30d0\u306f\u300cvsftpd\u300d\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u4f5c\u696d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u300c\/usr\/local\/docker\u300d<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30dd\u30fc\u30c8\u756a\u53f7\u306f\u300c21\u300d\u3001\u300c60000-60100\u300d\u3092\u6307\u5b9a<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u300cvsftpd\u300d\u8d77\u52d5\u5411\u3051\u306b\u4e0a\u8a18\u3067\u6e96\u5099\u3057\u305f\u300cmyapp.sh\u300d\u3092\u6307\u5b9a\u3057\u3066\u5b9f\u884c<\/ul>\n<details>Dockerfile\u306e\u5185\u5bb9<br \/>\n#\u66f8\u5f0f\uff1a\u3000FROM [\u30a4\u30e1\u30fc\u30b8] [\u30bf\u30b0]<br \/>\nFROM amazonlinux:2023.2.20231026.0<br \/>\n#\u66f8\u5f0f\uff1a\u3000RUN [\u30b3\u30de\u30f3\u30c9]<br \/>\nRUN yum install -y vsftpd<br \/>\n#\u66f8\u5f0f\uff1a\u3000WORKDIR [\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30b9]<br \/>\nWORKDIR \/usr\/local\/docker<br \/>\n#\u66f8\u5f0f\uff1a\u3000EXPOSE [&#8230;]<br \/>\nEXPOSE 21<br \/>\nEXPOSE 60000-60100<br \/>\n#FTP\u30c6\u30b9\u30c8\u7528\u306e\u30c6\u30ad\u30b9\u30c8<br \/>\nRUN echo &#8220;Hello Amazon Linux2023 vsftpd.&#8221; &gt; \/var\/ftp\/pub\/test.txt<br \/>\n#\u66f8\u5f0f\uff1a\u3000COPY [\u30b3\u30d4\u30fc\u5143][\u30b3\u30d4\u30fc\u5148]<br \/>\nCOPY vsftpd.conf \/etc\/vsftpd\/<br \/>\nCOPY myapp.sh \/usr\/local\/bin\/<br \/>\n#myapp.sh\u306e\u6a29\u9650\u5909\u66f4<br \/>\nRUN chmod 755 \/usr\/local\/bin\/myapp.sh<br \/>\n#\u66f8\u5f0f\uff1a\u3000ENTRYPOINT [&#8220;\u5b9f\u884c\u53ef\u80fd\u306a\u3082\u306e&#8221;, &#8220;\u30d1\u30e9\u30e1\u30fc\u30bf\uff11&#8221;, &#8220;\u30d1\u30e9\u30e1\u30fc\u30bf\uff12&#8221;]<br \/>\nENTRYPOINT [&#8220;\/usr\/local\/bin\/myapp.sh&#8221;]<\/details>\n<h1>\u6784\u5efaDockerfile\u5e76\u5bf9\u5176\u8fdb\u884c\u955c\u50cf\u5316\u3002<\/h1>\n<pre class=\"post-pre\"><code><span class=\"c\">#\u30ab\u30ec\u30f3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u300c\/usr\/local\/docker\u300d\u3001\u305d\u306e\u76f4\u4e0b\u306b\u300cDockerfile\u300d\u3092\u914d\u7f6e<\/span>\r\n<span class=\"c\">#\u30bf\u30b0\u540d\u306f\u300cal2023\/vsftpd\u300d\u3000\u203b\u5f8c\u8ff0\u3059\u308bdocker-compose.yml\u3067\u6307\u5b9a\u3059\u308b\u540d\u79f0<\/span>\r\n<span class=\"nb\">sudo <\/span>docker build <span class=\"nt\">-t<\/span> al2023\/vsftpd <span class=\"nb\">.<\/span>\r\n<\/code><\/pre>\n<details>\u5b9f\u884c\u30ed\u30b0\uff08\u2605\u90e8\u5206\u304c\u5b9f\u884c\u30b3\u30de\u30f3\u30c9\uff09<br \/>\n[+] Building 21.9s (11\/11) FINISHED docker:default<br \/>\n=&gt; [internal] load build definition from Dockerfile 0.0s<br \/>\n=&gt; =&gt; transferring dockerfile: 385B 0.0s<br \/>\n=&gt; [internal] load .dockerignore 0.0s<br \/>\n=&gt; =&gt; transferring context: 2B 0.0s<br \/>\n=&gt; [internal] load metadata for docker.io\/library\/amazonlinux:2023.2.20231026.0 2.1s<br \/>\n=&gt; [1\/6] FROM docker.io\/library\/amazonlinux:2023.2.20231026.0@sha256:6d13678b68a6db66e13f1c738a721e5df41e9911a89c470825 5.2s<br \/>\n=&gt; =&gt; resolve docker.io\/library\/amazonlinux:2023.2.20231026.0@sha256:6d13678b68a6db66e13f1c738a721e5df41e9911a89c470825 0.9s<br \/>\n=&gt; =&gt; sha256:6d13678b68a6db66e13f1c738a721e5df41e9911a89c47082584cc76599b1ce8 547B \/ 547B 0.0s<br \/>\n=&gt; =&gt; sha256:e1066a340e771620fdc12b9b65e19f49b732438cc9e3e5d4c72f3242ecacc24c 529B \/ 529B 0.0s<br \/>\n=&gt; =&gt; sha256:5480a906305fcfcc0b956402f447cf29b9cd2cebd02290a09b05cdb9354c23ed 1.48kB \/ 1.48kB 0.0s<br \/>\n=&gt; =&gt; sha256:a98bc98bb91a9e3ba206b37674c857456e1df8dd9fed29335a0441ffe4ba5869 52.40MB \/ 52.40MB 0.6s<br \/>\n=&gt; =&gt; extracting sha256:a98bc98bb91a9e3ba206b37674c857456e1df8dd9fed29335a0441ffe4ba5869 3.4s<br \/>\n=&gt; [internal] load build context 0.0s<br \/>\n=&gt; =&gt; transferring context: 12.27kB 0.0s<br \/>\n=&gt; [2\/6] RUN yum install -y vsftpd 12.8s<br \/>\n=&gt; [3\/6] RUN echo &#8220;Hello Amazon Linux2023 vsftpd.&#8221; &gt; \/var\/ftp\/pub\/test.txt 0.3s<br \/>\n=&gt; [4\/6] COPY vsftpd.conf \/etc\/vsftpd\/ 0.0s<br \/>\n=&gt; [5\/6] COPY myapp.sh \/usr\/local\/bin\/ 0.1s<br \/>\n=&gt; [6\/6] RUN chmod 755 \/usr\/local\/bin\/myapp.sh 0.3s<br \/>\n=&gt; exporting to image 1.0s<br \/>\n=&gt; =&gt; exporting layers 0.9s<br \/>\n=&gt; =&gt; writing image sha256:3bec3024d1bdadf01f4098c162c56ab6b3403bbbb7a0ddf8caa416825424c557 0.0s<br \/>\n=&gt; =&gt; naming to docker.io\/al2023\/vsftpd<\/details>\n<h1>\u786e\u8ba4al2023\/vsftpd\u955c\u50cf\u7684\u5185\u5bb9<\/h1>\n<pre class=\"post-pre\"><code><span class=\"c\">#\u30bf\u30d6\u540d\u306fDockerfile\u306e\u30d3\u30eb\u30c9\u6642\u306b\u6307\u5b9a\u3057\u305f\u540d\u79f0<\/span>\r\n<span class=\"o\">[<\/span>ec2-user@ip-xxx-xx-xx-xx docker]<span class=\"nv\">$ <\/span>docker inspect al2023\/vsftpd\r\n<\/code><\/pre>\n<details>\u5b9f\u884c\u30ed\u30b0\uff08\u2605\u90e8\u5206\u304c\u5b9f\u884c\u30b3\u30de\u30f3\u30c9\uff09<br \/>\n[ec2-user@ip-xxx-xx-xx-xx docker]$ docker inspect al2023\/vsftpd<br \/>\n[<br \/>\n{<br \/>\n&#8220;Id&#8221;: &#8220;sha256:3bec3024d1bdadf01f4098c162c56ab6b3403bbbb7a0ddf8caa416825424c557&#8221;,<br \/>\n&#8220;RepoTags&#8221;: [<br \/>\n&#8220;al2023\/vsftpd:latest&#8221;<br \/>\n],<br \/>\n&#8220;RepoDigests&#8221;: [],<br \/>\n&#8220;Parent&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Comment&#8221;: &#8220;buildkit.dockerfile.v0&#8221;,<br \/>\n&#8220;Created&#8221;: &#8220;2023-11-04T01:11:16.071521807Z&#8221;,<br \/>\n&#8220;Container&#8221;: &#8220;&#8221;,<br \/>\n&#8220;ContainerConfig&#8221;: {<br \/>\n&#8220;Hostname&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Domainname&#8221;: &#8220;&#8221;,<br \/>\n&#8220;User&#8221;: &#8220;&#8221;,<br \/>\n&#8220;AttachStdin&#8221;: false,<br \/>\n&#8220;AttachStdout&#8221;: false,<br \/>\n&#8220;AttachStderr&#8221;: false,<br \/>\n&#8220;Tty&#8221;: false,<br \/>\n&#8220;OpenStdin&#8221;: false,<br \/>\n&#8220;StdinOnce&#8221;: false,<br \/>\n&#8220;Env&#8221;: null,<br \/>\n&#8220;Cmd&#8221;: null,<br \/>\n&#8220;Image&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Volumes&#8221;: null,<br \/>\n&#8220;WorkingDir&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Entrypoint&#8221;: null,<br \/>\n&#8220;OnBuild&#8221;: null,<br \/>\n&#8220;Labels&#8221;: null<br \/>\n},<br \/>\n&#8220;DockerVersion&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Author&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Config&#8221;: {<br \/>\n&#8220;Hostname&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Domainname&#8221;: &#8220;&#8221;,<br \/>\n&#8220;User&#8221;: &#8220;&#8221;,<br \/>\n&#8220;AttachStdin&#8221;: false,<br \/>\n&#8220;AttachStdout&#8221;: false,<br \/>\n&#8220;AttachStderr&#8221;: false,<br \/>\n&#8220;ExposedPorts&#8221;: {<br \/>\n&#8220;21\/tcp&#8221;: {},<br \/>\n&#8220;60000\/tcp&#8221;: {},<br \/>\n&#8220;60001\/tcp&#8221;: {},<br \/>\n&#8220;60002\/tcp&#8221;: {},<br \/>\n&#8220;60003\/tcp&#8221;: {},<br \/>\n&#8220;60004\/tcp&#8221;: {},<br \/>\n&#8220;60005\/tcp&#8221;: {},<br \/>\n&#8220;60006\/tcp&#8221;: {},<br \/>\n&#8220;60007\/tcp&#8221;: {},<br \/>\n&#8220;60008\/tcp&#8221;: {},<br \/>\n&#8220;60009\/tcp&#8221;: {},<br \/>\n&#8220;60010\/tcp&#8221;: {},<br \/>\n&#8220;60011\/tcp&#8221;: {},<br \/>\n&#8220;60012\/tcp&#8221;: {},<br \/>\n&#8220;60013\/tcp&#8221;: {},<br \/>\n&#8220;60014\/tcp&#8221;: {},<br \/>\n&#8220;60015\/tcp&#8221;: {},<br \/>\n&#8220;60016\/tcp&#8221;: {},<br \/>\n&#8220;60017\/tcp&#8221;: {},<br \/>\n&#8220;60018\/tcp&#8221;: {},<br \/>\n&#8220;60019\/tcp&#8221;: {},<br \/>\n&#8220;60020\/tcp&#8221;: {},<br \/>\n&#8220;60021\/tcp&#8221;: {},<br \/>\n&#8220;60022\/tcp&#8221;: {},<br \/>\n&#8220;60023\/tcp&#8221;: {},<br \/>\n&#8220;60024\/tcp&#8221;: {},<br \/>\n&#8220;60025\/tcp&#8221;: {},<br \/>\n&#8220;60026\/tcp&#8221;: {},<br \/>\n&#8220;60027\/tcp&#8221;: {},<br \/>\n&#8220;60028\/tcp&#8221;: {},<br \/>\n&#8220;60029\/tcp&#8221;: {},<br \/>\n&#8220;60030\/tcp&#8221;: {},<br \/>\n&#8220;60031\/tcp&#8221;: {},<br \/>\n&#8220;60032\/tcp&#8221;: {},<br \/>\n&#8220;60033\/tcp&#8221;: {},<br \/>\n&#8220;60034\/tcp&#8221;: {},<br \/>\n&#8220;60035\/tcp&#8221;: {},<br \/>\n&#8220;60036\/tcp&#8221;: {},<br \/>\n&#8220;60037\/tcp&#8221;: {},<br \/>\n&#8220;60038\/tcp&#8221;: {},<br \/>\n&#8220;60039\/tcp&#8221;: {},<br \/>\n&#8220;60040\/tcp&#8221;: {},<br \/>\n&#8220;60041\/tcp&#8221;: {},<br \/>\n&#8220;60042\/tcp&#8221;: {},<br \/>\n&#8220;60043\/tcp&#8221;: {},<br \/>\n&#8220;60044\/tcp&#8221;: {},<br \/>\n&#8220;60045\/tcp&#8221;: {},<br \/>\n&#8220;60046\/tcp&#8221;: {},<br \/>\n&#8220;60047\/tcp&#8221;: {},<br \/>\n&#8220;60048\/tcp&#8221;: {},<br \/>\n&#8220;60049\/tcp&#8221;: {},<br \/>\n&#8220;60050\/tcp&#8221;: {},<br \/>\n&#8220;60051\/tcp&#8221;: {},<br \/>\n&#8220;60052\/tcp&#8221;: {},<br \/>\n&#8220;60053\/tcp&#8221;: {},<br \/>\n&#8220;60054\/tcp&#8221;: {},<br \/>\n&#8220;60055\/tcp&#8221;: {},<br \/>\n&#8220;60056\/tcp&#8221;: {},<br \/>\n&#8220;60057\/tcp&#8221;: {},<br \/>\n&#8220;60058\/tcp&#8221;: {},<br \/>\n&#8220;60059\/tcp&#8221;: {},<br \/>\n&#8220;60060\/tcp&#8221;: {},<br \/>\n&#8220;60061\/tcp&#8221;: {},<br \/>\n&#8220;60062\/tcp&#8221;: {},<br \/>\n&#8220;60063\/tcp&#8221;: {},<br \/>\n&#8220;60064\/tcp&#8221;: {},<br \/>\n&#8220;60065\/tcp&#8221;: {},<br \/>\n&#8220;60066\/tcp&#8221;: {},<br \/>\n&#8220;60067\/tcp&#8221;: {},<br \/>\n&#8220;60068\/tcp&#8221;: {},<br \/>\n&#8220;60069\/tcp&#8221;: {},<br \/>\n&#8220;60070\/tcp&#8221;: {},<br \/>\n&#8220;60071\/tcp&#8221;: {},<br \/>\n&#8220;60072\/tcp&#8221;: {},<br \/>\n&#8220;60073\/tcp&#8221;: {},<br \/>\n&#8220;60074\/tcp&#8221;: {},<br \/>\n&#8220;60075\/tcp&#8221;: {},<br \/>\n&#8220;60076\/tcp&#8221;: {},<br \/>\n&#8220;60077\/tcp&#8221;: {},<br \/>\n&#8220;60078\/tcp&#8221;: {},<br \/>\n&#8220;60079\/tcp&#8221;: {},<br \/>\n&#8220;60080\/tcp&#8221;: {},<br \/>\n&#8220;60081\/tcp&#8221;: {},<br \/>\n&#8220;60082\/tcp&#8221;: {},<br \/>\n&#8220;60083\/tcp&#8221;: {},<br \/>\n&#8220;60084\/tcp&#8221;: {},<br \/>\n&#8220;60085\/tcp&#8221;: {},<br \/>\n&#8220;60086\/tcp&#8221;: {},<br \/>\n&#8220;60087\/tcp&#8221;: {},<br \/>\n&#8220;60088\/tcp&#8221;: {},<br \/>\n&#8220;60089\/tcp&#8221;: {},<br \/>\n&#8220;60090\/tcp&#8221;: {},<br \/>\n&#8220;60091\/tcp&#8221;: {},<br \/>\n&#8220;60092\/tcp&#8221;: {},<br \/>\n&#8220;60093\/tcp&#8221;: {},<br \/>\n&#8220;60094\/tcp&#8221;: {},<br \/>\n&#8220;60095\/tcp&#8221;: {},<br \/>\n&#8220;60096\/tcp&#8221;: {},<br \/>\n&#8220;60097\/tcp&#8221;: {},<br \/>\n&#8220;60098\/tcp&#8221;: {},<br \/>\n&#8220;60099\/tcp&#8221;: {},<br \/>\n&#8220;60100\/tcp&#8221;: {}<br \/>\n},<br \/>\n&#8220;Tty&#8221;: false,<br \/>\n&#8220;OpenStdin&#8221;: false,<br \/>\n&#8220;StdinOnce&#8221;: false,<br \/>\n&#8220;Env&#8221;: [<br \/>\n&#8220;PATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin&#8221;<br \/>\n],<br \/>\n&#8220;Cmd&#8221;: null,<br \/>\n&#8220;Image&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Volumes&#8221;: null,<br \/>\n&#8220;WorkingDir&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Entrypoint&#8221;: [<br \/>\n&#8220;\/usr\/local\/bin\/myapp.sh&#8221;<br \/>\n],<br \/>\n&#8220;OnBuild&#8221;: null,<br \/>\n&#8220;Labels&#8221;: null<br \/>\n},<br \/>\n&#8220;Architecture&#8221;: &#8220;amd64&#8221;,<br \/>\n&#8220;Os&#8221;: &#8220;linux&#8221;,<br \/>\n&#8220;Size&#8221;: 251598116,<br \/>\n&#8220;VirtualSize&#8221;: 251598116,<br \/>\n&#8220;GraphDriver&#8221;: {<br \/>\n&#8220;Data&#8221;: {<br \/>\n&#8220;LowerDir&#8221;: &#8220;\/var\/lib\/docker\/overlay2\/eswk8dr035tjndxu403dt0sq3\/diff:\/var\/lib\/docker\/overlay2\/s2g2bsphvcr1n3vxl3bo5rtz0\/diff:\/var\/lib\/docker\/overlay2\/q1cca91kj9ktkx4zeha2exlan\/diff:\/var\/lib\/docker\/overlay2\/uoy5wlul5wckt4ve0ri05y1am\/diff:\/var\/lib\/docker\/overlay2\/95670f3fb328cac58f738837cbda8f42ac6cc24f88f81afa54c9dc0056dcb432\/diff&#8221;,<br \/>\n&#8220;MergedDir&#8221;: &#8220;\/var\/lib\/docker\/overlay2\/ood8wx8geq0onadvf4az5x89p\/merged&#8221;,<br \/>\n&#8220;UpperDir&#8221;: &#8220;\/var\/lib\/docker\/overlay2\/ood8wx8geq0onadvf4az5x89p\/diff&#8221;,<br \/>\n&#8220;WorkDir&#8221;: &#8220;\/var\/lib\/docker\/overlay2\/ood8wx8geq0onadvf4az5x89p\/work&#8221;<br \/>\n},<br \/>\n&#8220;Name&#8221;: &#8220;overlay2&#8221;<br \/>\n},<br \/>\n&#8220;RootFS&#8221;: {<br \/>\n&#8220;Type&#8221;: &#8220;layers&#8221;,<br \/>\n&#8220;Layers&#8221;: [<br \/>\n&#8220;sha256:405c9a3fe367001cbf2b464d42eceaaef6cc83b044174752da8492ad551d2334&#8221;,<br \/>\n&#8220;sha256:f6260b6f70e7c90ad088d8d02090b7f33de98dd45729ad6e2ea51bd410d78d39&#8221;,<br \/>\n&#8220;sha256:63f404887ab65dee14d90f6a7165621c5166318ca1df25e361c7d1cb966343c6&#8221;,<br \/>\n&#8220;sha256:ed066320f2957fd10ff961f56108ab9b828b584e92fb331e70ed0cd34f194677&#8221;,<br \/>\n&#8220;sha256:0646670f3b2e67fce767aba32303bd582a0086ccef60de2fbcbf33dc8600072e&#8221;,<br \/>\n&#8220;sha256:c51fd6bae3dce587a51122573114c1d3267fcb95d26ac7367fbf5cbda577c6c7&#8221;<br \/>\n]<br \/>\n},<br \/>\n&#8220;Metadata&#8221;: {<br \/>\n&#8220;LastTagTime&#8221;: &#8220;2023-11-04T01:11:17.038371583Z&#8221;<br \/>\n}<br \/>\n}<br \/>\n]<\/details>\n<h1>\u8fd0\u884cDocker\u5bb9\u5668<\/h1>\n<pre class=\"post-pre\"><code>docker-compose up <span class=\"nt\">-d<\/span>\r\n<\/code><\/pre>\n<details>\u5b9f\u884c\u30ed\u30b0\uff08\u2605\u90e8\u5206\u304c\u5b9f\u884c\u30b3\u30de\u30f3\u30c9\uff09<br \/>\n#docker-compose.yml\u304c\u3042\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5<br \/>\n#\u300cusr\/local\/docker\/container01\u300d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u300cdocker-compose.yml\u300d\u304c\u914d\u7f6e\u3055\u308c\u3066\u3044\u308b\u4e8b\u3092\u78ba\u8a8d<br \/>\n[ec2-user@ip-xxx-xx-xx-xx docker]$ cd container01\/<br \/>\n[ec2-user@ip-xxx-xx-xx-xx container01]$ ls -la<br \/>\ntotal 4<br \/>\ndrwxr-xr-x. 2 root root 32 Nov 4 01:10 .<br \/>\ndrwxr-xr-x. 3 root root 78 Nov 4 00:53 ..<br \/>\n-rw-r&#8211;r&#8211;. 1 root root 139 Nov 4 01:10 docker-compose.yml<br \/>\n#Docoker\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5<br \/>\n[ec2-user@ip-xxx-xx-xx-xx container01]$ docker-compose up -d<br \/>\n[+] Building 0.0s (0\/0) docker:default<br \/>\n[+] Running 2\/1<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s[+] Running 2\/2<br \/>\n? Network container01_default Created 0.1s<br \/>\n? Container container01-ftp-1 Started<\/details>\n<h1>\u67e5\u770bDocker\u8fdb\u7a0b<\/h1>\n<pre class=\"post-pre\"><code><span class=\"o\">[<\/span>ec2-user@ip-xxx-xx-xx-xx container01]<span class=\"nv\">$ <\/span>docker ps\r\nCONTAINER ID   IMAGE           COMMAND                  CREATED         STATUS         PORTS                                                                                                      NAMES\r\n045bf39f84bc   al2023\/vsftpd   <span class=\"s2\">\"\/usr\/local\/bin\/myap\u2026\"<\/span>   2 minutes ago   Up 2 minutes   0.0.0.0:21-&gt;21\/tcp, :::21-&gt;21\/tcp, 0.0.0.0:60000-60100-&gt;60000-60100\/tcp, :::60000-60100-&gt;60000-60100\/tcp   container01-ftp-1\r\n<\/code><\/pre>\n<h1>\u521b\u5efa\u4e00\u4e2a\u540d\u4e3a&#8221;ftp-user&#8221;\u7684\u65b0\u7528\u6237\u3002<\/h1>\n<pre class=\"post-pre\"><code><span class=\"c\">#\u300cftp-user\u300d\u3092\u8ffd\u52a0<\/span>\r\n<span class=\"o\">[<\/span>ec2-user@ip-xxx-xx-xx-xx container01]<span class=\"nv\">$ <\/span><span class=\"nb\">sudo <\/span>adduser <span class=\"nt\">--home<\/span> \/home\/ftp-user ftp-user\u3000\u2605\r\n<span class=\"c\">#\u300cftp-user\u300d\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u8a2d\u5b9a<\/span>\r\n<span class=\"o\">[<\/span>ec2-user@ip-xxx-xx-xx-xx container01]<span class=\"nv\">$ <\/span><span class=\"nb\">sudo <\/span>passwd ftp-user\u3000\u2605\r\nChanging password <span class=\"k\">for <\/span>user ftp-user.\r\nNew password:                                                 \u2605\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\r\nBAD PASSWORD: The password is shorter than 8 characters\r\nRetype new password:\r\npasswd: all authentication tokens updated successfully.\r\n<\/code><\/pre>\n<h1>\u6dfb\u52a0\u5df2\u5728\u300c\/etc\/vsftpd\/user_list\u300d\u4e2d\u521b\u5efa\u7684\u7528\u6237\u300cftp-user\u300d\u3002<\/h1>\n<pre class=\"post-pre\"><code><span class=\"o\">[<\/span>ec2-user@ip-xxx-xx-xx-xx container01]<span class=\"nv\">$ <\/span><span class=\"nb\">cat<\/span> \/etc\/vsftpd\/user_list\u3000\u2605\r\nftp-user\r\n<span class=\"c\"># \u300c\/home\/ftp-user\u300d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u6a29\u9650\u3092\u78ba\u8a8d<\/span>\r\n<span class=\"o\">[<\/span>ec2-user@ip-xxx-xx-xx-xx container01]<span class=\"nv\">$ <\/span><span class=\"nb\">ls<\/span> <span class=\"nt\">-la<\/span> \/home\/\u3000\u2605\r\ntotal 0\r\ndrwxr-xr-x.  4 root     root      38 Nov  4 05:35 <span class=\"nb\">.<\/span>\r\ndr-xr-xr-x. 18 root     root     237 Nov  1 22:43 ..\r\ndrwx------.  5 ec2-user ec2-user 140 Nov  4 05:28 ec2-user\r\ndrwx------.  2 ftp-user ftp-user  62 Nov  4 05:35 ftp-user\r\n<\/code><\/pre>\n<h1>\u67e5\u770bDockerfile\u7684\u6784\u5efa\u7ed3\u679c<\/h1>\n<pre class=\"post-pre\"><code><span class=\"c\">#\u30b3\u30f3\u30c6\u30ca\u540d\uff1aftp\uff08docker-compose.yml\u306b\u8a18\u8ff0\uff09\u3092\u6307\u5b9a\u3057\u3001bash\u3067\u30b3\u30f3\u30c6\u30ca\u5185\u306b\u5165\u308b<\/span>\r\ndocker-compose <span class=\"nb\">exec <\/span>ftp bash\u3000\u2605\r\n<span class=\"c\">#Dockerfile\u3067\u8a18\u8ff0\u3057\u305fCOPY\u30b3\u30de\u30f3\u30c9\u3067\u30d5\u30a1\u30a4\u30eb\u304c\u30b3\u30d4\u30fc\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\uff08\u4f8b\uff1amyapp.sh\uff09<\/span>\r\n<span class=\"nb\">ls<\/span> <span class=\"nt\">-la<\/span> \/usr\/local\/bin\/\u3000\u2605\r\n<\/code><\/pre>\n<details>\u8fd0\u884c\u65e5\u5fd7\uff08\u2605\u90e8\u5206\u662f\u6267\u884c\u547d\u4ee4\uff09<br \/>\n[ec2-user@ip-xxx-xx-xx-xx container01]$ docker-compose exec ftp bash\u3000\u2605<br \/>\nbash-5.2# pwd<br \/>\n\/usr\/local\/docker<br \/>\nbash-5.2# ls -la \/usr\/local\/bin\/\u3000\u2605<br \/>\n\u603b\u7528\u91cf 4<br \/>\ndrwxr-xr-x. 1 root root 22 Nov 5 06:38 .<br \/>\ndrwxr-xr-x. 1 root root 17 Nov 5 06:38 ..<br \/>\n-rwxr-xr-x. 1 root root 75 Nov 4 00:22 myapp.sh<\/details>\n<h1>\u53ef\u4ee5\u4f7f\u7528TeraTerm5\uff0c\u901a\u8fc7FTP\u8fde\u63a5\u548c\u88ab\u52a8\u6a21\u5f0f\u8fdb\u884c\u6570\u636e\u901a\u4fe1\u7684\u786e\u8ba4\u3002<\/h1>\n<pre class=\"post-pre\"><code>ftp&gt;open <span class=\"o\">[<\/span>FTP\u30b5\u30fc\u30d0\u306eElasticIP]\r\nName <span class=\"o\">([<\/span>FTP\u30b5\u30fc\u30d0\u306eElasticIP]<span class=\"o\">)<\/span>: ftp-user\r\nPassword:\r\n<\/code><\/pre>\n<details>\u5b9e\u65bd\u65e5\u5fd7\uff08\u2605\u90e8\u5206\u662f\u6267\u884c\u547d\u4ee4\uff09<br \/>\n# &#8220;xx.xxx.xxx.xxx&#8221;\u90e8\u5206\u662fFTP\u670d\u52a1\u5668\u7684\u5f39\u6027IP<br \/>\nftp&gt; \u6253\u5f00 xx.xxx.xxx.xxx<br \/>\n\u5df2\u8fde\u63a5\u5230 xx.xxx.xxx.xxx (xx.xxx.xxx.xxx).<br \/>\n220 \u6b22\u8fce\u4f7f\u7528 blah FTP \u670d\u52a1\u3002<br \/>\n\u7528\u6237\u540d (xx.xxx.xxx.xxx:ec2-user): ftp-user \u2605 \u8f93\u5165&#8221;ftp-user&#8221;<br \/>\n331 \u8bf7\u8f93\u5165\u5bc6\u7801\u3002<br \/>\n\u5bc6\u7801\uff1a\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000 \u2605 \u8f93\u5165\u5bc6\u7801<br \/>\n230 \u767b\u5f55\u6210\u529f\u3002<br \/>\n\u8fdc\u7a0b\u7cfb\u7edf\u7c7b\u578b\u4e3a UNIX\u3002<br \/>\n\u4f7f\u7528\u4e8c\u8fdb\u5236\u6a21\u5f0f\u4f20\u8f93\u6587\u4ef6\u3002<br \/>\nftp&gt; pwd<br \/>\n257 &#8220;\/home\/ftp-user&#8221; \u662f\u5f53\u524d\u76ee\u5f55\u3002<\/details>\n<h1>\u8bf7\u5728\u5ba2\u6237\u7aef\u786e\u8ba4\u8981\u83b7\u53d6\u7684\u76ee\u5f55\u4e2d\u4e0d\u5b58\u5728\u6587\u4ef6\u3002<\/h1>\n<pre class=\"post-pre\"><code><span class=\"c\">#FTP client<\/span>\r\n<span class=\"c\">#\u300c\/usr\/local\/ftp_sample\u300d\u306b\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u306f\u5b58\u5728\u3057\u306a\u3044\u4e8b\u3092\u78ba\u8a8d<\/span>\r\n<span class=\"o\">[<\/span>ec2-user@ip-xxx-xx-xx-xxx ftp_sample]<span class=\"nv\">$ <\/span><span class=\"nb\">pwd<\/span>\r\n\/usr\/local\/ftp_sample\r\n<span class=\"o\">[<\/span>ec2-user@ip-xxx-xx-xx-xxx ftp_sample]<span class=\"nv\">$ <\/span><span class=\"nb\">ls<\/span> <span class=\"nt\">-l<\/span>\r\ntotal 0\r\n<\/code><\/pre>\n<h1>\u67e5\u770b\uff08\u83b7\u53d6\u76ee\u6807\uff09\u5728FTP\u670d\u52a1\u5668\u4e0a\u8bbe\u7f6e\u7684\u6587\u4ef6<\/h1>\n<pre class=\"post-pre\"><code><span class=\"c\">#FTP server<\/span>\r\n<span class=\"c\">#\u300c\/usr\/local\/ftp_sample\/ftp_server_sample.txt\u300d\u3092\u78ba\u8a8d<\/span>\r\n<span class=\"o\">[<\/span>ec2-user@ip-xxx-xx-xx-xxx ~]<span class=\"nv\">$ <\/span><span class=\"nb\">cd<\/span> \/usr\/local\/ftp_sample\/\r\n<span class=\"o\">[<\/span>ec2-user@ip-xxx-xx-xx-xxx ftp_sample]<span class=\"nv\">$ <\/span><span class=\"nb\">ls<\/span> <span class=\"nt\">-l<\/span>\r\ntotal 4\r\n<span class=\"nt\">-rwxrwxrwx<\/span><span class=\"nb\">.<\/span> 1 ftp-user ftp-user 33 Oct 21 13:52 ftp_server_sample.txt\u3000\u2605get\u3059\u308b\u30d5\u30a1\u30a4\u30eb\r\n<\/code><\/pre>\n<h1>\u5728\u5ba2\u6237\u7aef\u8fde\u63a5\u5230FTP\u670d\u52a1\u5668\uff0c\u5e76\u4f7f\u7528get\u547d\u4ee4\u83b7\u53d6\u6587\u4ef6\u3002<\/h1>\n<pre class=\"post-pre\"><code><span class=\"c\">#FTP client<\/span>\r\n<span class=\"o\">[<\/span>ec2-user@ip-xxx-xx-xx-xxx ftp_sample]<span class=\"nv\">$ <\/span>ftp\r\n\r\n<span class=\"c\">#FTP client -&gt; FTP server\u306b\u63a5\u7d9a<\/span>\r\nftp&gt; open xx.xxx.xxx.xxx\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u2605ftp\u3067FTP server\u306b\u63a5\u7d9a\r\nConnected to xx.xxx.xxx.xxx <span class=\"o\">(<\/span>xx.xxx.xxx.xxx<span class=\"o\">)<\/span><span class=\"nb\">.<\/span>\r\n220 Welcome to blah FTP service.\r\nName <span class=\"o\">(<\/span>xx.xxx.xxx.xxx:ec2-user<span class=\"o\">)<\/span>: ftp-user\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u2605ftp\u306b\u63a5\u7d9a\u3059\u308b\u30e6\u30fc\u30b6\u3092\u5165\u529b\r\n331 Please specify the password.\r\nPassword:\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u2605ftp\u306b\u63a5\u7d9a\u3059\u308b\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\r\n230 Login successful.\r\nRemote system <span class=\"nb\">type <\/span>is UNIX.\r\nUsing binary mode to transfer files.\r\nftp&gt; <span class=\"nb\">cd<\/span> \/usr\/local\/ftp_sample\/\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u2605\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u300cusr\/local\/ftp_sample\u300d\u306b\u79fb\u52d5\uff08FTP\u30b5\u30fc\u30d0\u4e0a\uff09\r\n250 Directory successfully changed.\r\nftp&gt; <span class=\"nb\">ls<\/span>\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u2605\u300cusr\/local\/ftp_sample\u300d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u914d\u4e0b\u3092\u78ba\u8a8d\uff08FTP\u30b5\u30fc\u30d0\u4e0a\uff09\r\n227 Entering Passive Mode <span class=\"o\">(<\/span>xx,xxx,xxx,xxx,234,103<span class=\"o\">)<\/span><span class=\"nb\">.<\/span>\r\n150 Here comes the directory listing.\r\n<span class=\"nt\">-rwxrwxrwx<\/span>    1 1001     1001           33 Oct 21 13:52 ftp_server_sample.txt\u3000\u2605\u300cftp_server_sample.txt\u300d\u304c\u5b58\u5728\u3057\u3066\u3044\u308b\u4e8b\u3092\u78ba\u8a8d\uff08FTP\u30b5\u30fc\u30d0\u4e0a\uff09\r\n226 Directory send OK.\r\nftp&gt; get ftp_server_sample.txt\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u2605get\u30b3\u30de\u30f3\u30c9\u3067\u300cftp_server_sample.txt\u300d\u3092\u53d6\u5f97\r\n<span class=\"nb\">local<\/span>: ftp_server_sample.txt remote: ftp_server_sample.txt\r\n227 Entering Passive Mode <span class=\"o\">(<\/span>xx,xxx,xxx,xxx,234,104<span class=\"o\">)<\/span><span class=\"nb\">.<\/span>\r\n150 Opening BINARY mode data connection <span class=\"k\">for <\/span>ftp_server_sample.txt <span class=\"o\">(<\/span>33 bytes<span class=\"o\">)<\/span><span class=\"nb\">.<\/span>\r\n226 Transfer complete.\r\n33 bytes received <span class=\"k\">in <\/span>4e-05 secs <span class=\"o\">(<\/span>825.00 Kbytes\/sec<span class=\"o\">)<\/span>\r\n<\/code><\/pre>\n<h1>\u8bf7\u786e\u8ba4\u5728\u5ba2\u6237\u7aef\u4e0a\u662f\u5426\u5b58\u5728&#8221;\/usr\/local\/ftp_sample&#8221;\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\u3002<\/h1>\n<pre class=\"post-pre\"><code><span class=\"c\">#FTP client<\/span>\r\n<span class=\"c\">#\u300cxxx-xx-xx-xxx\u300d\u90e8\u5206\u306fFTP client\u5074\u306eIP\u30a2\u30c9\u30ec\u30b9<\/span>\r\n<span class=\"o\">[<\/span>ec2-user@ip-xxx-xx-xx-xxx ftp_sample]<span class=\"nv\">$ <\/span><span class=\"nb\">pwd<\/span>\r\n\/usr\/local\/ftp_sample\r\n<span class=\"o\">[<\/span>ec2-user@ip-xxx-xx-xx-xxx ftp_sample]<span class=\"nv\">$ <\/span>ll\r\ntotal 4\r\n<span class=\"nt\">-rw-r--r--<\/span><span class=\"nb\">.<\/span> 1 ec2-user ec2-user 33 Oct 23 11:51 ftp_server_sample.txt\u3000\u2605\u300cftp_server_sample.txt\u300d\u304c\u5b58\u5728\r\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u7684\u662f\u4ec0\u4e48\uff1f \u672c\u6587\u4e2d\u8bb0\u5f55\u4e86\u5728AWS\u73af\u5883\u4e2d\u521b\u5efa\u4e86\u4e00\u4e2aFTP\u670d\u52a1\u5668\uff08\u5728Docker\u5bb9\u5668\u4e2d\u5b89\u88c5vsftpd\uff09\uff0c\u5e76\u5b9e\u9645\u6267 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-35262","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u4f7f\u7528AWS\uff08Amazon Linux2023\uff09\u5728docker\u4e0a\u6784\u5efavsftpd - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528aws\uff08amazon-linux2023\uff09\u5728docker\u4e0a\u6784\u5efavsftpd\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4f7f\u7528AWS\uff08Amazon Linux2023\uff09\u5728docker\u4e0a\u6784\u5efavsftpd\" \/>\n<meta property=\"og:description\" content=\"\u7684\u662f\u4ec0\u4e48\uff1f \u672c\u6587\u4e2d\u8bb0\u5f55\u4e86\u5728AWS\u73af\u5883\u4e2d\u521b\u5efa\u4e86\u4e00\u4e2aFTP\u670d\u52a1\u5668\uff08\u5728Docker\u5bb9\u5668\u4e2d\u5b89\u88c5vsftpd\uff09\uff0c\u5e76\u5b9e\u9645\u6267 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528aws\uff08amazon-linux2023\uff09\u5728docker\u4e0a\u6784\u5efavsftpd\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-03T13:01:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-04T07:29:10+00:00\" \/>\n<meta name=\"author\" content=\"\u79d1, \u9896\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u79d1, \u9896\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8aws%ef%bc%88amazon-linux2023%ef%bc%89%e5%9c%a8docker%e4%b8%8a%e6%9e%84%e5%bb%bavsftpd%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8aws%ef%bc%88amazon-linux2023%ef%bc%89%e5%9c%a8docker%e4%b8%8a%e6%9e%84%e5%bb%bavsftpd%e3%80%82\/\",\"name\":\"\u4f7f\u7528AWS\uff08Amazon Linux2023\uff09\u5728docker\u4e0a\u6784\u5efavsftpd - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2024-03-03T13:01:41+00:00\",\"dateModified\":\"2024-05-04T07:29:10+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/8ca01ba7f7362ad4edb7da206a12f29e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8aws%ef%bc%88amazon-linux2023%ef%bc%89%e5%9c%a8docker%e4%b8%8a%e6%9e%84%e5%bb%bavsftpd%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8aws%ef%bc%88amazon-linux2023%ef%bc%89%e5%9c%a8docker%e4%b8%8a%e6%9e%84%e5%bb%bavsftpd%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8aws%ef%bc%88amazon-linux2023%ef%bc%89%e5%9c%a8docker%e4%b8%8a%e6%9e%84%e5%bb%bavsftpd%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4f7f\u7528AWS\uff08Amazon Linux2023\uff09\u5728docker\u4e0a\u6784\u5efavsftpd\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/8ca01ba7f7362ad4edb7da206a12f29e\",\"name\":\"\u79d1, \u9896\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g\",\"caption\":\"\u79d1, \u9896\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keying\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8aws%ef%bc%88amazon-linux2023%ef%bc%89%e5%9c%a8docker%e4%b8%8a%e6%9e%84%e5%bb%bavsftpd%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u4f7f\u7528AWS\uff08Amazon Linux2023\uff09\u5728docker\u4e0a\u6784\u5efavsftpd - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528aws\uff08amazon-linux2023\uff09\u5728docker\u4e0a\u6784\u5efavsftpd\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u4f7f\u7528AWS\uff08Amazon Linux2023\uff09\u5728docker\u4e0a\u6784\u5efavsftpd","og_description":"\u7684\u662f\u4ec0\u4e48\uff1f \u672c\u6587\u4e2d\u8bb0\u5f55\u4e86\u5728AWS\u73af\u5883\u4e2d\u521b\u5efa\u4e86\u4e00\u4e2aFTP\u670d\u52a1\u5668\uff08\u5728Docker\u5bb9\u5668\u4e2d\u5b89\u88c5vsftpd\uff09\uff0c\u5e76\u5b9e\u9645\u6267 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528aws\uff08amazon-linux2023\uff09\u5728docker\u4e0a\u6784\u5efavsftpd\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2024-03-03T13:01:41+00:00","article_modified_time":"2024-05-04T07:29:10+00:00","author":"\u79d1, \u9896","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u79d1, \u9896","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"12 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8aws%ef%bc%88amazon-linux2023%ef%bc%89%e5%9c%a8docker%e4%b8%8a%e6%9e%84%e5%bb%bavsftpd%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8aws%ef%bc%88amazon-linux2023%ef%bc%89%e5%9c%a8docker%e4%b8%8a%e6%9e%84%e5%bb%bavsftpd%e3%80%82\/","name":"\u4f7f\u7528AWS\uff08Amazon Linux2023\uff09\u5728docker\u4e0a\u6784\u5efavsftpd - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2024-03-03T13:01:41+00:00","dateModified":"2024-05-04T07:29:10+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/8ca01ba7f7362ad4edb7da206a12f29e"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8aws%ef%bc%88amazon-linux2023%ef%bc%89%e5%9c%a8docker%e4%b8%8a%e6%9e%84%e5%bb%bavsftpd%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8aws%ef%bc%88amazon-linux2023%ef%bc%89%e5%9c%a8docker%e4%b8%8a%e6%9e%84%e5%bb%bavsftpd%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8aws%ef%bc%88amazon-linux2023%ef%bc%89%e5%9c%a8docker%e4%b8%8a%e6%9e%84%e5%bb%bavsftpd%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u4f7f\u7528AWS\uff08Amazon Linux2023\uff09\u5728docker\u4e0a\u6784\u5efavsftpd"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/8ca01ba7f7362ad4edb7da206a12f29e","name":"\u79d1, \u9896","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g","caption":"\u79d1, \u9896"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keying\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8aws%ef%bc%88amazon-linux2023%ef%bc%89%e5%9c%a8docker%e4%b8%8a%e6%9e%84%e5%bb%bavsftpd%e3%80%82\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/35262","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=35262"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/35262\/revisions"}],"predecessor-version":[{"id":99146,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/35262\/revisions\/99146"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=35262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=35262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=35262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}