Having PowerShell in BlackArch container

3 minute read

With my previous blog posts about installing PowerShell on the following Linux distros:

I will be demonstrating on how you can install PowerShell 6 in BlackArch Linux that is based on Arch Linux (Arch GNU/Linux) distro container today.

Like my previous blog post, I will not be providing a break down of the steps in the Dockerfile with explainations except including comments in the Dockerfile to indicate what it is doing.

PowerShell for BlackArch container

In this section, I will provide a Dockerfile text document file that contains all the commands to build a BlackArch Linux container and install PowerShell to the BlackArch Linux distro when you use DockerCLI docker build command.

Note:

Since BlackArch Linux derives from Arch Linux, I will have to build the BlackArch container using the Arch Linux container image.

Although at the time of this blog post, Arch Linux Wiki - Docker Images states that we should be using docker pull archlinux/base for Arch Linux container image. I have chosen to use docker pull base/archlinux from the base/archlinux in Docker Hub because it is more up to date and maintained by a community in GitHub - ArchImg/ArchLinux.


Top


Creating the Dockerfile

Let us create a new Dockerfile text document file to begin with. Next, copy the code below and paste it into that Dockerfile text document file. Remember to save the Dockerfile file and exit from your editor.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# Pull Arch Linux container image
FROM base/archlinux:latest AS build

# Define Args and Env needed to create links
ENV PS_INSTALL_FOLDER=/opt/microsoft/powershell/6 \
    # Define ENVs for Localization/Globalization
    DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false \
    LC_ALL=en_US.UTF-8 \
    LANG=en_US.UTF-8

# Download BlackArch Linux strap shell script
ADD https://blackarch.org/strap.sh \
    /tmp/strap.sh

# Download the PowerShell binary package
ADD https://github.com/PowerShell/PowerShell/releases/download/v6.1.0/powershell-6.1.0-linux-x64.tar.gz \
    /tmp/powershell-linux.tar.gz

# Installation and configuration
RUN \
    # Enable en_US.UTF-8 locale
    echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
    # Generate locale
    && locale-gen \
    # Set execute permission on BlackArch strap shell script
    && chmod +x /tmp/strap.sh \
    # Run BlackArch strap shell script
    && /tmp/strap.sh \
    # Remove BlackArch strap shell script
    && rm -f /tmp/strap.sh \
    # Update package database
    && pacman -Syy \
    # Install dependencies
    && pacman -S --noconfirm \
      # Required package for International Components for Unicode
      core/icu \
      # Required package for SSL
      openssl-1.0 \
    # Create powershell folder
    && mkdir -p ${PS_INSTALL_FOLDER} \
    # Uncompress powershell linux tar file
    && tar zxf /tmp/powershell-linux.tar.gz -C ${PS_INSTALL_FOLDER} \
    # Remove powershell linux tar file
    && rm -f /tmp/powershell-linux.tar.gz \
    # Create the pwsh symbolic link that points to powershell
    && ln -s ${PS_INSTALL_FOLDER}/pwsh /usr/bin/pwsh \
    # Upgrade distro
    && pacman -Syyu --noconfirm \
    # Clean downloaded packages
    && yes | pacman -Scc

# Configure entrypoint for the container
ENTRYPOINT ["pwsh", "-c"]

# Configure PowerShell as default shell for the container
CMD ["pwsh"]

Top


Building from the Dockerfile

Now, you will have to use the DockerCLI docker build command to build the BlackArch Linux container from the instructions in the Dockerfile text document file.

1
2
3
4
5
# Change to your working directory
cd \The\directory\where\your\Dockerfile\is\saved

# Build the container with the Dockerfile
docker build -t blackarch .

Top


Conclusion

Once the container build has completed, you can use the DockerCLI docker run command to run the container and look at PowerShell instead of Bash.

1
docker run --rm --interactive blackarch

And if you need to go back into Bash from the pwsh in the container, type bin/bash to switch into Bash.

But if you requires to run the container in bash, you can do it on the same container with the command below.

1
docker run --rm --interactive --tty blackarch bin/bash

And if you need to go back into PowerShell from the bash in the container, type pwsh to switch into PowerShell.

That is it on how to get PowerShell Core 6 in this distro for BlackArch or SecOps folks.

If you find that this information useful, feel free to bookmark this or share it with your colleagues and friends.


Top


References


Top



Top